flash as 关于target的问题

想做一个小游戏,随机生成一些物体,物体从上到下掉落。当主人公bread碰到蟑螂(crap1)时会输掉游戏。
要如何判断bread碰撞到的是蟑螂(crap1)呢?按下面的代码输出root["food"]是object food1~3/crap1 但输出root["mc"]时却全都是undefined。请问我该如何修改?
部分代码如下:
//创建事件响应函数,该函数用于随机生成food
function createFood(event:TimerEvent):void
{//生成随机数
var i:int = Math.round(Math.random() * 4);
//根据随机数实例化food对象
if (i == 1)
{
food = new food1();
}
else if (i==2)
{
food = new food2();
}
else if (i==3)
{
food = new food3();
}
else
{
food=new crap1();
}
//添加事件侦听器侦听food对象的enterFrame事件;
food.addEventListener(Event.ENTER_FRAME,startDown);
//随机产生food对象的x坐标;
food.x = Math.round(Math.random() * 904 +140);
//向舞台上添加food对象
food.scaleX = 5;
food.scaleY = 5;
stage.addChild(food);
//trace(root ["food"]);
}
//food下落
function startDown(event:Event):void
{
//定义影片剪辑实例将其指定为当前的food对象
var mc:MovieClip = event.target as MovieClip;
//food对象每次向下移动10个像素
mc.y += 10;
//检测是否发生了碰撞,只有碰撞发生在计时时段内时才执行下面的代码
if (mc.hitTestObject(bread) )
{
//移除food对象
stage.removeChild(mc);
trace(root["target"]);
//移除该水果对象的事件侦听器;
mc.removeEventListener(Event.ENTER_FRAME,startDown);
}
//如果水果离开了舞台
if (mc.y > 1300)
{
//移除该水果对象的事件侦听器
mc.removeEventListener(Event.ENTER_FRAME,startDown);
//删除该水果对象

stage.removeChild(mc);
}

}

首先,你这是AS3的代码,虽然部分代码放上来了,但是不是所有的代码,而且因为没有源文件,所以无法进行测试,找到问题所在,最好是能把源文件发过来看一下,才能分析具体的错误原因。
只能说,root这样的写法可能是有问题的。最好把生成的元件放到一个数组中,这样更方便调用。
如果有相关的FLASH或者Animate操作及代码方面的问题可以私信,尽心解答!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-18
target 是指向最底层的可接受鼠标事件的对象 如果设置了 mouseChildren = false ,则到达此层就是最底层可接受鼠标事件的对象了
currentTarget是指事件流的当前阶段侦听对象
as3的事件机制优于as2的好处是
as2如果一个影片剪辑 包裹 一个按钮,如果为影片剪辑添加了任何事件处理,那么内部的按钮事件就会失去效果,意思即是说 as2的事件机制是即时拦截,一拦截到就执行,不会再向内层对象传递的了
造成了as2中比如做一个小黑板的拖动 和 右上角一个关闭按钮 就会很麻烦 ,要分成两个不内嵌的影片剪辑或按钮
而as3它的事件机制是,按照嵌套关系,在鼠标点击处一直向下遍历,这个过程是事件流机制中的 捕获阶段
当找到最后一层可以接受鼠标事件的对象时 这叫 目标阶段
然后会启动一个向上沿路回流的阶段 这叫冒泡阶段
targe在整个事件流机制过程中 都是不变的 指向 目标阶段中所存在的最底一层可以接受鼠标的事件对象
而currentTarget则是随着事件流不同的阶段 指向流中当前的事件侦听对象
比如一个影片剪辑包裹一个按钮 在按钮上点击 由此至终 target都是指向按钮,
而如果除了侦听按钮的 MouseEvent.CLICK事件外 还令上层影片剪辑同时侦听 MouseEvent.CLICK事件的话,因为沿途有侦听 在冒泡阶段 事件流就会针对这个侦听作出响应
亦即是说 只有侦听的对象才会令到 currentTarget对象产生变化
这种事件机制的好处是保证了整个影片所有对象都平等地分享同一个鼠标或键盘等交互事件的消费,不会被提前拦截而令后续对象没法侦听到本回答被网友采纳