2013-08-24 15 views
0

我創建了一個按鈕符號並將其導出爲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 [email protected] to myObj. 

請告訴我我做錯了什麼?

回答

2

evt.target將包含對點擊的引用顯示對象,其實際上是myObj類中的myBtn(它是您可單擊的唯一可見圖形)。

有兩種方法可以解決這個問題。

  1. 在myObj()構造函數中設置this.mouseChildren = false。 通過這種方式,點擊myObj中的子顯示對象將被點擊「計數」爲 ,並且evt.target將作爲myObj的實例的參考 。

  2. 而不是evt.target使用evt.currentTarget。這是您附加事件偵聽器的實例 ,而不是您在 上單擊的實例(這實際上是您在大多數情況下所需的)。