我环顾了几个不同的线程,似乎找不到任何适合我的东西。我对 ActionScript 还很陌生,所以这可能很明显。为了练习,我正在尝试制作一个简单的游戏。在游戏中,您可以砍伐树木以添加到您的“木材”资源中。这是树类:
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Tree extends Sprite
{
//Embed the gameObject image
[Embed(source="../images/tree.png")]
public var GameObjectImage:Class;
public var gameObjectImage:DisplayObject = new GameObjectImage();
public var gameObject:Sprite = new Sprite();
public function Tree()
{
gameObject.addChild(gameObjectImage);
this.addChild(gameObject);
}
}
}
然后,我在 Main.as 中创建一个函数调用'createTree'
public function createTree (xPos:int, yPos:int):void
{
var treeName:Tree = new Tree();
treeName.x = xPos;
treeName.y = yPos;
treeName.addEventListener(MouseEvent.CLICK, chopWood);
stage.addChild(treeName);
}
我有一个名为“chopWood”的函数来移除树。
public function chopWood(e:MouseEvent):void
{
wood++;
stage.removeChild(e.relatedObject);
updateResources();
}
在构造函数中,我添加了一棵树。
createTree(100,100);
它确实在 x:100 y:100 添加了树。但是 Click 事件不起作用。如果我手动添加树(即不是通过函数)并手动添加偶数侦听器,它就可以工作。我认为这是某种封装问题,但我不确定如何解决它。创建树需要通过函数来完成,因为游戏需要在某些时候添加树。
我怎样才能让点击事件在我添加到舞台的所有树上工作?