※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


forked from : matsumos's BetweenAS3でビデオ的なコントロールを試してみる [diff(559)]

FORKED
  1. // forked from matsumos's Video like controls with BetweenAS3
  2. /**
  3.  * forked from matsumos's BetweenAS3でビデオ的なコントロールを試してみる
  4.  * forked from rsakane's BetweenAS3.serial(), reverse()の練習
  5.  * トゥイーンのサンプルとしてお借りしました
  6.  * http://wonderfl.kayac.com/code/f74dab73e022acb75c05a84fa73514322e85ae96
  7.  *
  8.  * よりBetweenAS3の素晴らしさをおわかりいただくために、シークバーをドラッグできるようにしました。
  9.  */
  10. package
  11. {
  12.     import flash.display.*;
  13.     import flash.events.*;
  14.     import flash.text.*;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     import flash.geom.Matrix;
  18.     import flash.net.URLRequest;
  19.     import flash.system.Security;
  20.     import flash.system.LoaderContext;
  21.     import org.libspark.betweenas3.BetweenAS3;
  22.     import org.libspark.betweenas3.easing.*;
  23.     import org.libspark.betweenas3.tweens.ITween;
  24.     
  25.     [SWF(width="465", height="465", frameRate="30", backgroundColor="0x000000")]
  26.     
  27.     public class Main extends Sprite
  28.     {
  29.         private const SIZE:int = 30;
  30.         
  31.         public function Main()
  32.         {
  33.             Security.loadPolicyFile("http://farm3.static.flickr.com/crossdomain.xml");
  34.             var loader:Loader = new Loader();
  35.             loader.contentLoaderInfo.addEventListener(Event.INIT, init);
  36.             loader.load(new URLRequest("http://farm3.static.flickr.com/2315/3530328081_38167d20dd.jpg"), new LoaderContext(true));
  37.         }
  38.         private function init(event:Event):void
  39.         {
  40.             var loader:Loader = event.currentTarget.loader;
  41.             var bd:BitmapData = new BitmapData(loader.width, loader.height, false);
  42.             bd.draw(loader);
  43.             
  44.             var delay:Number = 0.0;
  45.             var count:Number = 0.0;
  46.             var tweens:Array = [];
  47.             for (var y:int = 0; y < bd.height; y += SIZE)
  48.             {
  49.                 count += 0.1;
  50.                 delay = count;
  51.                 for (var x:int = 0; x < bd.width; x += SIZE)
  52.                 {
  53.                     var yy:int = (bd.height - 1 - y >= SIZE) ? SIZE : bd.height - 1 - y;
  54.                     var xx:int = (bd.width  - 1 - x >= SIZE) ? SIZE : bd.width  - 1 - x;
  55.                     
  56.                     if (xx <= 0 || yy <= 0continue;
  57.                     var bitmap:Bitmap = new Bitmap(clipping(bd, x, y, xx, yy, 1.0));
  58.                     bitmap.x = x;
  59.                     bitmap.y = y;
  60.                     addChild(bitmap);
  61.                     tweens.push(BetweenAS3.delay(BetweenAS3.tween(bitmap, { rotation:360} , null7.7, Back.easeInOut),delay) as ITween);
  62.                     
  63.                     delay += 0.1;
  64.                     }
  65.             }
  66.             var t:ITween = BetweenAS3.parallel.apply(null, tweens);;
  67.             var ctrlpanel:ControlPanel = new ControlPanel(t);
  68.             ctrlpanel.y = 400;
  69.             addChild(ctrlpanel);
  70.         }
  71.         private function clipping(bd:BitmapData, x1:int, y1:int, width:int, height:int, scale:Number):BitmapData
  72.         {
  73.             var matrix:Matrix = new Matrix();
  74.             matrix.translate( -x1, -y1);
  75.             matrix.scale(scale, scale);
  76.             var destbd:BitmapData = new BitmapData(width * scale, height * scale, false);
  77.             destbd.draw(bd, matrix);
  78.     
  79.             return destbd;
  80.         }
  81.     }
  82. }
  83. import flash.display.*;
  84. import flash.text.*;
  85. import flash.events.*;
  86. import org.libspark.betweenas3.BetweenAS3;
  87. import org.libspark.betweenas3.easing.*;
  88. import org.libspark.betweenas3.tweens.ITween;
  89. import org.libspark.betweenas3.events.TweenEvent;
  90.     
  91. class ControlPanel extends Sprite
  92. {
  93.     
  94.     private var playBtn:Sprite;
  95.     private var fastPlayBtn:Sprite;
  96.     private var reverseBtn:Sprite;
  97.     private var fastReverseBtn:Sprite;
  98.     private var pauseBtn:Sprite;
  99.     private var seekBar:Sprite;
  100.     private var seekBase:Sprite;
  101.     private var posText:TextField;
  102.     private var durText:TextField;
  103.     private var _seekpos:Number;
  104.     private var _t:ITween;
  105.     private var naturalT:ITween;
  106.     private var reversed:Boolean = false;
  107.     private var scaled:Boolean = false;
  108.     private var tp:Number;
  109.     private const SCALE_NUM:Number = 3.5;
  110.     private var _playinged:Boolean = false;
  111.                                 
  112.     public function ControlPanel(t:ITween)
  113.     {
  114.         var bg:Sprite = new Sprite();
  115.         bg.graphics.beginFill(0xFFFFFF);
  116.         bg.graphics.drawRect(0046590);
  117.         bg.graphics.endFill();
  118.         bg.y = -25;
  119.         addChild(bg);
  120.               
  121.         _t = t;
  122.         naturalT = t;
  123.         
  124.         var timeText:TextField = new TextField();
  125.         timeText.x = 10;
  126.         timeText.y = -5;
  127.         timeText.text = "TIME";
  128.         addChild(timeText);
  129.         
  130.         posText = new TextField();
  131.         posText.autoSize = TextFieldAutoSize.LEFT;
  132.         posText.x = 10;
  133.         posText.y = 10;
  134.         addChild(posText);
  135.         
  136.         durText = new TextField();
  137.         durText.autoSize = TextFieldAutoSize.LEFT;
  138.         durText.x = 50;
  139.         durText.y = 10;
  140.         addChild(durText);
  141.         
  142.         playBtn = new Sprite();
  143.         playBtn.graphics.beginFill(0xFF00FF);
  144.         playBtn.graphics.moveTo(00);
  145.         playBtn.graphics.lineTo(3020);
  146.         playBtn.graphics.lineTo(040);
  147.         playBtn.graphics.endFill();
  148.         playBtn.buttonMode = true;
  149.         addChild(playBtn);
  150.         playBtn.x = 305;
  151.         var playText:TextField = new TextField();
  152.         playText.text = "Play";
  153.         addChild(playText);
  154.         playText.x = playBtn.x;
  155.         playText.y = playBtn.y + 40;
  156.         
  157.         fastPlayBtn = new Sprite();
  158.         fastPlayBtn.graphics.beginFill(0xFF00FF);
  159.         fastPlayBtn.graphics.moveTo(00);
  160.         fastPlayBtn.graphics.lineTo(2020);
  161.         fastPlayBtn.graphics.lineTo(040);
  162.         fastPlayBtn.graphics.moveTo(200);
  163.         fastPlayBtn.graphics.lineTo(4020);
  164.         fastPlayBtn.graphics.lineTo(2040);
  165.         fastPlayBtn.graphics.endFill();
  166.         fastPlayBtn.buttonMode = true;
  167.         addChild(fastPlayBtn);
  168.         fastPlayBtn.x = 350;
  169.         var fastPlayText:TextField = new TextField();
  170.         fastPlayText.text = "FastPlay";
  171.         addChild(fastPlayText);
  172.         fastPlayText.x = fastPlayBtn.x;
  173.         fastPlayText.y = fastPlayBtn.y+40;
  174.         
  175.         reverseBtn = new Sprite();
  176.         reverseBtn.graphics.beginFill(0xFF00FF);
  177.         reverseBtn.graphics.moveTo(400);
  178.         reverseBtn.graphics.lineTo(1020);
  179.         reverseBtn.graphics.lineTo(4040);
  180.         reverseBtn.graphics.endFill();
  181.         reverseBtn.buttonMode = true;
  182.         addChild(reverseBtn);    
  183.         reverseBtn.x = 195;
  184.         var reverseText:TextField = new TextField();
  185.         reverseText.text = "Reverse";
  186.         addChild(reverseText);
  187.         reverseText.x = reverseBtn.x;
  188.         reverseText.y = reverseBtn.y + 40;
  189.         
  190.         fastReverseBtn = new Sprite();
  191.         fastReverseBtn.graphics.beginFill(0xFF00FF);
  192.         fastReverseBtn.graphics.moveTo(200);
  193.         fastReverseBtn.graphics.lineTo(0020);
  194.         fastReverseBtn.graphics.lineTo(2040);
  195.         fastReverseBtn.graphics.moveTo(400);
  196.         fastReverseBtn.graphics.lineTo(2020);
  197.         fastReverseBtn.graphics.lineTo(4040);
  198.         fastReverseBtn.graphics.endFill();
  199.         fastReverseBtn.buttonMode = true;
  200.         addChild(fastReverseBtn);
  201.         fastReverseBtn.x = 150;
  202.         var fastReverseText:TextField = new TextField();
  203.         fastReverseText.text = "FastRev";
  204.         addChild(fastReverseText);
  205.         fastReverseText.x = fastReverseBtn.x;
  206.         fastReverseText.y = fastReverseBtn.y+40;
  207.         
  208.         pauseBtn = new Sprite();
  209.         pauseBtn.graphics.beginFill(0xFF00FF);
  210.         pauseBtn.graphics.moveTo(00);
  211.         pauseBtn.graphics.lineTo(150);
  212.         pauseBtn.graphics.lineTo(1540);
  213.         pauseBtn.graphics.lineTo(040);
  214.         pauseBtn.graphics.moveTo(250);
  215.         pauseBtn.graphics.lineTo(400);
  216.         pauseBtn.graphics.lineTo(4040);
  217.         pauseBtn.graphics.lineTo(2540);
  218.         pauseBtn.graphics.endFill();
  219.         pauseBtn.buttonMode = true;
  220.         addChild(pauseBtn);
  221.         pauseBtn.x = 250;
  222.         var pauseText:TextField = new TextField();
  223.         pauseText.text = "Pause";
  224.         addChild(pauseText);
  225.         pauseText.x = pauseBtn.x;
  226.         pauseText.y = pauseBtn.y+40;
  227.         
  228.         seekBase = new Sprite();
  229.         seekBase.graphics.beginFill(0xCCCCCC);
  230.         seekBase.graphics.drawRect(0,0,400,10);
  231.         seekBase.x = 20;
  232.         seekBase.y = -20;
  233.         seekBase.buttonMode = true;
  234.         addChild(seekBase);
  235.         
  236.         seekBar = new Sprite();
  237.         seekBar.graphics.beginFill(0xFF00FF);
  238.         seekBar.graphics.drawRect(0,0,400,10);
  239.         seekBar.x = 20;
  240.         seekBar.y = -20;
  241.         seekBar.mouseEnabled = false;        
  242.         addChild(seekBar);
  243.         playBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  244.             function():void {
  245.                 
  246.                 if (!reversed && !scaled && _t.isPlaying) {
  247.             return;
  248.             }
  249.                 if (_t.isPlaying) {
  250.                     _t.stop();
  251.                 }
  252.                 
  253.                 if (!reversed){
  254.                     tp = _t.position;
  255.                 }
  256.                 else {
  257.                     tp = _t.duration - _t.position;
  258.                 }
  259.                 
  260.                 if (scaled){
  261.                     tp = tp * SCALE_NUM;
  262.                 }
  263.                 
  264.                 _t = naturalT;
  265.                 
  266.                 reversed = false;
  267.                 scaled = false;
  268.                 
  269.                 _t.gotoAndPlay(tp);
  270.                 
  271.                 }
  272.         );
  273.         
  274.        fastPlayBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  275.             function():void {
  276.                 if (_t.isPlaying) {
  277.                     _t.stop();
  278.                 }
  279.                 
  280.                 if (!reversed){
  281.                     tp = _t.position;
  282.                 }
  283.                 else {
  284.                     tp = _t.duration - _t.position;
  285.                 }
  286.                 
  287.                 if (!scaled){
  288.                     tp = tp / SCALE_NUM;
  289.                 }
  290.                 
  291.                 _t = BetweenAS3.scale(naturalT, 1 / SCALE_NUM);
  292.                 reversed = false;
  293.                 scaled = true;
  294.                 
  295.                 _t.gotoAndPlay(tp);
  296.             }
  297.         );
  298.         
  299.         reverseBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  300.             function():void {
  301.                 if (_t.isPlaying) {
  302.                     _t.stop();
  303.                 }
  304.                 
  305.                 if (!reversed){
  306.                     tp = _t.duration - _t.position;
  307.                 }
  308.                 else {
  309.                     tp = _t.position;
  310.                 }
  311.                 
  312.                 if (scaled){
  313.                     tp = tp * SCALE_NUM;
  314.                 }
  315.                 
  316.                 _t = BetweenAS3.reverse(naturalT);
  317.                 
  318.                 reversed = true;
  319.                 scaled = false;
  320.                 
  321.                 _t.gotoAndPlay(tp);
  322.             }
  323.         );
  324.         
  325.         fastReverseBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  326.             function():void {
  327.                 if (_t.isPlaying) {
  328.                     _t.stop();
  329.                 }
  330.                 
  331.                 if (!reversed){
  332.                     tp = _t.duration - _t.position;
  333.                 }
  334.                 else {
  335.                     tp = _t.position;
  336.                 }
  337.                 
  338.                 if (!scaled){
  339.                     tp = tp / SCALE_NUM;
  340.                 }
  341.                 
  342.                 _t = BetweenAS3.reverse(BetweenAS3.scale(naturalT, 1 / SCALE_NUM));
  343.                 
  344.                 reversed = true;
  345.                 scaled = true;
  346.                 
  347.                 _t.gotoAndPlay(tp);
  348.             }
  349.         );
  350.                 
  351.         pauseBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  352.             function():void {
  353.                 if (_t.isPlaying) {
  354.                     _t.stop();
  355.                 }
  356.             }
  357.         );
  358.         
  359.         seekBase.addEventListener(MouseEvent.MOUSE_DOWN,
  360.             function():void {                  
  361.                 if (_t.isPlaying) {
  362.                     _t.stop();
  363.                     _playinged = true;
  364.                 }
  365.                 addEventListener(Event.ENTER_FRAME,startDragSeek);
  366.                 stage.addEventListener(MouseEvent.MOUSE_UP,stopDragSeek);
  367.             }
  368.         );
  369.         
  370.         addEventListener(Event.ENTER_FRAME,
  371.             function():void {
  372.             
  373.                 var tpos:Number;
  374.                 
  375.                 if (!reversed) {
  376.                     tpos = _t.position;
  377.                 }
  378.                 else {
  379.                     tpos = _t.duration - _t.position;
  380.                 }
  381.                 
  382.                 if (scaled){
  383.                     tpos = tpos * SCALE_NUM;
  384.                 }
  385.                 posText.text = tpos.toString().substr(04);
  386.                 seekBar.width = tpos / naturalT.duration * seekBase.width;
  387.             }
  388.         );
  389.         durText.text = _t.duration.toString().substr(04);
  390.     }
  391.     
  392.     private function startDragSeek(e:Event):void
  393.     {
  394.         var mousex:Number = seekBase.mouseX < 0 ? 0 : seekBase.mouseX < seekBase.width ? seekBase.mouseX : seekBase.width;
  395.         
  396.         _seekpos = mousex / seekBase.width * naturalT.duration;
  397.         
  398.         if (scaled){
  399.             _seekpos = _seekpos/ SCALE_NUM;
  400.         }
  401.         
  402.         if (reversed) {
  403.             _seekpos = _t.duration - _seekpos;
  404.         }
  405.         _t.gotoAndStop(_seekpos);
  406.     }
  407.     
  408.     private function stopDragSeek(e:Event):void
  409.     {
  410.         removeEventListener(Event.ENTER_FRAME,startDragSeek);  
  411.         stage.removeEventListener(MouseEvent.MOUSE_UP,stopDragSeek);
  412.         
  413.         _t.gotoAndStop(_seekpos);
  414.     }
  415. }
noswf
  1. // forked from matsumos's Video like controls with BetweenAS3
  2. /**
  3.  * forked from matsumos's BetweenAS3でビデオ的なコントロールを試してみる
  4.  * forked from rsakane's BetweenAS3.serial(), reverse()の練習
  5.  * トゥイーンのサンプルとしてお借りしました
  6.  * http://wonderfl.kayac.com/code/f74dab73e022acb75c05a84fa73514322e85ae96
  7.  *
  8.  * よりBetweenAS3の素晴らしさをおわかりいただくために、シークバーをドラッグできるようにしました。
  9.  */
  10. package
  11. {
  12.     import flash.display.*;
  13.     import flash.events.*;
  14.     import flash.text.*;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     import flash.geom.Matrix;
  18.     import flash.net.URLRequest;
  19.     import flash.system.Security;
  20.     import flash.system.LoaderContext;
  21.     import org.libspark.betweenas3.BetweenAS3;
  22.     import org.libspark.betweenas3.easing.*;
  23.     import org.libspark.betweenas3.tweens.ITween;
  24.     
  25.     [SWF(width="465", height="465", frameRate="30", backgroundColor="0x000000")]
  26.     
  27.     public class Main extends Sprite
  28.     {
  29.         private const SIZE:int = 30;
  30.         
  31.         public function Main()
  32.         {
  33.             Security.loadPolicyFile("http://farm3.static.flickr.com/crossdomain.xml");
  34.             var loader:Loader = new Loader();
  35.             loader.contentLoaderInfo.addEventListener(Event.INIT, init);
  36.             loader.load(new URLRequest("http://farm3.static.flickr.com/2315/3530328081_38167d20dd.jpg"), new LoaderContext(true));
  37.         }
  38.         private function init(event:Event):void
  39.         {
  40.             var loader:Loader = event.currentTarget.loader;
  41.             var bd:BitmapData = new BitmapData(loader.width, loader.height, false);
  42.             bd.draw(loader);
  43.             
  44.             var delay:Number = 0.0;
  45.             var count:Number = 0.0;
  46.             var tweens:Array = [];
  47.             for (var y:int = 0; y < bd.height; y += SIZE)
  48.             {
  49.                 count += 0.1;
  50.                 delay = count;
  51.                 for (var x:int = 0; x < bd.width; x += SIZE)
  52.                 {
  53.                     var yy:int = (bd.height - 1 - y >= SIZE) ? SIZE : bd.height - 1 - y;
  54.                     var xx:int = (bd.width  - 1 - x >= SIZE) ? SIZE : bd.width  - 1 - x;
  55.                     
  56.                     if (xx <= 0 || yy <= 0continue;
  57.                     var bitmap:Bitmap = new Bitmap(clipping(bd, x, y, xx, yy, 1.0));
  58.                     bitmap.x = x;
  59.                     bitmap.y = y;
  60.                     addChild(bitmap);
  61.                     tweens.push(BetweenAS3.delay(BetweenAS3.tween(bitmap, { y:bitmap.y - 60, alpha:0} , null1.7, Bounce.easeInOut),delay) as ITween);
  62.                     
  63.                     delay += 0.1;
  64.                     }
  65.             }
  66.             var t:ITween = BetweenAS3.parallel.apply(null, tweens);;
  67.             var ctrlpanel:ControlPanel = new ControlPanel(t);
  68.             ctrlpanel.y = 400;
  69.             addChild(ctrlpanel);
  70.         }
  71.         private function clipping(bd:BitmapData, x1:int, y1:int, width:int, height:int, scale:Number):BitmapData
  72.         {
  73.             var matrix:Matrix = new Matrix();
  74.             matrix.translate( -x1, -y1);
  75.             matrix.scale(scale, scale);
  76.             var destbd:BitmapData = new BitmapData(width * scale, height * scale, false);
  77.             destbd.draw(bd, matrix);
  78.     
  79.             return destbd;
  80.         }
  81.     }
  82. }
  83. import flash.display.*;
  84. import flash.text.*;
  85. import flash.events.*;
  86. import org.libspark.betweenas3.BetweenAS3;
  87. import org.libspark.betweenas3.easing.*;
  88. import org.libspark.betweenas3.tweens.ITween;
  89. import org.libspark.betweenas3.events.TweenEvent;
  90.     
  91. class ControlPanel extends Sprite
  92. {
  93.     
  94.     private var playBtn:Sprite;
  95.     private var fastPlayBtn:Sprite;
  96.     private var reverseBtn:Sprite;
  97.     private var fastReverseBtn:Sprite;
  98.     private var pauseBtn:Sprite;
  99.     private var seekBar:Sprite;
  100.     private var seekBase:Sprite;
  101.     private var posText:TextField;
  102.     private var durText:TextField;
  103.     private var _seekpos:Number;
  104.     private var _t:ITween;
  105.     private var naturalT:ITween;
  106.     private var reversed:Boolean = false;
  107.     private var scaled:Boolean = false;
  108.     private var tp:Number;
  109.     private const SCALE_NUM:Number = 3.5;
  110.     private var _playinged:Boolean = false;
  111.                                 
  112.     public function ControlPanel(t:ITween)
  113.     {
  114.         var bg:Sprite = new Sprite();
  115.         bg.graphics.beginFill(0xFFFFFF);
  116.         bg.graphics.drawRect(0046590);
  117.         bg.graphics.endFill();
  118.         bg.y = -25;
  119.         addChild(bg);
  120.               
  121.         _t = t;
  122.         naturalT = t;
  123.         
  124.         var timeText:TextField = new TextField();
  125.         timeText.x = 10;
  126.         timeText.y = -5;
  127.         timeText.text = "TIME";
  128.         addChild(timeText);
  129.         
  130.         posText = new TextField();
  131.         posText.autoSize = TextFieldAutoSize.LEFT;
  132.         posText.x = 10;
  133.         posText.y = 10;
  134.         addChild(posText);
  135.         
  136.         durText = new TextField();
  137.         durText.autoSize = TextFieldAutoSize.LEFT;
  138.         durText.x = 50;
  139.         durText.y = 10;
  140.         addChild(durText);
  141.         
  142.         playBtn = new Sprite();
  143.         playBtn.graphics.beginFill(0xFF00FF);
  144.         playBtn.graphics.moveTo(00);
  145.         playBtn.graphics.lineTo(3020);
  146.         playBtn.graphics.lineTo(040);
  147.         playBtn.graphics.endFill();
  148.         playBtn.buttonMode = true;
  149.         addChild(playBtn);
  150.         playBtn.x = 305;
  151.         var playText:TextField = new TextField();
  152.         playText.text = "Play";
  153.         addChild(playText);
  154.         playText.x = playBtn.x;
  155.         playText.y = playBtn.y + 40;
  156.         
  157.         fastPlayBtn = new Sprite();
  158.         fastPlayBtn.graphics.beginFill(0xFF00FF);
  159.         fastPlayBtn.graphics.moveTo(00);
  160.         fastPlayBtn.graphics.lineTo(2020);
  161.         fastPlayBtn.graphics.lineTo(040);
  162.         fastPlayBtn.graphics.moveTo(200);
  163.         fastPlayBtn.graphics.lineTo(4020);
  164.         fastPlayBtn.graphics.lineTo(2040);
  165.         fastPlayBtn.graphics.endFill();
  166.         fastPlayBtn.buttonMode = true;
  167.         addChild(fastPlayBtn);
  168.         fastPlayBtn.x = 350;
  169.         var fastPlayText:TextField = new TextField();
  170.         fastPlayText.text = "FastPlay";
  171.         addChild(fastPlayText);
  172.         fastPlayText.x = fastPlayBtn.x;
  173.         fastPlayText.y = fastPlayBtn.y+40;
  174.         
  175.         reverseBtn = new Sprite();
  176.         reverseBtn.graphics.beginFill(0xFF00FF);
  177.         reverseBtn.graphics.moveTo(400);
  178.         reverseBtn.graphics.lineTo(1020);
  179.         reverseBtn.graphics.lineTo(4040);
  180.         reverseBtn.graphics.endFill();
  181.         reverseBtn.buttonMode = true;
  182.         addChild(reverseBtn);    
  183.         reverseBtn.x = 195;
  184.         var reverseText:TextField = new TextField();
  185.         reverseText.text = "Reverse";
  186.         addChild(reverseText);
  187.         reverseText.x = reverseBtn.x;
  188.         reverseText.y = reverseBtn.y + 40;
  189.         
  190.         fastReverseBtn = new Sprite();
  191.         fastReverseBtn.graphics.beginFill(0xFF00FF);
  192.         fastReverseBtn.graphics.moveTo(200);
  193.         fastReverseBtn.graphics.lineTo(0020);
  194.         fastReverseBtn.graphics.lineTo(2040);
  195.         fastReverseBtn.graphics.moveTo(400);
  196.         fastReverseBtn.graphics.lineTo(2020);
  197.         fastReverseBtn.graphics.lineTo(4040);
  198.         fastReverseBtn.graphics.endFill();
  199.         fastReverseBtn.buttonMode = true;
  200.         addChild(fastReverseBtn);
  201.         fastReverseBtn.x = 150;
  202.         var fastReverseText:TextField = new TextField();
  203.         fastReverseText.text = "FastRev";
  204.         addChild(fastReverseText);
  205.         fastReverseText.x = fastReverseBtn.x;
  206.         fastReverseText.y = fastReverseBtn.y+40;
  207.         
  208.         pauseBtn = new Sprite();
  209.         pauseBtn.graphics.beginFill(0xFF00FF);
  210.         pauseBtn.graphics.moveTo(00);
  211.         pauseBtn.graphics.lineTo(150);
  212.         pauseBtn.graphics.lineTo(1540);
  213.         pauseBtn.graphics.lineTo(040);
  214.         pauseBtn.graphics.moveTo(250);
  215.         pauseBtn.graphics.lineTo(400);
  216.         pauseBtn.graphics.lineTo(4040);
  217.         pauseBtn.graphics.lineTo(2540);
  218.         pauseBtn.graphics.endFill();
  219.         pauseBtn.buttonMode = true;
  220.         addChild(pauseBtn);
  221.         pauseBtn.x = 250;
  222.         var pauseText:TextField = new TextField();
  223.         pauseText.text = "Pause";
  224.         addChild(pauseText);
  225.         pauseText.x = pauseBtn.x;
  226.         pauseText.y = pauseBtn.y+40;
  227.         
  228.         seekBase = new Sprite();
  229.         seekBase.graphics.beginFill(0xCCCCCC);
  230.         seekBase.graphics.drawRect(0,0,400,10);
  231.         seekBase.x = 20;
  232.         seekBase.y = -20;
  233.         seekBase.buttonMode = true;
  234.         addChild(seekBase);
  235.         
  236.         seekBar = new Sprite();
  237.         seekBar.graphics.beginFill(0xFF00FF);
  238.         seekBar.graphics.drawRect(0,0,400,10);
  239.         seekBar.x = 20;
  240.         seekBar.y = -20;
  241.         seekBar.mouseEnabled = false;        
  242.         addChild(seekBar);
  243.         playBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  244.             function():void {
  245.                 
  246.                 if (!reversed && !scaled && _t.isPlaying) {
  247.             return;
  248.             }
  249.                 if (_t.isPlaying) {
  250.                     _t.stop();
  251.                 }
  252.                 
  253.                 if (!reversed){
  254.                     tp = _t.position;
  255.                 }
  256.                 else {
  257.                     tp = _t.duration - _t.position;
  258.                 }
  259.                 
  260.                 if (scaled){
  261.                     tp = tp * SCALE_NUM;
  262.                 }
  263.                 
  264.                 _t = naturalT;
  265.                 
  266.                 reversed = false;
  267.                 scaled = false;
  268.                 
  269.                 _t.gotoAndPlay(tp);
  270.                 
  271.                 }
  272.         );
  273.         
  274.        fastPlayBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  275.             function():void {
  276.                 if (_t.isPlaying) {
  277.                     _t.stop();
  278.                 }
  279.                 
  280.                 if (!reversed){
  281.                     tp = _t.position;
  282.                 }
  283.                 else {
  284.                     tp = _t.duration - _t.position;
  285.                 }
  286.                 
  287.                 if (!scaled){
  288.                     tp = tp / SCALE_NUM;
  289.                 }
  290.                 
  291.                 _t = BetweenAS3.scale(naturalT, 1 / SCALE_NUM);
  292.                 reversed = false;
  293.                 scaled = true;
  294.                 
  295.                 _t.gotoAndPlay(tp);
  296.             }
  297.         );
  298.         
  299.         reverseBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  300.             function():void {
  301.                 if (_t.isPlaying) {
  302.                     _t.stop();
  303.                 }
  304.                 
  305.                 if (!reversed){
  306.                     tp = _t.duration - _t.position;
  307.                 }
  308.                 else {
  309.                     tp = _t.position;
  310.                 }
  311.                 
  312.                 if (scaled){
  313.                     tp = tp * SCALE_NUM;
  314.                 }
  315.                 
  316.                 _t = BetweenAS3.reverse(naturalT);
  317.                 
  318.                 reversed = true;
  319.                 scaled = false;
  320.                 
  321.                 _t.gotoAndPlay(tp);
  322.             }
  323.         );
  324.         
  325.         fastReverseBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  326.             function():void {
  327.                 if (_t.isPlaying) {
  328.                     _t.stop();
  329.                 }
  330.                 
  331.                 if (!reversed){
  332.                     tp = _t.duration - _t.position;
  333.                 }
  334.                 else {
  335.                     tp = _t.position;
  336.                 }
  337.                 
  338.                 if (!scaled){
  339.                     tp = tp / SCALE_NUM;
  340.                 }
  341.                 
  342.                 _t = BetweenAS3.reverse(BetweenAS3.scale(naturalT, 1 / SCALE_NUM));
  343.                 
  344.                 reversed = true;
  345.                 scaled = true;
  346.                 
  347.                 _t.gotoAndPlay(tp);
  348.             }
  349.         );
  350.                 
  351.         pauseBtn.addEventListener(MouseEvent.MOUSE_DOWN,
  352.             function():void {
  353.                 if (_t.isPlaying) {
  354.                     _t.stop();
  355.                 }
  356.             }
  357.         );
  358.         
  359.         seekBase.addEventListener(MouseEvent.MOUSE_DOWN,
  360.             function():void {                  
  361.                 if (_t.isPlaying) {
  362.                     _t.stop();
  363.                     _playinged = true;
  364.                 }
  365.                 addEventListener(Event.ENTER_FRAME,startDragSeek);
  366.                 stage.addEventListener(MouseEvent.MOUSE_UP,stopDragSeek);
  367.             }
  368.         );
  369.         
  370.         addEventListener(Event.ENTER_FRAME,
  371.             function():void {
  372.             
  373.                 var tpos:Number;
  374.                 
  375.                 if (!reversed) {
  376.                     tpos = _t.position;
  377.                 }
  378.                 else {
  379.                     tpos = _t.duration - _t.position;
  380.                 }
  381.                 
  382.                 if (scaled){
  383.                     tpos = tpos * SCALE_NUM;
  384.                 }
  385.                 posText.text = tpos.toString().substr(04);
  386.                 seekBar.width = tpos / naturalT.duration * seekBase.width;
  387.             }
  388.         );
  389.         durText.text = _t.duration.toString().substr(04);
  390.     }
  391.     
  392.     private function startDragSeek(e:Event):void
  393.     {
  394.         var mousex:Number = seekBase.mouseX < 0 ? 0 : seekBase.mouseX < seekBase.width ? seekBase.mouseX : seekBase.width;
  395.         
  396.         _seekpos = mousex / seekBase.width * naturalT.duration;
  397.         
  398.         if (scaled){
  399.             _seekpos = _seekpos/ SCALE_NUM;
  400.         }
  401.         
  402.         if (reversed) {
  403.             _seekpos = _t.duration - _seekpos;
  404.         }
  405.         _t.gotoAndStop(_seekpos);
  406.     }
  407.     
  408.     private function stopDragSeek(e:Event):void
  409.     {
  410.         removeEventListener(Event.ENTER_FRAME,startDragSeek);  
  411.         stage.removeEventListener(MouseEvent.MOUSE_UP,stopDragSeek);
  412.         
  413.         _t.gotoAndStop(_seekpos);
  414.     }
  415. }
noswf
Get Adobe Flash Player