forked from: flash on 2009-10-7
♥0 |
Line 95 |
Modified 2014-08-01 13:42:32 |
MIT License
archived:2017-03-20 15:14:46
ActionScript3 source code
/**
* Copyright Takayuki.Yamazaki ( http://wonderfl.net/user/Takayuki.Yamazaki )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/urpl
*/
// forked from rao_monteiro's flash on 2009-10-7
package {
import flash.display.*;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Matrix;
import flash.events.*;
import flash.utils.Timer; import flash.filters.*;
import caurina.transitions.Tweener;
import caurina.transitions.properties.FilterShortcuts;
public class BitmapSnapShot extends MovieClip{
public var box:Sprite;
public var img:MovieClip;
private var bitmapimg:BitmapData;
private var pictures:Array = new Array();
private var total:uint;
private var count:uint = total;
private var posx:uint;
private var posy:uint;
private var minuteTimer:Timer;
private var cols:Number;
private var rows:Number;
private var bw:Number = 400;
private var bh:Number = 400;
public var snapSize:Number = 40;
public function BitmapSnapShot(){
init(snapSize);
}
public function init(snapSize:Number = 40):void{
FilterShortcuts.init();
box = new Sprite();
box.graphics.beginFill(0x003399);
box.graphics.drawRect(0,0,bw,bh)
box.graphics.endFill();
box.x = 20;
box.y = 20;
addChild(box);
cols = box.width / snapSize;
rows = box.height / snapSize;
total = cols * rows;
count = total;
bitmapimg = new BitmapData(snapSize, snapSize,false,0x000000);
for (var i:uint = 0; i < total; i++) {
img = new MovieClip();
addChild(img);
var myBitmap:Bitmap = new Bitmap(bitmapimg);
img.addChild(myBitmap);
pictures.push(img);
pictures[i].x = box.x + (i % cols) * snapSize;
pictures[i].y = box.y + Math.floor(i / rows) * snapSize;
pictures[i].alpha = .9;
bitmapimg.draw(box);
}
box.visible = false;
startAnimation();
}
private function startAnimation():void{
var calcTime:Number = total+1;
minuteTimer = new Timer(1,calcTime);
minuteTimer.addEventListener(TimerEvent.TIMER, Animate);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
minuteTimer.start();
}
private function ranDom(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min )) + min;
return randomNum;
}
private function Animate(e:TimerEvent):void {
if (count >= 0) {
var clip:MovieClip = pictures[count];
var rot:Number = ranDom(-200, 250);
Tweener.addTween(clip,{rotation:rot,time:5,transition:"linear"});
Tweener.addTween(clip,{ y:stage.stageHeight+80,time:1.5,transition:"easeInOutBack", transitionParams:{overshoot:0.1}});
Tweener.addTween(clip,{alpha:0,time:1,transition:"easeInQuart"});
Tweener.addTween(clip,{_Blur_blurX:10,_Blur_blurY:10,time:.2,transition:"linear"});
if(count <= 0){
AllDone();
}
count--;
}
}
public function onTimerComplete(event:TimerEvent):void{
minuteTimer.stop();
removeEventListener(TimerEvent.TIMER, Animate);
removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
}
private function AllDone():void{
count = 0;
total = 0;
rows = 0;
cols = 0;
pictures = [];
dispatchEvent(new Event("all done animation"));
}
}
}