ASFox(nee)
-
用AS3.0写的 一个简单火焰效果及原理 - [AS3.0]
2008-02-04
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://asfox.blogbus.com/logs/14960436.html
原理:
1 获取整个舞台的BitmapData数据,放到__bm(声明的 BitmapData())里,
2 对__bm进行 BlurFilter 和 ColorMatrixFilter(可选 只是处理颜色) 处理,
3 在enterframe事件里 不断的重复步骤1,2。
//======================== code ========================
package{
import flash.display.*;
import flash.ui.Mouse;
import flash.events.*;
import flash.filters.* ;
import flash.geom.*;
public class main extends Sprite{
private var __bmd:BitmapData;
private var __bm:Bitmap;
private var __bf:BlurFilter;
private var __asfox_mc:MovieClip;
private var __cmf:ColorMatrixFilter;
public function main(){
__init();
__initEvt();
}
private function __init():void{
stage.frameRate = 35;
Mouse.hide();
__bmd= new BitmapData(550,400,true,0x000000)
__bm=new Bitmap(__bmd);
addChild(__bm);
__bf=new BlurFilter(7,10,3)
__asfox_mc=new asfox();
__asfox_mc.scaleX =0.4
__asfox_mc.scaleY =0.4
addChild(__asfox_mc);
__cmf=new ColorMatrixFilter([1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,0.8,0]);
}
private function __initEvt():void{
stage.addEventListener(MouseEvent.MOUSE_MOVE, __onMouseMove);
addEventListener(Event.ENTER_FRAME, __loop);
}
private function __loop(evt:Event):void{
__bmd.draw(this);
__bmd.applyFilter(__bmd,__bmd.rect,new Point(0,0),__bf);
__bmd.applyFilter(__bmd,__bmd.rect,new Point(0,0),__cmf);
__bmd.scroll(0,-6);
}private function __onMouseMove(evt:MouseEvent):void{
__asfox_mc.x=evt.stageX
__asfox_mc.y=evt.stageY
}
}
}随机文章:
error #2012: 无法实例化 SharedObject 类 2008-06-15《AS3.0 实现FLASH的动态链接库》的转发 2008-05-10外语阅读习惯养成器 2008-01-14抽时间做了个MP3&FLV 播放器 2008-01-12文档类如何操作舞台上的实例 2007-12-18
收藏到:Del.icio.us






