News, Information and reports for the Flash Forward Conference.


Sunday, July 14, 2002

FlashForward Pictures

A couple of people have posted pictures from FlashForward:

If you post some pictures, let me know, and I will list them here.

11:50:22 PM    comment []  Google It!  


Saturday, July 13, 2002

FlashForward Slides Online

Here are all of the FlashForward slides that I have found posted online:

If you know of some more slides online, post them in the comments.

11:46:16 PM    comment []  Google It!  

FlashForward Slides : Flash Remoting with Flash MX and ColdFusion MX

Christian Cantrell has posted his slides from his FlashForward session titled Flash Remoting with Flash MX and ColdFusion MX. If you are interested in getting started with Flash Remoting with ColdFusion or ServerSide ActionScript, this is a great resource, complete with both ActionScript and server side code samples.

You can view the slides here.

You can view a growing list of online FlashForward slide here.

11:36:49 PM    comment []  Google It!  

More Flash Forward Stuff

A couple of FlashForward items from around the web.

I expect we will see a lot more FlashForward info online, as more people get home from the conference.

11:09:36 AM    comment []  Google It!  

Home from Flash Forward

I just got home from Flash Forward. I was pretty busy at this one and didn't get to hang around with everyone as much i would have liked though. Branden Hall, Christian Cantrell and I all rode the train back from new York to DC. We had a contest to see who could make the coolest thing with the drawing API on the train ride back. Branden won (surprise). Actually, he won first, second and third place. He built a Flash movie that wrote some of the code for his main flash movie (showoff). Oh yeah, I made a little worm, ill post it if i get time (nothing too exciting).

Update, Branden has posted his entry, as did Christian, and here is mine (now you can see why i spend most of my flash time doing client / server stuff ; )).

ok, its late. I'll post more tomorrow and wrap up the Flash Forward stuff.

Oh yeah, the next FlashForward will be in San Francisco in the Spring.

12:49:03 AM    comment []  Google It!  


Friday, July 12, 2002

Star Wars in Flash: Developing for the Playstation 2 : Fred Sharples

I came in a little late.

orangedesign created the menus for lucasart's starfighter games (2) for ps2. All of the menus were created within macromedia flash, and played back within a Flash player included with the game.

Have to conisder localization. They do the German version first since the german words tend to be the longest.

Memory considerations, only 32 megs of ram on ps2. compressed sizes of images doesn't matter, it is the uncompressed size. reducing the number of colors. the butterflyed the images (symetrical, so they only have to load half of each image (and then flip it)).

design process

fred is showing some of the images they presented to the lucas arts to get an idea of the type of imagery they were looking for in the jedi starfigter menus. (just regular images they found on the web).

originally, they had a more dirty, mechaninal interface, but in the end it became more modern, clean look.

showed series of drawings of early menu prototypes. really cool.

tips and tricks

memory issues

  • use ntsc or pal on a television to determine how far you can compress bitmaps.
  • watch memory. major issue.
  • butterfly symetrical bitmaps whenever possible.
  • concern yourself with the unpacked size of images, not the file size.
  • Optimize your bitmaps before they are brough in.

framerate issues

  • try breaking text if it doesnt animate fast enough.
  • avoid using more that a paragraph of type on one screen.
  • build all of your alpha effects into your bitmaps.
  • give life to your art by animating smaller screen areas.
  • with vectors, try finding shapes that use the fewsest number of triangles.
  • don't use a lot of thin vector lines.

Localization

  • design with plenty of space for copy. 150%.
  • localize early in german (long words, design issues)
  • test doubel byte comparison.
  • work with native speaker to avoid embarressment.
  • have experienced designer do the final layout.

Sony Requirements

  • memory cards stuff is more than half of the work. (what happens when the user pulls a card out, inserts it, etc...).
  • sony design documentation manual. very big.

card issues, example:

  • is card full
  • formatted?
  • saved data?
  • ps2 card or ps1?
  • damage?
  • is it being formatted?
  • being read?
  • did you tell the user how much space is required?
  • does the user want to format or save the data?
  • etc...

these all have to be asked and considered within the flash movie.

Middleware layer. the layer of scripting between the hardware / game and flash.

  • written by game programmer.
  • a simple script layer
  • communicates between game, flash and hardware.
  • almost all UI logic resideds in the flash later.
  • middleware never drives the flash movie.

example of setting something in the game's middleware. this tells the game to play in stereo mode:

getURL("callback://SetStereoStatus", 2);

getURL("callback://GetStereoStatus", "variableName");

