首页 > 代码库 > as3如何做出残影效果
as3如何做出残影效果
在页游中,时不时能看到人物做一些快速移动动作如冲刺时,有残影效果,强化了画面表现。实际人肉眼之所以能看到残影的效果,是因为观察到的物体会在人视线中残留几十毫秒时间,当运动物体运动太快时,人肉眼所见未能跟上物体运动速度,旧的物体影像未消失,物体已经移动到别的位置,就会产生残影效果。
实际游戏里物体的移动速度当然不可能这么快,但我们可以根据原理做出残影效果。用一张Bitmap专门draw运动物体,当物体移动时,并不把上一帧的bitmapData进行dispose,而是对bitmapData加上一层透明滤镜,然后再直接画出新的运动物体。每次enter_frame都如此操作,越是旧的bitmapData就会越变透明直至消失不见。残影效果就形成了。
private var bitmapData:BitmapData; private var bitmap:Bitmap; private var blur:BlurFilter; private var colorTransform:ColorTransform; private var origin:Point; private var ball:Sprite; private function configUI():void {
ball = new Sprite();
ball.graphics.beginFill(0x0000ff,1);
ball.graphics.drawCircle(10, 10, 10);
ball.graphics.endFill();
this.addChild(ball);
bitmapData = new BitmapData(this.stage.stageWidth, this.stage.stageHeight, true, 0x00000000); bitmap = new Bitmap(bitmapData); this.addChild(bitmap); //羽化效果 blur = new BlurFilter(1,1); //前三个参数设置rgb颜色通道,第四个参数设置透明度(影响残影持续效果) colorTransform = new ColorTransform(0.9,0.95,0.9,0.3); origin = new Point(0,0); this.addEventListener(Event.ENTER_FRAME, handler); } private function handler(e:Event):void { ball.x += 3; ball.y += 3; //在绘制新的图像之前应用滤镜到旧的图像。 残影效果 bitmapData.applyFilter(bitmapData,bitmapData.rect,origin,blur); bitmapData.colorTransform(bitmapData.rect, colorTransform); //绘制最新图像 bitmapData.draw(this.stage); }
残影效果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。