2014-12-27 51 views
-1

我添加了兩個孩子的主類,一個是畫布,另一個是面板。Flash as3將一個類中的方法調用到另一個放置在舞臺上的類。

Canvas類:

在這個類添加一個對象,它是文本字段,一個方法「doBold補充說:」在這裏,所以這個方法會做大膽的文本字段對象。

面板類:

在面板類別i具有添加了一個鼠標事件監聽一個按鈕。

現在我想通過點擊放置在面板類中的按鈕來調用doBold方法。我知道這可以使用自定義事件來完成,但可以使用接口嗎?如果是的話那怎麼會是......

在此先感謝。

+0

,請告訴我們您的代碼段..這將是更好的爲我們來幫助你實際的代碼... – RicoRicochet 2014-12-27 14:27:31

回答

0

實際上有很多方法可以做到這一點,具體取決於你如何設置類。

我假設你在最低限度,沿着線的東西:

public class Canvas 
{ 
    ... 
    public function doBold() { 
     //some stuff 
    } 
    ... 
} 

------- 

public class Panel 
{ 
    .... 
    var myButton:Sprite = //definition details. 
    myButton.addEventListener(MouseEvent.CLICK, onMouseClick); 
    .... 
} 

------ 

public class Main 
{ 
    var canvas:Canvas = //instance of your canvas class 
    var panel:Panel = //instance of your panel class 
} 

選項1:調度自定義事件

  • 設置自定義事件類
  • 設置監聽器在初始化畫布對象之後爲該自定義事件發送
  • 即使從onClickEvent wi瘦你的面板類。

這裏是在細節上有很大的教程設置此功能: http://code.tutsplus.com/tutorials/as3-101-events-basix--active-10018

選項2:最簡單的方法,但不是很可擴展 而不是設置的事件偵聽器的面板按鈕你可以將它分配給你的主類。這將要求myButton是Panel類中的一個公共變量。

因此,在主,你會碰到這樣的:

panel.myButton.addEventListener(MouseEvent.CLICK, onMouseClick); 
... 
private function onMouseClick(evt:MouseEvent) { 
    canvas.doBold(evt.target); 
}