習作2009/01/18
1月 18, 2009 · Posted in Flash
Action Script
package
{
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.filters.*;
import flash.text.TextField;
import flash.events.*;
public class BallAnim extends Sprite
{
private var _Ball:BitmapData;
private var _Background:BitmapData;
private var _Background2:BitmapData;
private var _Background3:BitmapData;
private var total:uint=100;
private var _dA:Array;
private var _color:Array = new Array(0xFF0000, 0x00FF00,0x0000FF,0xFFFF00,0x00FFFF,0xFF00FF,0xFFFFFF);
private var _img:Array;
private var bf:BlurFilter = new BlurFilter(5, 5, 1);
public function BallAnim()
{
init();
}
private function init():void{
this._dA = new Array();
for(var i:uint=0; i<total; i++){
var dA = new Array();
dA[0] = Math.random()*stage.stageWidth;
dA[1] = Math.random()*stage.stageHeight;
dA[2] = Math.random()*6-3;
dA[3] = Math.random()*6-3;
dA[4] = Math.round(Math.random()*(_color.length-1));
this._dA[i] = dA;
}
/////////////////////////
this._img = new Array();
for(var s:uint=0; s<_color.length; s++){
var ball:Sprite = new Sprite();
ball.graphics.beginFill(_color[s]);
ball.graphics.drawCircle(5, 5, 5);
ball.graphics.endFill();
var ballBitmapData:BitmapData = new BitmapData(10,10,true,0x00FFFFFF);
ballBitmapData.draw(ball);
this._img[s] = ballBitmapData;
}
this._Background = new BitmapData(stage.stageWidth ,stage.stageHeight,true,0x00000000);
this._Background2 = new BitmapData(stage.stageWidth ,stage.stageHeight,true,0x00000000);
this._Background3 = new BitmapData(stage.stageWidth ,stage.stageHeight,true,0x00000000);
addChild( new Bitmap(this._Background3) );
addChild( new Bitmap(this._Background) );
addEventListener(Event.ENTER_FRAME, onAnim);
}
private function onAnim(e:Event):void{
this._Background.copyPixels(this._Background2, new Rectangle(0, 0, stage.stageWidth, stage.stageHeight), new Point(0, 0));
for(var i:uint=0; i<total; i++){
var pos:Point = new Point(this._dA[i][0], this._dA[i][1]);
this._Background.copyPixels(this._img[this._dA[i][4]], new Rectangle(0, 0, 10, 10), pos);
this._dA[i][0] += this._dA[i][2];
this._dA[i][1] += this._dA[i][3];
if(this._dA[i][0]<0 || this._dA[i][0] > stage.stageWidth) this._dA[i][2] = this._dA[i][2]*-1;
if(this._dA[i][1]<0 || this._dA[i][1] > stage.stageHeight) this._dA[i][3] = this._dA[i][3]*-1;
}
this._Background3.draw(this._Background);
this._Background3.applyFilter(this._Background3, this._Background3.rect, new Point(0,0), bf);
}
private function argbtohex(a:Number, r:Number, g:Number, b:Number):uint{
return (a<<24 | r<<16 | g<<8 | b)
}
}
}

