我很惭愧地在这里问这个问题,因为我确信我错过了一些非常基本的东西。我甚至不确定这个问题的正确标题是什么。
让我说我在舞台上有一个按钮对象(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的实例名称。我想如果我没有使用外部类完成此操作,只使用框架中的操作我可以使用实例名称作为变量。我无法想象在外部课堂上做同样的事情。我是否首先创建已经在舞台上的对象?
答案 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
}
或者,根据整体结构的复杂性,您可以构建一个控件类,充当两者之间的链接。