Thursday, May 31, 2007

First Step in Migrating AS 2.0 to AS 3.0

When you first open an AS 2.0 application you wish to migrate to AS 3.0, in Flash CS3, you will probably go to the Publish Setting dialog box and change the ActionScript version to ActionScript 3.0.

After that, just to be masochistic, you will probably test your movie and expect to get an onslaught of errors. Unfortunately, you will get NO ERRORS and your application will simply fail to work!

So, when migrating an AS 2.0 application to AS 3.0, stay in the publish settings dialog box a bit longer and click on the “settings” button next to the “ActionScript version” dropdown. Once in settings make sure the “strict mode” check box is checked.

Now you will get your helpful list of errors and be able to begin the not too painful process of migration from AS 2 to AS 3.

Labels:

Wednesday, May 30, 2007

Color Code your ActionScript for HTML here....

Arul has been kind enough to create a little form on his site that takes actionscript as input and returns your actionscript color coded by html and css! Now, if you want to post some of your actionscript on the web, all you have to do is paste it here. And it will be HTML color coded for you.

Labels:

Sunday, May 27, 2007

JScript.NET is AS3, Why Not Use It?

Awhile back, I had a chance to speak about JScript.NET (supporting website). This language is based on the same ECMA standard as ActionScript 3.0 and has been a part of the .NET framework from the beginning. Unfortunately, it never found favor among .NET developers. Now many .NET developers are trying to use Python as "the dynamic language" for .NET applications. I think ActionScript 3 / JScript.NET is much more suited to application development than Python. What do you think?

Also, JScript.NET is a nice server side language for AS 3 programmers because the language is virtually identical to what we use all day in our Flash applications.

If you are not familiar with JScript.NET (not to be confused with the JScript in IE) check out the website I built to support my presentation, here.

Labels:

Thursday, May 24, 2007

Save JPEG or PNG in ActionScript 3.0.

In order to make the Apollo application APS LightTable practical, it had be able to modify images from the local hard drive and then send them to the server without increasing the image's file size. To do this I was required to perform PNG or JPEG compression within the LightTable application. The problem of JPEG/PNG encoding in the Flash Player appears to be solved by Adobe Labs as3corelib!

If you are looking for a way to send images that the user has created in the Flash Player without consuming huge amounts of bandwidth it is now possible! Also, if you need to save user created/modified images to disk from an Apollo application, it is now possible to save them in the formats your users are familiar with. I have posted links below:

Download the as3corelib which contains these encoder classes.
Warning: The as3corelib may NOT be as up to date as the direct links below which take you directly into the as3corelib svn.

Adobe ActionScript 3.0 JPEG encoder

Adobe ActionScript 3.0 PNG encoder

Labels: ,

Tuesday, May 22, 2007

Recording Audio with Flash Player to MP3, WAV, AVI, etc.

My team is currently developing a series of interactive speech recognition application. One of the applications requires us to create a web front end that allows us to record audio from a user microphone and return it to the server. To be able to process the file it must be in WAV format. (Microsoft provides a plug-in that can transfer the audio from a web browser to our server, but it is 60MB and thus would render our application useless.)

We decided to use Flash and quickly found that we could not extract the audio from our recorded FLV files. We had no trouble extracting audio from FLV files that we had generated through our own conversion but we simply could not get the audio out of the files that were being streamed to our Flash Media Server. We discovered that all files converted from another format to FLV store audio in an embedded MP3. Unfortunately, all FLV files recorded from the user’s microphone in by the Flash Player use the Nellymoser audio format. Nellymoser is a highly proprietary mono audio format designed solely for streaming speech. When we looked for a program to decompress this converter we found that Nellymoser offered a converter for $7,500.

We did some more digging and found people claiming that that there was one other converter that would do our decoding, the Total Video Converter. We also found that for only $50.00 we could get our hands on the registered version which includes a command line interface that we could use on our web server. As there was no documentation on how to use the command line features of Total Video Converter I created to following tutorial.

How to Extract Audio from FLV Files Recorded by the Flash Player

Download and install Total Video Converter http://www.effectmatrix.com/total-video-converter/

Use GUI to convert an FLV file.
To convert an FLV that contains video or video and audio, but not audio only, you may use the GUI which is self explanatory. Audio only clips can not be converted with the GUI at this time. (The application simply locks up when we try to convert Nellymoser audio only FLV files).

How to Use the Command Line to Convert a Video (or Audio only FLV) File to another Format
First, obtain the pro version of the software (this is just a registered version).
Now open your command prompt and cd to the directory of the total video converter.
Then enter the command:

“tvc /f inPath.flv /o outPath.wav /pi ini\wav.ini /pn Wav Audio normal quality

Note : You can convert the flv to many different audio or video formats.


In the above example, /f goes before the file to be converted and /o goes before the output file. Following parameters are the /pi and /pn parameters. Warning: If you leave out either the pi or pn parameter you will get the following error: “Error! The option /pi must be set”

The pi parameter is the path to the ini preference file you want to use. In the Total Video Converter application folder there is a subdirectory called ini in that directory is an .ini file for each format supported. In the example above, we want to use the wav.ini file so we use the parameter /pi ini\wav.ini

To set the pn parameter we must go into the ini folder and open the wav.ini file with our text editor. At the top of the wav.ini text document we see “[Wav Audio normal quality].” Farther down we see the line “[Wav Audio high quality].” The text in between the “[ ]” is used as for pn parameter. In the above example we choose “Wav Audio normal quality” and hence used: /pn Wav Audio normal.

Finally, you can write a PHP, ASP.NET, etc server script to launch this command line application to perform the conversion upon user request from your server.

Labels:

Quick note on Penner's Easing in Flash

I just found that I had an old component using the com.robertpenner.easing library. I don’t know how the AS 2.0 version of that library got so popular. Most of the classes in Penner’s AS 2 easing library are included in the mx.transitions.easing package and always have been. Though, some of the classes have different names in mx.transitions.easing.


The code in the mx classes and Penner's classes is identical. The only difference is that the mx version has a Macromedia copyright text block above Penner's code. Following are the mx easing classes with their corresponding Penner classes.

Penner’s com.robertpenner.easing.Quad is renamed mx.transitions.easing.Regular, Quint is renamed Strong, Linear renamed None. The classes Back, Elastic, and Bounce were not even renamed.

You may still need to use the following Penner classes as they are not a part of the mx.transitions.easing package:
Cubic, Quart, Circ, Sine, and Expo.

Labels: