我创建了一个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.
请告诉我,我做错了什么?
答案 0 :(得分:2)
evt.target
将包含对点击的显示对象的引用,该对象实际上是myObj类中的myBtn(它是您可以单击的唯一可见图形)。
有两种方法可以解决这个问题。
在myObj()构造函数中设置this.mouseChildren = false。 这样点击myObj中的子显示对象就可以了 “计数”为点击myObj,evt.target将是一个引用 myObj的一个实例。
使用evt.currentTarget而不是evt.target。这是实例 您附加了事件侦听器,而不是您单击的实例 (在大多数情况下,这实际上是你想要的)。