Restrictions on use of the SWF and FLV/F4V specifications will be removed
The device porting layer APIs for Adobe Flash Player will be published
The Adobe Flash® Cast™ protocol and the AMF protocol for robust data services will be published
Licensing fees will be removed – making next major releases of Adobe Flash Player and Adobe AIR for devices free
What does it really mean? Well it could be the promise of a universal application platform and the ability to write an application and deploy it everywhere. But, we know, with the likes of Apple and Google, who haven’t really taken to the flash platform, that probably isn’t the case. To me it means that Adobe is allowing the community as a whole to participate in the direction that the flash platform takes. To develop what what the community wants and thinks needs to be developed. This is a good thing - yay Adobe and yay Flash!
So if you haven’t checked out Ted Patrick’s blog yet, do so now and keep an eye on it all week!.
He’s going to be posting new info on Moxie (Flex 3). So check it out, there are some really interesting additions to Flex Builder in the upcomming release.
Sometimes (okay, manytimes) files are large enough that the process of opening and reading its contents may take some time. To solve issues related to the extra time this may take AS3 allows you to open files asynchronously. I'd like to add to the information from the reading files with AS3 post. Here we'll cover the code necessary to open a file asynchronously and read the file contents as they become available.
Because we are now doing something asynchronously, we will be dealing with events. As the file contents are being read The FileStream object broadcasts progress events that we can listen for and respond to. This ensures that when we are reading data when the data is available.
Then we'll need to create a couple variables. First, the FileStream which we'll use to read our file and second, a String variable that we'll use to display the file contents.
Now we'll create an onCreationComplete() method. This method will handle the creationComplete event of the application to get things rolling. Inside the onCreationComplete() method we'll need to create out File object as well as the FileStream object.
privatefunction onCreationComplete():void// Fired when the application has been created
{
var myFile:File = File.appResourceDirectory;
myFile = myFile.resolve("mySampleFile.txt");
_fileStream = new FileStream();
}
Still in the onCreationComplete() method, we'll need to handle those events that will be dispatched while reading the file asynchronously. The events that we will handle are:
ProgressEvent.PROGRESS - This will fire as the bytes are read from the file into the buffer.
Event.COMPLETE - This will fire when all the bytes of the file have been read into the buffer.
Now to handle those events and read our file. First, we'll deal with the PROGRESS event. Inside the onFileProgress() event handler method, we read the availableBytes from the file and add it to our String variable. Notice the second parameter of the readMultiByte() method - "iso-859-1". This specifies the content type of the file that we are reading. I'll cover some of the other content types in a later post. So, keep an eye out for that one if you're curious. Finally, we update the TextArea, to show we are actually reading the file.
A very simple example, and it is still only text that we are reading. Next time I'd like to cover how to read different file types. So, like I said, keep an eye our for that post.
The ALPHA release of Apollo, Adobe's cross-operating system runtime allows for some pretty sweet functionality:
Drag-and-drop support
Rich clipboard access
Desktop and system
shortcuts
What I was excited about was the File API. The ability to access, read and write to files is something that is completely necessary in a desktop applications, not to mention, exciting to just play with in ActionScript. Its also something that allows for those Web applications that will be ported to desktop applications, to break out of the constraints of the Web (browser security etc.).
I'd like to give a simple example of the File API and get you started on the how's. Its not that difficult, so lets get started. I'll show you the code...then explain.
Next, we'll need to create our File object so we can let our application know where the file we want to read exists. We'll use the file.appResourceDeirectory to locate the file in relation to our application, then the resolve method of the File object myFile to locate the actual file.
Now we'll need to actually open the file using the FileStream object. So, we create a new FileStream object, then call the open() method and pass it the File object as well as the FileMode of READ.
We have our file open, so lets go ahead and read the contents of the file. The file is a text file, so we'll simple read the file contents into a String variable using the readUTFBytes() method of out FileStream object. Depending on the type of file and the contents of that file, you will want to use a different read method. Like I said, we'll keep it simple for now. The readUTFBytes() method requires the number of bytes to read. We'll pass the bytesAvailable property of the FileStream object for this parameter. The bytesAvailable prooperty, in this case, is the total bytes for the file. Finally set the value returned from the readUTFBytes() call equal to our String variable.
var fileContents:String = fileStream.readUTFBytes(fileStream.bytesAvailable);
Alright! Now we have our String variable that contains the contents of our text file. From this point you can do anything you want with it. In this example, I've just set the text property of a TextArea to the value of our String variable
There is one final thing to do, and that is clean up. Make sure you call the close() method of the FileStream object once you are done reading the file.
So that is all you need to get started with the File API. There are a few more things that I'd like to go into detail about, so I'll make sure to post about reading file types other than plain text. I'd also like to create an example of opening a file asynchronously, so look for posts on these subjects soon.
I was very excited to receive the book Advanced ActionScript 3 with Design Patterns I had heard great things about the book and was not disappointed as I read through it.
I just happen to be stuck in jury duty for a full day and as I waited for the city and county of Denver to decide if they required my services I was able to read through most in the book in a morning. The really nice thing about this book is the lack of fluff. It is very direct, very to-the-point and very useful.
There were quite a few lessons that I learned (one would be typing a variable to an Interface...tre useful!) through out the book. Not to mention to the descriptions of many of the more popular design patterns around. I'd say Joey Lott and Danny Patterson have done a fine job presenting ActionScript 3 as applied to development with a focus on design patterns.
The only complaint that I have heard, is that that it can become a little repetitive. If you are very familiar with ActionScript syntax, you may want to skim many of the chapters for items that catch your eye and look to be good tips or new to you.
ApolloRanch is a mini-conference similar to ApolloCamp. Thanks to Xylem CCI (Xlyem and Creation Chamber merged on April 30th) for putting together and hosting the ApolloRanch, they've done a great job so far! ApolloRanch is at the Fisk Planetarium (shoot for the starts Apollo!) on the CU campus in Bolder.
Mike Chambers gave the keynote as well as a "creating your first Apollo application" presentation.
Here is a frew of the highlights:
Apollo Beta to be released on Labs around mid June (keep an eye on Labs)
Many of the missing APIs will be in the beta; drag-and-drop, clipboard
Philo (Adobe Media Player) Preview: Very interesting media player. RSS feed based "channels" for video contnet delivery (FLV).
Some more of the release timeline:
Apollo 1.0, Moxie (Flex 3.0), Philo 1.0 - late Fall early Winter
I'm a senior developer at RealEyes Media, Adobe Certified Instructor and Adobe Certified Professional. Here you'll get my ideas and experience Flex, Flash, ColdFusion and related technologies as well as some generally off the wall stuff.