this tells the middleware what variable name to use when it passed the data back to flash. you have to wait one frame in flash before you can reference the data.

Why should flash be on Playstation 2?

Currently not avaliable. playstation 2 is very popular platform.

three versions of flash player for ps2

  • generation one, used on starfighter. only supported flash 4. built by secret level. software only, very slow. doesn't support loadmovie, so memory issues cause problems.
  • strobe : (gen 2) - used by lucasarts for some other games (they have in house flash team). supports flash 5, working on MX version. hardware enabled. also ported to xBox and Directx8. supports loadmovie command.
  • internet version for ps2 : developed by macromedia and sony. deomonstrated at E3 in may 2001. may be related to to linux os and network adaptor kit released by sony. did not play in browser.

showing pictures on ps2 linux kit. pretty cool. comes with harddrive and ethernet port.

website:

Fred wrote a chapter on Flash for the PS2 in Flash Enabled : Flash Design and Development for Devices.

orangedesign.com

secretlevel.com

lucasarts.com

future they want to be able to use the flash player within the games, overlaying the action and even showing video.

testing. worked on pc. they had firewire connection into test unit that they used to upload the entire game into the ps2, and then test it on the console.

orange did not do the sound.

end of session.

3:10:07 PM    comment []  Google It!  

Wearable Technology : Wireless Fashion : Phillip Torrone

Phillip started with an overview of the Pocket PC platform, and show some accessories for the Pocket PC (keyboards, cameras, storage, etc)...

Can you make money with Flash on the Pocket PC? Yes.

  • Microsoft Enterprise Platform : Phillip show a really nice application they did for Microsoft, that deomnstrated and gave information on their enterprise platform. They initially made it for the web, and then took the same assets, and a little tweaking and created it for the Pocket PC platform.
  • EDS : Portable Pocket PC Based Kiosk : made for executives so they could carry it around and show information. it contained video of some of the EDS ads (cat herding).
  • Showed a fantasy football application that had data integrated with video sports highlights and ads.
  • BWM films : showed bmw film on device.

Phillip brought out a pocket pc phone edition (very nice and sleek).

phillip talk about his animated today program. this is a prgram that allows you to run flash animations as your pocket pc today screen background. he showed some fish, a nyc subway map and a flash movie that displays current stock data.

phillip showed his store for animated today screens. he then looged onto handango.net to show how he is making money selling them. showed some new screens that he is going to releas (some really cool animations, some of garfield).

showed erricson t68 phone, and some of its accessories.

showed how to dial phone from flash. use fscommand and tellurl (supported by multiple phones).

phillip then showed some clothes made specifically to hold and work with devices.

he showed his wireless operation app. a flash interface of the classic operation game that controls a vest phillip wears. if you tuch the sides, it shocks whoever is wearing the vest (over the web). phillip keeps track of where people try to shock him (the crouch).

showed buddy lee challenge / staring contest. cobranded with television campaign.

phillip said that he has seen a watch with a flash interface (but he cant talk about it).

showed wearfi, gps bracelets for kids (lets you know where you kids are). he then showed a flash interface for a gps movie trailer tracker, as you walk near a movie theature it tells you what movies are avaliable.

then showed his gps walking stick. basically a pocket pc on top of a walking stick with a flash interface.

phillip is a co-author of flash enabled. his web site is flashenabled.com.

end of session

1:49:27 PM    comment []  Google It!  

Rich Application Development with Flash Remoting : Mike Chambers

This was my session on Flash Remoting (sorry, i couldn't blog it in real time). It was an advanced session, and i spent a lot of time talking about architeting Flash Remoting Applications.

I discussed Object Oriented Client / Server interfaces, which is a design patter where you encapsulte all of your client / server code within ActionScript objects. This makes the code more reusable, but also creates a simplified ActionScript API for the service. It also abstracts all of the complexity of the code, and client / server communications away from the developer / user.

I show some simple ActionScript examples that demonstrated this (i will upload them later). I then went through and showed some Applications that used some Client / Server Service Libraries (Email and Stock). I showed an stock charting app, and well as a Flash Email client i created (which has a sneak peak of some new components).

I then showed a simple flash application that called the google web service via Flash Remoting, and allowed you to search google from Flash.

Finally, i pulled up the stock application again, change one line of code (pointing to the server), and switched the back end code from ColdFusion to an .NET DLL written in c#. The Flash Remoting code was the same conencting to both. The server side code has no flash specific code in it, and I pulled up a windows app that used the DLL to deomstrate this.

I will try to post some more details and files later.

end of session

1:40:58 PM    comment []  Google It!  

Flash Remoting on ColdFusion MX QA Session

Christian Cantrell.

Christian started by covering some of his slides that he was not able to get to yesterday. He also showed some of his code for the Flash mp3 player that hooks up to his iPod, and finally he show a simple app that uses Flash Remoting to create a Flash console for OSX (allows him to run a pseudo console from a Flash app).

I just realized thay my session is at 10:15 and not 11:00, so I am going to have to cut these notes short.

9:14:38 AM    comment []  Google It!  

Video of Flash Forward Keynote?

I noticed a couple of people taping the Macromedia Keynote on Thursday. Does anyone plan on posting video online? If so, let me know.

9:09:13 AM    comment []  Google It!  

FlashForward Film Festival Winners

Josh Dura has posted the winner's of the FlashForward Film Festival.

You can view them here.

[via jdb]

9:00:10 AM    comment []  Google It!  

Flash Forward : Day 3

Last day of Flash Forward, and it looks like it will be as busy as the previous couple of days. I am going to go to the Flash Remoting QA for Christian Cantrell's session, I then have my session titled Rich Application Development with Flash Remoting. After that I have my QA session (I am going to miss Eric Natzke's session ; (). In the afternoon, i am going to phillip torrone's sessions, Fred Sharples (Star Wars in Flash: Developing for the Playstation 2), (i am not sure what session I will go to at the end.) Anyways, I am going to try to post my notes and comments. You can view them and all of my other FlashForward notes in my FlashForward section.

8:57:36 AM    comment []  Google It!  


Thursday, July 11, 2002

Pre Film Festival Reception

Everyone is waiting for the Flash Film Festival to start (drinking free beers). I was planning to blog the film festival winners during the session, but my battery is super low so i might not be able to.

Check back later for updates.

5:25:22 PM    comment []  Google It!  

Flash Remoting with Flash MX and ColdFusion MX : Christian Cantrell

Christian Cantrell : qantrell@yahoo.com : note all code examples, and slides (very nice) will be included online.

Flash Remoting is a server-side technology which allows for the intergration of Flash applications with existing application server logic.

Exposes remote services through a simple ActionScript API.

Uses AMF (Action Messaging Format) to communicate with player / server. Very efficient binary format made specifically for ActionScript.

Getting started : need

  • Flash MX
  • Flash Remoting Components (avaliable from macromedia.com)
  • A server that has the Flash Remoting Adaptor installed.

Flash Remoting ActionScript objects:

  • NetServices.as : core ActionScript logic of Flash Remoting. Provides functionality to connect to Flash Remoting adaptor on server.
  • RecordSet : Object representing a set of data records, usually returned from a database.
  • DataGlue : Utility object for mapping columns in a RecordSet to proerties of UI components.
  • NetDebug : Utlity object for helping to debug client/server interactions (using NetConnectoin Debugger Panel).

Creating packages for Flash Remoting Services

A package is implimented as a logical directory structure where the files that contain Flash Remoting services are kept. (start from the document root).

Uses domain name in reverse (com/domainname) to prevent namespace collisions (i.e. two services with the same name). by placing them in a directory structure like this, you dont have to worry about other peoples files overwriting yours (just like java packages).

In actionscript, you use dots, instead of slashes to refer to directory structure (com.domainname) (note, i think you can do it either way-mc).

Creating Flash Remoting Services with ColdFusion pages (.cfm)

ColdFusion pahes that are called through Flash Remoting have access to the "flash" variable scope, which contains all of the data sent from Flash.

The directory containing the page is considered the service, and the page name is treated like the function name.

simple flash remoting service in CFML

<!---package com.macromedia.flashforward--->
<cfset str = #flash.params[1]# />
<cfset flash.result = Reverse(#str#) />

This is a ColdFusion service that takes a string, and returns it in reverse. The params array is an array that contains all of the aruguments and data passed in from the Flash applicaiton (via Flash Remoting).

ActionScript:

NetServices.setGatewayURL(url); this tells Flash where the server is located.

var con = NetServices.createGatewayConnection(); //this returns a reference to the server.

var pageService = con.getService("com.macromedia.flashforward", this); //this gets a reference to the remote service. the second parameter, specifies where the functions that will handle the data sent back from the server will be (in this case on the same timeline as the ActionScript code).

(note : christian is running his presentation from a powerbook with OSX. He is running ColdFusion MX on OSX.).

Creating services for Flash using ColdFusion Components

A single ColdFusion Component can provide multiple services (implimented as functions). These can also be called directly from ColdFusion pages, or as web services.

note : code will be avaliable online.

ActionScript

Instead of specifying callback functions that receive the data from the server, on the main timeline, you should attach them to an object, so you keep the functions within their own scope / namespace.

var result = new Object();
result.onResult = function(data){//stuff here};

christian named his buttons the same as his remote service, that way he can use the button labels to decide which function to call:

function clickHandler(button){urlService[button.getLabel()](input.text);};

performing a databse query using a ColdFusion Component (CFCs)

The entire ColdFusion Query object can be returned directly to Flash. it will be converted to an ActionScript RecordSet object.

You can set a pagesize which determines the number of rows the server wil lreturn to the client until the client asks for more (i.e. only initially send first 10 rows of 1000). Server will then send the rest of the rows on demand (without going back to the database, only to Flash Remoting Adaptor).

Just use a regular CFQUERY tag to get a Query object. You can then return it directly to Flash using CFRETURN.

ActionScript

function that receives data from server:

function onResult(result)
{
//dataConsumer, dataProvider, labelString, dataString
DataGlue.bindFormatStrings(name, result, "#LastName#, #FirstName#"," #EmployeeID#")
}

note, my battery is running low.

ServerSide ActionScript

SSAS allows Flash Developers and designers access to server-side programming with almost no learning code.

simple SSAS service:

function sayHello()
{
    return "Hello World";
}

called the same way from Flash as you would call ColdFusion services.

my battery died. Christian showed some server side actionscript examples, and (connecting to DB and loading files).

he then showed an Flash App that used Flash Remoting to play mp3s off of his iPod. pretty sweet.

end of session.

4:03:42 PM    comment []  Google It!  

Dynamic Drawing with Flash MX : Robert Penner

The slides for this presentation are online.

Robert started off by showing off some of the Flash drawing experiments that have been done by the flash community (all to the tune of "Christmas on acid").

(btw, the room is packed).

Shape Drawing API

Every shape that you draw will be within a movie clip.

MovieClip.lineTo() : draws a line. initially it is invisble, so you need to use lineStyle to give it a color. starts at 0,0 coordinate of movie clip that it is contained within.

MovieClip.moveTo : moves the drawing point to a new position. does not do anything visible.

MovieClip.curveTo : draws curves. takes 4 numbers, two for each curve. control and anchors. anhors are where they end up, and control influences the curve. curves toward control points, but doesn't touch it.

MovieClip.beginFill : for creating solid shapes.

MovieClip.endFill :

If you are not at the starting point, then the final side will automatically be drawn to the starting point. you can then remove the line style (leave it empty), and it will remove the last line.

MovieClip.beginGradientFill : for dynamically creating gradient fills.

MovieClip.clear : will clear all drawings within movieclip. it resets drawing properties (such as linestyle).

framebased, use onEnterFrame event. First step is clear graphics from previous frame, and then draw. repeat. (try putting a lot of values set by random()).

showing more cool drawing api examples. (a bunch of 3d wireframe worlds by glenn thomas, a cad like drawing program, sam wan's mysterons, ).

extending drawing API.

MovieClip.drawLine() (see robert's site for notes / example code). takes a starting and ending corrdinate and draws a line.

showing a bunch of other custom drawing functions (triangles).

note, i had to leave early (halfway though).

2:39:16 PM    comment []  Google It!  

Flash, Lies and Videotape: Broadcast Flash Techniques Pete Barr-Watson, Pixelfury

I was planning on putting up notes on this session, but Pete is showing so much cool stuff that i forgot to take notes.

Basically, he is building video (quicktime, tv, etc) using Flash. Realy cool stuff.

2:17:43 PM    comment []  Google It!  

Macromedia Keynote

The keynote was awesome. To quote Lynda Weinman, "This was the best keynote ever".

It started off with Kevin Lynch talking about the Macromedia MX launch, the most significant and aggressive launch in the history of Macromedia.

Kevin then spent some time discussing usability in Flash, pointing out some of the books that have been written on the topic (skip intro, flash 99% good), and some of the people who have been pushing usability in Flash, such as Chris MacGregor of Flazoom.com, and more recently Jacob Nielsen. Kevin then talked about the importance of engaging in a discussion about Flash usability, especially with those who are critical, in order to learn from some of their arguments.

Kevin then discussed Macromedia Flash and Advertising, and pointed the incredible growth of the use of Flash in online advertising, and its successes. In august of last year, there were 100 million Flash advertising impressions a week. Today there are 1 billion impressions a week.

We then showed a Mike's hard lemonade Flash movie, that was created from a television commercial.

Kevin then invited me up on the stage, and we created a simple application using Flash MX, ColdFusion MX and Flash Remoting. Of course, I had some typos in my code, but after those were fixed, we created an app that used a new DataGrid component that we have been working on to display the results of a data base query that shows all of the FlashForward Session information.

Kevin then talked about some of the pioneering work done in computers in the 50's and 60's, and introduced a clip of a presentation by Doug Engelbart, and his famous 1968 video of distributed collaboration and real-time video in a graphical computer.

It is really hard to describe the excitement and electricity in the audience while viewing the clips. You will have to use the link above to view them. We showed the introduction to the presentation, and doug typing on the screen, and then a clip where he was collaborating with someone remotely (using text and video!).

Kevin then opened up a Flash Communication Server application, which linked him and Flash Forward to Palo Alto, California and Doug Engelbart. When he came through on the video, the audience gave the loudest and longest applause of the morning.

Doug talked about how after he got engaged, he realized he didn't have any long term goals. He decided that he should dedicate himself to making a positive difference to humankind, and that one way to do that would be to figure out a way to make communication and collaboration easier. Doug, who has actually used director in the past, said that he would like to see applications that make it simple to connect users via video, and then archive and search that video (as easy as searching and indexing text on the web).

After another long round of applause, Kevin asked Chris Hock from the Flash Communication Server team to come onstage, and build a Flash based communication application. Using the Flash Communication Server components (kevin noted they would be available soon), he built an application that had video windows, login element, a list of everyone connected, and a status light. He wrote no ActionScript at all. He published, and then some Macromedia people in the audience also connected via their webcams.

After that, the audience was invited to go to the computers, and ask questions via the app that was just built.

I spoke with a lot of people after the keynote, and everyone was really excited about the presentation and the communication server. This was definitely the best keynote that i have ever seen us present.

10:53:58 AM    comment []  Google It!  


Wednesday, July 10, 2002

Photos from Flash Forward

EricD has posted some pictures from Flash Forward.

You can view them here.

8:12:17 PM    comment []  Google It!  

Creating Applications in Flash : Ask the Experts Session : Chrissey Rey

Dropped by this session really quickly. Lots of questions about replacements for generator (Flash Remoting, Flash Communication server for runtime dynamic content, JGenerator for offline batched content).

4:24:16 PM    comment []  Google It!  

What to do if you get lost in NYC at FlashForward?

Just saw this on were-here.com, created by sykes. This should come in handy this week.

3:19:01 PM    comment []  Google It!  

Video with Flash MX : A Users Guide : Session 2 of 3

Short QA session.

They are showing comparisons of the same video in different players (austin powers trailer):

  • Real Player 225k low badwidth. pretty good quality. (watch scene changes and transitions.) streaming.
  • Windows Media Player : pretty good quality. streaming.
  • Quicktime : good quality. alittle choppy, good encoding.
  • Flash MX : Good quality. low badwidth. comparable to other formats.

In higher end encoding, the differences between the players become more obvious, with dedicate video players having better quality.

Encoding time:

  • Flash : fast
  • Quicktime : slow

FileSize

  • Quicktime 4.56 megs
  • Windows medi : 4.54 megs
  • Flash 4.51 megs

When deciding which video codec to use, dont just think of penetration stats today, but think of where it will be in 6 months to a year.

they are shhowing a seinfeld video player, where you pick a character, and the can choose from a number of clips from the show (george has shrinkage). they keep track of how many videos you have watched. every four videos you watch, you have to watch a commerical (they showed a vw jetta commercial). You can play a new video until the entire commerical has run.

QA.

end of session.

2:47:55 PM    comment []  Google It!  

Video with Flash MX : A Users Guide : Session 1 of 3.

Video in Flash MX.

 Danny Mavromatis and Mike Davidson, ESPN.com

Danny and Mike work for ESPN.com which is a very popular site. they do have some power to force users to change browsers.

Video in Flash

Image Sequences

Most primitive version of video in flash is a sequence of images. They are showing some Seinfeld clips that use the technique. Basically, take a video clip, export it as a sequence of images, and then import them into flash (flash will recornize that it is a sequence of images).

problems, no sound, although you can manually add it. it is essentially an image of jpgs. no temporal compression.

QuickTime

Flash Player is embedded in player. Pretty much flash 4 compatible, but can be a little buggy. more for adding effects on top of quicktime movies.

Video on Top of Flash

Interface in Flash, and then layer video ontop of flash using DHTML and iframes. Works pretty well. problems with browser support (due to DHTML).

The Importance of Flash MX Video

  • Reduces incompatibilities between systems (some difference between playback on pc and mac, pc smoother).
  • Reduces complexities of mcahine interactions.
  • Easier to set up on the client.
  • More self-contained
  • Not easiliy saveable on client-machines
  • More onsistence playback across platforms.

on mac, import an 1/8 of a second  blank audio on first frame. set it to stream. this will make the video drop frames if it can't keep up, which leads to better video flow.

Showing new ESPN video player. Flash Interface, with a layer of video (real or windows media) over flash. sometimes it will not come up, can take a while to load due to checking players, browser, etc...

Showing Xgames video full screen flash application / projector, with video. Pretty sweet - mc.

It is more difficult to steal video from Flash. That doesn't mean it is impossible, but for regular users, it is enough of a hassle, that most will give up or not try.

Because everything is contained within Flash, you can leverage the power of flash with video to completely customize your application (i.e. create a custom / advanced preloader for the video).

more advantages to video in flash

  • no missing codec issues.
  • fully transparent display mechanism
  • temporal compression (only saves video data that changes from flash to flash. sorenson squeeze does this and leads to higher quality and lower file sizes).
  • easily operable across flash applicaiotns.
  • potential on playback on devices.

Limitations of Video in Flash

  • currently not batch encodable (sorenson spark pro can do this).
  • No built in buffering mechanisms (you can write your own buffering with ActionScript).
  • No built in connection speed detection mchanisms.
  • No sure streamtype capabilities.
  • Current Flash 6 player pentration is low.

they are showing media metrix numbers for flash penetration. numbers are from march. they are very consistent in growth rates. every 14 months, pentration is up to 86% (based on his research. note, we project flash 6 rates will go up faster than in the past. -mc)

  • Video does not automatically stop on last frame (you can write actionscript to stop it).
  • upsacing video size is slightly inferior to other video formats.
  • not a reference format (quicktime is, windows media, real are not).
  • no rights managements capabilities.
  • No native full screen mode.

end of session.

1:44:41 PM    comment []  Google It!  

Branden Hall's Session : 3 of 3 : OOP App Review

Branden is going to disset his bibliofile application.

The app helps him keep trakc of all of his books.

  • Based on MVP
  • View is on main timline (different frames represent different application states).
  • Presenter is very simplistic.

Uses Tab component, TreeView Component, push button component.

Application gets information from a remote web service via Flash Remoting. (branden uses a cue cat to scan in the books isbn into flash. flash then sends the isbn via flash remoting to a remote web service which returns information about the book. the book information is then stored locally. cool stuff! - mc).

Data is stored in Shared Objects.

Branden is using Object.register class to cast the object from the shared object to a specific class. (SharedObjects all you to basically serialize any object, but it strips of functions).

If symbol name is not in library it assumes class name.

Object.registerClass("castToClassName", objectToCast);

Note, that using this, the object's data is populated before the constructor is run, so you need to check in you constructor whether the data has been initialized yet.

Did you know? Branden's wireless network at home goes down whenever his phone rings.

note : i missed some of branden's discussion of the different models he uses within his app. - mc.

BooksModel

based on associative array. easy search, creation and removal. Cannot directly sort, can have key collisions.

Categories Model

based on a tree structure. Easy to add items, searching is easy, holds hierachical data well. Difficult to code, spanning tree can be slow, can use a lot of memory.

categories is split into two objects. one represents a single node / item. the other provides access to the tree, (you dont access the first directly, simplar to how the XML and XMLNode object are related).

branden is going over the elements of the applications UI, and show the code that responds to UI events.

end of session.

11:35:20 AM    comment []  Google It!  

Branden Hall Session 2 of 3 : Creating applications in Flash MX

Components

  • Self encapsultated widgets
  • at the core, they are just movie clips
  • usually drag and drop (i.e scrollbar)
  • Full API

UI Component Set 2 From Macromedia. Avaliable from Flash Exchange.

Most components support handlers, which is the name of the function that you want to be called when an event happens. By default the function is on the same timeline as the components. You can set them via the API to use functions on any object.

Components are similar to components in MS visual studio, or Swing.

Component API : Extensive, full featured API. Components can be treated like class instances.

Data Providers

  • interface for a way to access sets of data.
  • can set via setDataProvider methods (in supported components). accepts DataProviderClass, RecordSet, arrays of objects.
  • DataProviderClass, included with some of the components (look in the components assets in the library).
  • Using data provider means that data will always be in sync, so if data in dataprovider changes, any components using that dataprovider class will update themselves with the changes.

Data Glue

  • Used to "auto-mungh" dataproviders to work with some components. it maps the properties to those required by listbox, and combo box components (and some others).
  • Simple built in formatter.
  • Included with Flash Remoting Components (avaliable from macromedia).
  • Branden will put up an example at his website, waxpraxis.org.

Skinning Components

Can do with code using FStyleFormat class. Created a new syle format object, and then you can set all of its properties (look in reference panel for complete list).

sf = new FStyleFormat();
sf.face = 0x00ff00;
sf.addListener(componentName);
sf.applyChanges();

you can also set individual properties through setStyleProperty on the component.

componentName.setStyleProperty("face", 0x00ff00);

Can set globally using GlobalStyleFormat class.

Can also skin in the library, by actually editing graphics. Library > Flash UI Components > Component Skins.

Skins are broken into very small pieces. if you are making you own skins, you dont have to make them into so many small peices. it is done this way in the flash components to work with stye objects.

Customizing Components

Can extend and customize components. Extending Listbox.

  • Create symbol that will be used for the item, and associate a class with it.
  • The class has certain methods that will draw internals of listbox.
  • Need to register the new symbol with the component.
  • Couple of articles on Flash Application Developer Center on this. (one by branden, one by nigel pegg, one by greg burch).

Creating Components

  • can be difficult.
  • one off components, and robust, generic components. the latter can take a long time, but are usually more useful in more situations.

main pieces

  • main code, displays item, drawing
  • API code, runtime manipulation
  • Parameter, customer UI (PI)
  • Live Preview (can become complex).

branden is showing the TabBar component that he built, showing how the live preview automatically updates when properties in the property inspector is updated. Nigel Pegg is going to have a lot more info on this during his session.

Dont name a parameter "horizontal", if it gets set to true, it will rotate component.

Flash Remoting

Branden really likes it.

  • "Best way to connect flash to servers. period. end of story."
  • Can send and receive native Flash / Data types. don't have to do any data serialization / de-serialization.
  • Can directly call remote services from flash (java, .net, cfmx, web services, etc...).
  • Authoring Components are free from macromedia.com. Gateway is included with jrun4, and cfmx. will be avaliable for .net and java servers.

XML is a very verbose way to serialize data. Flash Player communicates with Flash Remoting Adaptor via AMF, a binary format created specifically to serialize ActionScript data types. very efficient and lightweight.

branden is showing his book app again.  when specifying URL for remote web service, you point to the web services WSDL file (in this case, he is calling a remote web service creating in ASP.NET).

branden is passing the responder object as the first parameter to the remote method. onResult method is automatically called when data is returned from remote service.

NetDebug.as, include this and you can use the NetConnection Debuger Panel (Window > NetConnection Debugger), and it will show all of the communication bewtween flash and the server.

end of session.

10:20:59 AM    comment []  Google It!  

Branden Hall's Session 1 of 3.

The first day of Flash Forward involves a number of half day sessions / classes. I am sitting in Branden Hall's first session of three. The first session is on Object Oriented Programming in Flash (something that Branden and Sam Wan just wrote a book on).

Branden is discussing some of the basics of Object oriented programming in Flash, including objects vs instances, and how to create custom classes. 

Importance of encapsulation

  • Using getter / setter methods to access internal properties.
  • Should not directly access internal object properties.
  • Don't hard code references to timelines (if they are needed, pass them in through a method).
  • many getter / setter methods can inidcate design problems.

Composition vs Inheritance

Branden says that Generally you should avoid inheritance (i don't agree with this, and Branden and i got into a pretty heated discussion about it on the train-mc). Inheritance in Flash can be messy.

You should consider using composition instead of inheritance. Composition is a "has a" relationship. Inhiritance is a "is a" relationship.

Design Patterns

  • Take advantage of previous work that has already solved common problems.
  • Object oriented and language independent (any design patter book can be applied to flash).

3 patterns

Value Object Pattern : don't use multiple getter / setter methods. multiple function calls can cause performance issues, especially for remote methods. Send a value / object which contains properties and values. Only requires one method call, and properties can be set at once:

foo.setValues({name:"mike", address:"500 main st."});

Observer Pattern : Multiple events need to listen for events from a single object. The event source object allows other objects to add or remove themselves as listeners.

Easiest way is to use undocumented AsBroadcaster

FooClass = function(){ AsBroadcaster.initialize(this);}
FooClass.prototype.sendEvent = function(){this.broadcastMessage("onEvent");}
myFoo = new Foo();
myFoo.addListener(this);

See flash coders wiki for more info.

Model / View Controller Patter : Some articles at Des / Dev Center.

  • Seperate data from presentation.
  • Model : Data
  • View : Interface
  • Controller " Logic
  • All pieces are independent of one another, although code for pieces are often all combined in one place in flash (on main timlines). just make sure to comment the different sections-mc.
  • Sections can be swapped out and changed without affecting other layers. (i.e. switch out view to create new interface for different devices / platforms).
  • Model View Presenter (more advanced).
  • This architeture works very well for creating applications in Flash.
  • Layers should be completely independent of each other.
  • Model should be abstracted away from viewer and controller (it should not know about them).
  • The view listens for events.

Branden is showing a new app called bibliofile that he uses to keep track of all of his books. uses treemenu component, and new tabbed view component that branden built. Showing some of the listener code in the model section of the application. Uses value object pattern to pass properties / values into objects. the app has multiple frames, which each frame representing a different state of his application. The app uses Flash Remoting to get information on books from a remote web service.

TabBar component : Branden is very happy with this, he feels he hit the "sweet spot" with it (not over or under engineering it). Live preview, scalling. You add tabs through PI and set alignment, and then when the tabs are clicked, callback methods are called where you can have code that reacts to the event. In the case of brandens app, it either moves between frames, or hides movie clips (he is using it in two places).

ToolTip component : Drag and drop, add message in PI. Super easy to use.

KeyBoard Navigation Component. Isn't showing it because he didnt have time to get it in the session.

end of first hour, next hour is about components and working with flash remoting.

 

9:18:07 AM    comment []  Google It!  


Tuesday, July 09, 2002

Flash Communication Server party

I just got back from the Macromedia Flash Communication Server party. Lots of people showed up to see information and demos of the Flash Communication Server. The sound was messed up, but people seemed to be excited about the demos. We showed the Jeremy Allaire Macromedia MX presentation, authoring Flash Communication Apps with the Flash Communication components (not yet available) (imagine building full fledge text and video chat room in about 2 minutes), and a collaborative whiteboard application.

Afterwards, there was a chance to meet and chat with everyone. I talked to Phillip Torrone, Christian Cantrell, Glenn Thomas, Branden Hall, Nigel Pegg, Eric Dolecki (met him for the first time), Natalie Zee, Steve Leone, Erik Natzke, Dave Yang, and Veronique Brossier (first time). Everyone was excited about the possibilities of the new technologies, and i could see them already starting to think up cool things to do with it.

10:56:03 PM    comment []  Google It!  

Flash Remoting : Passing responder object with remote function calls.

Branden Hall and Christian Cantrell are on the same DC - NYC train that I am. Branden showed me some useful Flash Remoting stuff he figured out.

You can pass a responder object for a remote method as the first argument to the method call. This allows you to pass a separate instance of an object when you are calling the same remote method multiple times. The only caveat is that the responder function must have an onResult method. It will not work if your use functionName_Result. Here is an example:

var result = new Object();
result.onResult = function(data)
{
     trace("data received");
}

//netservices code snipped service.functionName(result, "foo");

Pretty cool stuff.

3:02:30 PM    comment []  Google It!  

I'm off to FlashForward NYC

I am off for NYC and FlashForward. I will be posting FlashForward related information in the FlashForward section.

I will be away from email for a couple of hours this afternoon.

10:58:17 AM    comment []  Google It!  


Monday, July 08, 2002

Blogging Flash Forward NYC

Flash Forward is this week in New York City. I am heading up there tomorrow, and thus may not post much for a day or so.

I am planning on blogging the conference and report on sessions, premieres, announcements (except some big ones), and anything else going on at the conference. I have created a new section, FlashForward, where I will be posting everything from the conference.

If there is anything in particular that you want to hear about or from, post your requests in the comments section, and i will see what i can do.

9:46:51 AM    comment []  Google It!  


© Copyright 2002 Mike Chambers.
 
July 2002
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
Jun   Aug

Flash Forward

Macromedia MX

Resources

Flash MX

Click here to visit the Radio UserLand website.

Subscribe to "FlashForward" in Radio UserLand.

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.