您的位置:首页 > 其它

令物体沿着指定路径运动[as3版]

2014-12-07 20:19 288 查看


*在舞台中有一个名为fk的movieclip和一个名为line的movieclip。



这是运行之后的效果。

以上程序按着原闪吧文章的思路用as3实现了一遍。

import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.geom.Matrix;
import crawlingtosea.methods.Tick;
import crawlingtosea.events.TickEvent;

var rect:Rectangle=line.getBounds(this);

var bitmapdata:BitmapData=new BitmapData(rect.width,rect.height,false,0);
bitmapdata.draw(line);

var pa:Array=pa?pa:[];

var w:uint=rect.width;
var h:uint=rect.height;

trace(rect);
for(var i:int=0;i<w;i++){
for(var j:int=0;j<h;j++){
if(bitmapdata.getPixel(i,j)==Number(0x660000))
{
pa.push(new Point(i+rect.x,j+rect.y));
}
}
}
trace(pa[0]);
fk.x=pa[0].x;
fk.y=pa[0].y;
//trace(bitmapdata.getPixel(0,50));
//trace(pa)
var tick:Tick=new Tick(1,10);
stage.addEventListener(MouseEvent.CLICK,onClick);
function onClick(e:MouseEvent):void{
stage.removeEventListener(MouseEvent.CLICK,onClick);
trace("onClick");
tick.addEventListener(TickEvent.TICK,onTick);
}

function onTick(e:Event):void{
fk.x=pa[0].x;
fk.y=pa[0].y;
pa.shift();

if(pa.length==0)
{
tick.stop();
trace("over");
}
}


其原理是利用bitmapdata的getpixel得到路径所有的坐标值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: