上面两张图片是拖影效果,拖出来每个影子叫残影,我暂时给他们这样命名。
制作拖影效果的方法
1,人物每移动一下,制作一张残影,放到人物后面一层。
类似如下代码
function onEnterFrameOrPlayAnim():void{
var fightGhost:FightGhost = new FightGhost(unitBody);//unitBody是人物的图片,bitmap类型
fightGhost.x = roleContianer.x;
addChildAt(fightGhost,getChildIndex(roleContianer));
}
2,制作残影类,注意下面的制作黑色滤镜的方法,如果想要其他颜色的残影,请修改colorMatrixFilter中的第5,10,15位置的参数,分别代表颜色的rgb值。
package
{
import flame.transitions.Easing;
import flame.transitions.Fade;
import flame.transitions.FrameTransitionManager;
import flame.transitions.Remove;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.filters.ColorMatrixFilter;
import flash.geom.Matrix;
public class FightGhost extends Sprite
{
//帧动画引擎
public var frameMonter:FrameTransitionManager;
public function FightGhost(bm:Bitmap)
{
super();
//建立bitmap放到里面
var bitmap:Bitmap = new Bitmap;
bitmap.bitmapData = bm.bitmapData;
//增加黑色滤镜 将所有像素变成黑色。
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter([0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0]);
filters = [colorFilter];
//设置位置,反转
bitmap.x = bm.x;
bitmap.y = bm.y;
bitmap.scaleX = bm.scaleX;
addChild(bitmap);
frameMonter = new FrameTransitionManager(this);//让影子逐渐消失
frameMonter.addTransition(new Fade(10,Easing.LINEAR,0));
frameMonter.addTransition(new Remove());
frameMonter.start();
}
}
}