很简单。
如果我有一个包含 Sprite 对象的容器类,并且我将一个触摸侦听器附加到所述 Sprite,是否有一种可靠且廉价的方法可以在触摸时获取包含 Sprite 的对象?我意识到我可以只继承 Sprite,但这不是我想做的。
如果做不到这一点,如果我将事件侦听器添加到包含它的类中的所述 Sprite 对象,是否有办法调度一个事件,使我能够获取对包含被触摸的 Sprite 对象的容器的引用?
谢谢你的帮助。
回复loxxxy:
当我说“持有”时,我的意思是聚合。例如:
public class Container
{
[Embed(source = "img1.jpg")] private var img:Class;
private var sprite:Sprite;
private var bitmap:Bitmap;
public function Container()
{
bitmap = new img();
sprite = new Sprite();
sprite.addChild(bitmap);
}
public function GetSprite():Sprite
{
return sprite;
}
}
这是完全合法的代码。我想要做的是,当 Sprite 对象在 Container 类之外被触摸时,我可以通过所述 Sprite 对象访问 Container 类中的其他属性。但是,我认为一个可靠的解决方法如下:
public class Container extends InteractiveDisplayObject
{
[Embed(source = "img1.jpg")] private var img:Class;
private var bitmap:Bitmap;
public function Container()
{
bitmap = new img();
this.addChild(bitmap);
}
}
然后,我可以通过侦听 Container 类上的触摸事件来访问 Container 类的聚合对象,同时使其完全可扩展到任何其他 DisplayObject 类(TextField、Sprite 等)。
我想这样做有一个非常具体的原因,我只是觉得它与实际问题无关。当我有时间测试它时,我会尝试这种方法,看看效果如何。谢谢!