0

我在两个班上做过同样的事情。我看不出我做了什么不同的事情,但必须有。因为在一个中,当我使用 trace(event.target) 而不是我在另一个类中获得的 Spritename 时,单击后我会得到“Instance54”或其他东西。现在我已经做了一个解决方法,但是有人可以解释事件监听器何时获取实例名称而不是 Sprite 名称吗?

private var fly:Sprite = new Sprite;
private var flyArea:Sprite = new Sprite;

...

public function()
{
fly.addChild(new R.fly);
flyArea.addChild(new R.bg);
flyArea.addChild(fly);
fly.addEventListener(MouseEvent.CLICK,flyClick, false, 0, true);

...

private function changeFlikOrder(event:MouseEvent):void
trace (event.target);
4

2 回答 2

1

这些年来我一直在做 Flash,我从来不需要依赖 name 属性。您应该为您创建的任何对象设置一个 var 并使用它来引用您的对象:

// not sure why you don't have () in your example but here goes
fly.addChild(new R.fly());

但是现在没有对 R.fly 的引用,如果你这样做了:

var myFly:YourTypeHere = new R.fly();
fly.addChild(myFly);

现在您可以在代码中的任何位置引用 myFly。

于 2013-02-14T10:09:24.787 回答
0

如果您在创建对象后没有为对象提供“名称”属性,那么它会收到一个自动生成的名称“实例”+数字。很可能是getChildByName()为了确定只有一个孩子有这个特定的名字。当您在 Flash CS 的图形设计器中编辑实例属性时,您会隐含地为实例命名,因此我希望返回“Sprite-name”的对象是预先放置的对象。

于 2013-02-14T08:17:16.853 回答