背景资料:
我将我的代码发布到Adobe AIR文档中,但我不确定这是否与此特定问题相关。
我在库中创建了两个符号,大矩形,并在舞台上放置了它们的实例。
问题
问题:
我在检测姓名时做错了吗?如何通过我的类中的ActionScript实际检测我在舞台上创建的实例名称?
这是我的代码:
var pt:Point = new Point(e.stageX, e.stageY);
var objects:Array = getObjectsUnderPoint(pt);
var action = 0;
for(var i=0; i< objects.length; i++) {
trace(objects[i].name);
}
if( objects.indexOf('left_box') >= 0 ){
action = 1;
}
if(objects.indexOf('right_box') >= 0 ){
action = 2;
}
答案 0 :(得分:1)
让我想起一句话:“我没有解决你的问题,但我当然很佩服这个问题”
如果您尝试跟踪(objects [i]),您将看到函数getObjectsUnderPoint返回的形状不是MovieClip,因此您永远不会得到您要查找的名称。
答案 1 :(得分:1)
搜索引导我进入这个论坛主题:http://www.actionscript.org/forums/showthread.php3?t=231181
在this特定帖子(第6号)中,作者指出
“事实证明,getObjectsUnderPoint返回的数组 最简单的对象 - 孩子,如果有意义的话。我以前可以 只需在我的末尾添加一个.parent即可解决部分问题 可变...“
我将.parent附加到对象,并收到了相应的名称:
var pt:Point = new Point(e.stageX, e.stageY);
var objects:Array = stage.getObjectsUnderPoint(pt);
var action = 0;
for(var i=0; i< objects.length; i++) {
trace(objects[i].parent.name);
}
if( objects.indexOf('left_box') >= 0 ){
action = 1;
}
if(objects.indexOf('right_box') >= 0 ){
action = 2;
}
这解决了我的问题,希望能让我们更好地理解getObjectsUnderPoint。
答案 2 :(得分:1)
推进Fahim Akhter的回答,
然后,您可以循环获取父级,直到该对象为movieclip
var o:DisplayObject=objects[i];
while(!(o.parent is MovieClip)) {
o=o.parent;
}
var myMovieClip:MovieClip=o.parent;
这应该会在myMovieClip中为您提供一个影片剪辑,当您追踪myMovieClip.name
时,您将获得所需内容。
这也适用于多级符号(其中1个符号包含另一个符号)