flash as3.0问题,如何让mc停止移动,
a是一个mc,b是一个mc,b在a里面,现在a向左移动,b向右移动,当a停下来的时候,b运动到a的右边缘再停止,如何代码?我试了试,每次b都超出a右边界后再停下,查了查,...
a是一个mc,b是一个mc,b在a里面,现在a向左移动,b向右移动,当a停下来的时候,b运动到a的右边缘再停止,如何代码?我试了试,每次b都超出a右边界后再停下,查了查,可能是局部坐标的问题,然后我把b转换成全局坐标,
var ePoint:Point = new Point(a.b.x,a.b.y);
a.localToGlobal(b).x;
可是转换后,测试说为定义b,哪里出错了呢,还是上面的代码写错了,如何让b停在a的右边! 展开
var ePoint:Point = new Point(a.b.x,a.b.y);
a.localToGlobal(b).x;
可是转换后,测试说为定义b,哪里出错了呢,还是上面的代码写错了,如何让b停在a的右边! 展开
3个回答
展开全部
首先,你代码报错,是因为你的
a.localToGlobal(b).x;中,不存在b,而应该是a.b
再者,你转换后,计算出的坐标也是舞台的坐标,还需要将坐标再转回相对a的才能直接对b进行设置,这样显得麻烦
“当a停下来的时候,b运动到a的右边缘再停止”,这一句是否意味着,如果a一直运动的话,b相对a不动还是,b一直在运动?b做如何的运动?
描述的效果不是很清晰,故无法针对你的效果作调整。
b运动到a的边缘停止,如果单纯是b相对a的运动,那么可以直接无视a的运动状态,则
(a在舞台上)
if(!this.speed){
this.speed = 10;//定义了移动速度
}
if(!this.a_width){
this.a_width = a.width;//定义了a的右边,注意a.width
}
this.addEventListener(Event.ENTER_FRAME,enterFrameFun);
function enterFrameFun(e:Event):void{
if(a.b.x+a.b.width+this.speed<this.a_width){
a.b.x+=this.speed;
}else if(a.b.x+a.b.width<this.a_width){
a.b.x=this.a_width-a.b.width;
e.currentTarget.removeEventListener(Event.ENTER_FRAME,enterFrameFun);
}
}
上面的运动无视了a的运动状态,b相对a而运动,b运动到a的右边时,停止运动。
如果此时a同时以速度this.speed向左边运动,那么b相对舞台就是静止的,即你会看到b不动。但b的运动时间和相对运动距离不变。此时,你想看到b相对舞台是以速度this.speed向右运动的话,那么,设置b的运动速度为this.speed*2即可。即b速度+a的速度(速度带方向,舞台向右为正方向)
如果此时a同时以速度this.speed向右边动,那么b相对舞台是以速度this.speed*2向右运动的。但b的运动时间和相对运动距离不变。
这是物理学的相对运动问题。
再有问题追问或私信跟进。。。
a.localToGlobal(b).x;中,不存在b,而应该是a.b
再者,你转换后,计算出的坐标也是舞台的坐标,还需要将坐标再转回相对a的才能直接对b进行设置,这样显得麻烦
“当a停下来的时候,b运动到a的右边缘再停止”,这一句是否意味着,如果a一直运动的话,b相对a不动还是,b一直在运动?b做如何的运动?
描述的效果不是很清晰,故无法针对你的效果作调整。
b运动到a的边缘停止,如果单纯是b相对a的运动,那么可以直接无视a的运动状态,则
(a在舞台上)
if(!this.speed){
this.speed = 10;//定义了移动速度
}
if(!this.a_width){
this.a_width = a.width;//定义了a的右边,注意a.width
}
this.addEventListener(Event.ENTER_FRAME,enterFrameFun);
function enterFrameFun(e:Event):void{
if(a.b.x+a.b.width+this.speed<this.a_width){
a.b.x+=this.speed;
}else if(a.b.x+a.b.width<this.a_width){
a.b.x=this.a_width-a.b.width;
e.currentTarget.removeEventListener(Event.ENTER_FRAME,enterFrameFun);
}
}
上面的运动无视了a的运动状态,b相对a而运动,b运动到a的右边时,停止运动。
如果此时a同时以速度this.speed向左边运动,那么b相对舞台就是静止的,即你会看到b不动。但b的运动时间和相对运动距离不变。此时,你想看到b相对舞台是以速度this.speed向右运动的话,那么,设置b的运动速度为this.speed*2即可。即b速度+a的速度(速度带方向,舞台向右为正方向)
如果此时a同时以速度this.speed向右边动,那么b相对舞台是以速度this.speed*2向右运动的。但b的运动时间和相对运动距离不变。
这是物理学的相对运动问题。
再有问题追问或私信跟进。。。
展开全部
localToGlobal(),小括号里面的参数必须是Point对象,应该把ePoint放进去
a.localToGlobal(ePoint).x
a.localToGlobal(ePoint).x
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var ePoint:Point = new Point(0,0);
追问
什么意思?详细点,我是菜鸟
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询