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的右边!
展开
 我来答
alanbabbage
2013-01-11 · TA获得超过976个赞
知道小有建树答主
回答量:755
采纳率:0%
帮助的人:1139万
展开全部
首先,你代码报错,是因为你的
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的运动时间和相对运动距离不变。

这是物理学的相对运动问题。

再有问题追问或私信跟进。。。
Keensb
2013-01-11 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:730万
展开全部
localToGlobal(),小括号里面的参数必须是Point对象,应该把ePoint放进去
a.localToGlobal(ePoint).x
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北街周大少
2013-01-11 · 超过24用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:63万
展开全部
var ePoint:Point = new Point(0,0);
追问
什么意思?详细点,我是菜鸟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式