找出对象数组中的Button位置

时间:2013-08-24 19:07:37

标签: arrays actionscript-3

我创建了一个Button符号,并将其Export for ActionScript导出为类名为“theButton”。

有一个对象,我想在myObj构造函数中创建该按钮,如下所示:

public class myObj extends Sprite {
        private var myBtn:theButton = new theButton();

        public function myObj() {
            x = Math.floor(Math.random() * 300) + 50;
            y = Math.floor(Math.random() * 300) + 50;
            addChild(myBtn);
        }
        public function getXPos():uint {
            return x;
        }
    }

当我点击每个按钮时,我正在尝试创建myObj类和getXPos()的数组:

var myArray:Array = new Array();
myArray[0] = new myObj();

myArray[0].addEventListener(MouseEvent.CLICK, Clicked);

addChild(myArray[0]);

function Clicked(evt:MouseEvent):void {
    var xPos1:uint = myObj(evt.target).getXPos();
    trace("Position is in : " + xPos1);
}

当点击屏幕上出现的按钮时,出现以下错误:

Type Coercion failed: cannot convert theButton@2c9dcf99 to myObj.

请告诉我,我做错了什么?

1 个答案:

答案 0 :(得分:2)

evt.target将包含对点击的显示对象的引用,该对象实际上是myObj类中的myBtn(它是您可以单击的唯一可见图形)。

有两种方法可以解决这个问题。

  1. 在myObj()构造函数中设置this.mouseChildren = false。 这样点击myObj中的子显示对象就可以了 “计数”为点击myObj,evt.target将是一个引用 myObj的一个实例。

  2. 使用evt.currentTarget而不是evt.target。这是实例 您附加了事件侦听器,而不是您单击的实例 (在大多数情况下,这实际上是你想要的)。