flash on 2011-5-29
/**
* Copyright amdmamdma ( http://wonderfl.net/user/amdmamdma )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/cDnT
*/
package {
import flash.text.TextField;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.display.BitmapData;
import flash.events.Event;
import flash.display.Graphics;
import flash.display.Sprite;
public class FlashTest extends Sprite {
//---変数---
//エフェクトのy座標現在地
private var _y:Number = 0;
//y軸開始地点
private var nStartY:Number = 0;
//y軸終了地点
private var nStopY:Number = 0;
//走査方向
private var nSign:int = 1;
public function FlashTest() {
// write as3 code here..
//新規スプライト(素画像)生成
var mySprite:Sprite = new Sprite();
var myG:Graphics = mySprite.graphics;
for(var i:uint = 0; i < 1500; i ++){
myG.beginFill(Math.random() * 0xffffff);
myG.drawCircle(Math.random() * 200, Math.random() * 200, Math.random() * 5);
myG.endFill();
}
//元画像からBitmapData生成
var bd01:BitmapData = new BitmapData(mySprite.width, mySprite.height, true, 0x00000000);
bd01.draw(mySprite);
//エフェクト格納用
var bd02:BitmapData = new BitmapData(mySprite.width, mySprite.height, true, 0x00000000);
var bm02:Bitmap = new Bitmap(bd02);
addChild(bm02);
//test
var myText:TextField = new TextField();
addChild(myText);
//フレーム監視開始
addEventListener(Event.ENTER_FRAME, xFrame);
//イベント処理
function xFrame(e:Event):void{
//出現・消滅フラグの反転
if(_y >= mySprite.height){
_y = 0;
nSign *= -1;
}
//走査範囲の決定
if(nSign == 1){
//出現エフェクトの場合
nStartY = _y;
nStopY = mySprite.height;
}else{
//消滅エフェクトの場合
nStartY = 0;
nStopY = _y;
}
//y軸方向描画位置移動
_y ++;
//色情報を高さ1pxで取得
var rc:Rectangle = new Rectangle(0, _y, mySprite.width, 1);
//x軸方向走査(左端から右端まで)
for(var i:uint = 0; i < mySprite.width; i ++){
//y軸方向走査
for(var j:uint = nStartY; j < nStopY; j ++){
//元画像から色情報を取得して、エフェクト用BitmapDataにコピー
bd02.setPixel32(i, j, bd01.getPixel32(i, _y))
}
}
}
}
}
}