There are a few differences between the two needs. For fun, I just made a screen recording of me converting the Help example for CameraRoll into a timeline version! Here's the screen recording:
http://xfiles.funnygarbage.com/~colinholgate/video/camerrolltimeline.mov
and here's the finale code, which includes the various error trapping, and Android support too:
import flash.media.CameraRoll;
import flash.media.MediaPromise;
import flash.media.MediaType;
import flash.events.MediaEvent;
import flash.events.Event;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.IOErrorEvent;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
var mediaSource:CameraRoll = new CameraRoll();
CameraRollTest();
function CameraRollTest() {
this.stage.align = StageAlign.TOP_LEFT;
this.stage.scaleMode = StageScaleMode.NO_SCALE;
if (CameraRoll.supportsBrowseForImage) {
log( "Browsing for image..." );
mediaSource.addEventListener( MediaEvent.SELECT, imageSelected );
mediaSource.addEventListener( Event.CANCEL, browseCanceled );
mediaSource.browseForImage();
} else {
log( "Browsing in camera roll is not supported.");
}
}
var imageLoader:Loader;
function imageSelected( event:MediaEvent ):void {
log( "Image selected..." );
var imagePromise:MediaPromise = event.data;
imageLoader = new Loader();
if (imagePromise.isAsync) {
log( "Asynchronous media promise." );
imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, imageLoaded );
imageLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, imageLoadFailed );
imageLoader.loadFilePromise( imagePromise );
} else {
log( "Synchronous media promise." );
imageLoader.loadFilePromise( imagePromise );
this.addChild( imageLoader );
}
}
function browseCanceled( event:Event ):void {
log( "Image browse canceled." );
}
function imageLoaded( event:Event ):void {
log( "Image loaded asynchronously." );
this.addChild( imageLoader );
}
function imageLoadFailed( event:Event ):void {
log( "Image load failed." );
}
function log( text:String ):void {
trace( text );
}