控制已经在舞台上的另一个类的对象

时间:2011-03-03 11:41:35

标签: actionscript-3

我很惭愧地在这里问这个问题,因为我确信我错过了一些非常基本的东西。我甚至不确定这个问题的正确标题是什么。

让我说我在舞台上有一个按钮对象(Flip的实例)和一个硬币对象(Coin的实例)。硬币对象有两个框架:一个显示Heads,一个显示Tails。

MyCoin课程如下:

package
{
    import flash.display.MovieClip;

    public class Coin extends MovieClip
    {
        protected var _coinFace:uint;

        public function Coin()
        {
            stop();
        }

        public function get coinFace():uint {
            return _coinFace;
        }

        public function set coinFace(value:uint):void {
            _coinFace = value;
        }

        public function show():void {
            gotoAndStop(_coinFace);
        }
    }
}

目标:当用户点击按钮时,硬币应翻转并显示随机币面。我已经将一个eventListener添加到Flip类中,如下所示:

public function Flip()
    {
        this.addEventListener(MouseEvent.CLICK, onMouseClick);
    }

问题:如何通过onMouseClick功能到达屏幕上的硬币对象?假设舞台上的对象具有myCoin的实例名称。我想如果我没有使用外部类完成此操作,只使用框架中的操作我可以使用实例名称作为变量。我无法想象在外部课堂上做同样的事情。我是否首先创建已经在舞台上的对象?

1 个答案:

答案 0 :(得分:3)

在创建每个实例的情况下,需要将翻转对象传递给硬币对象的实例。

var myCoin:Coin = new Coin();
var myFlip:Flip = new Flip(myCoin);

然后在Flip类中:

private var _coin:Coin;
public function Flip(coin:Coin) {
    _coin = coin;
    this.addEventListener(MouseEvent.CLICK, onMouseClick);
}

private function onMouseClick(e:MouseEvent):void {
    _coin.gotoAndStop(2); // Or what ever needs to be done to the coin on click
}

或者,根据整体结构的复杂性,您可以构建一个控件类,充当两者之间的链接。