为什么我在event.target之后获取实例名称而不是Sprite名称?

时间:2013-02-14 07:57:26

标签: actionscript-3 instance addeventlistener

我在两个班级做了同样的事情。我看不到我做了不同的事情,但必须有。因为当我使用trace(event.target)而不是我在另一个类中获得的Spritename时,我会在单击中获得“Instance54”或其他内容。现在我已经制定了一个解决方法,但有人可以解释eventlisteners何时获取实例名称而不是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);

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

如果在创建对象后未向对象提供“name”属性,则会收到自动生成的名称“instance”+ number。最有可能的是,getChildByName()确保只有一个孩子具有该特定名称。当你在Flash CS的图形设计器中编辑它们的属性时,你隐含地为实例赋予名称,所以我希望返回“Sprite-name”的对象是预先放置的对象。