as3.0代码控制mc问题
我现有的mc是一个人在原地行走的动作,我想将这个mc用代码控制为向前移动,而且人物动作相应变动,该怎么实现呢?enter_frame时间是不是能够实现?求代码~~...
我现有的mc是一个人在原地行走的动作,我想将这个mc用代码控制为向前移动,而且人物动作相应变动,该怎么实现呢?enter_frame时间是不是能够实现?求代码~~
展开
2个回答
展开全部
stage.addEventListener(MouseEvent.MOUSE_DOWN,down);//监听鼠标按下
private function down(e:MouseEvent):void //执行函数
var speed:int=20;//移动速度
var x1:int=e.stageX-npc.x;//npc 是要移动的对象
var y1:int=e.stageY-npc.y;
var c:int=Math.floor(x1*x1+y1*y1);
var r:Number=Math.floor(Math.atan2(y1,x1)/Math.PI*180);//算出角度,这个是让你人物8方向4方向行走的
bu=Math.sqrt(c/speed);//鼠标点击到人物之间一共要走多少步;
speedx=x1/bu;
speedy=y1/bu;
private function up(e:MouseEvent=null):void
{
addEventListener(Event.ENTER_FRAME,en);
}
当鼠标放开的时候
private function en(e:event):void
{
bu--;
npc.x+=speedx;
npc.y+=speedy;
if(bu==0)
{
removeEventListener(Event.ENTER_FRAME,en);
}
}
这就任务移动过程了!希望对你有帮助,如果有不明白的地方可以继续问
private function down(e:MouseEvent):void //执行函数
var speed:int=20;//移动速度
var x1:int=e.stageX-npc.x;//npc 是要移动的对象
var y1:int=e.stageY-npc.y;
var c:int=Math.floor(x1*x1+y1*y1);
var r:Number=Math.floor(Math.atan2(y1,x1)/Math.PI*180);//算出角度,这个是让你人物8方向4方向行走的
bu=Math.sqrt(c/speed);//鼠标点击到人物之间一共要走多少步;
speedx=x1/bu;
speedy=y1/bu;
private function up(e:MouseEvent=null):void
{
addEventListener(Event.ENTER_FRAME,en);
}
当鼠标放开的时候
private function en(e:event):void
{
bu--;
npc.x+=speedx;
npc.y+=speedy;
if(bu==0)
{
removeEventListener(Event.ENTER_FRAME,en);
}
}
这就任务移动过程了!希望对你有帮助,如果有不明白的地方可以继续问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询