package { import flash.display.Sprite; public class ASDeferredTest extends Sprite { public function ASDeferredTest() { var w1:int = 1; var w2:int = 2; var w3:int = 5; var d:Object = {}; ASDeferred.define( d ); d.next( function( elapsed:Number ):void { trace("wait: " + w1 ); }). wait( w1 ). next( function( elapsed:Number ):void { trace("elapsed1: " + elapsed ); }). loop( {begin:1, end:10, step:1}, function( n:int, o:Object ):ASDeferred { trace("loop: " + n + " of " + o.end ); return ASDeferred.wait( 0.05 ); }). next( function( elapsed:Number ):void { trace("wait: " + w2 ); }). wait( w2 ). next( function( elapsed:Number ):void { trace("elapsed2: " + elapsed ); }). next( function():void { ASDeferred.parallel([ ASDeferred.loop( 5, function( n:int, o:Object ):ASDeferred { trace( n ); return ASDeferred.wait( 0.1 ); }), ASDeferred.loop( 5, function( n:int, o:Object ):ASDeferred { trace( String.fromCharCode( 97 + n ) ); return ASDeferred.wait( 0.2 ); }), ASDeferred.next( function():ASDeferred { trace("wait: " + w3 ); return ASDeferred.wait( w3 ).next( function( wait:int ):String { trace("wait end: " + wait ); return "hoge"; }); }) ]). next( function( values:* ):* { trace("values[0]: " + values[0] ); trace("values[1]: " + values[1] ); trace("values[2]: " + values[2] ); }) }); /* // parallel を直列で定義できるようにした場合の書き方 parallel([ new ASDeferred().loop( 5, function( n:int, o:Object ):ASDeferred { trace( n ); return ASDeferred.wait( 0.1 ); }), new ASDeferred().loop( 5, function( n:int, o:Object ):ASDeferred { trace( String.fromCharCode( 97 + n ) ); return ASDeferred.wait( 0.2 ); }), new ASDeferred().next( function():ASDeferred { trace("wait: " + w3 ); return ASDeferred.wait( w3 ).next( function( wait:int ):String { trace("wait end: " + wait ); return "hoge"; }); }) ]). next( function( values:* ):void { trace("values[0]: " + values[0] ); trace("values[1]: " + values[1] ); trace("values[2]: " + values[2] ); }); //*/ } } }