2012-09-09 28 views
1

的訪問按鈕所以即時通訊AS3相當新,但之前已與AS2很多。 我創建了一個按鈕,我的課裏我已經加入此把它放在我的舞臺,那麼:AS3:從類

test.addEventListener(MouseEvent.CLICK, buttonClicked); 
    function buttonClicked(ev:MouseEvent):void 
    { 
     trace("Clicked"); 
    } 

現在,這並不工作,因爲它找不到階段,只有這樣我能得到這個工作是如果我把聽衆放在與不在課堂上的按鈕&相同的框架上。

但是這裏必須有一些東西。

謝謝。 禮

更新 - 添加錯誤消息

如果我把上面的代碼都在外部類這些是我得到的錯誤。

第22行1120:訪問未定義的屬性測試。第22行1120:訪問 未定義的屬性myButtonClick。

+0

當你說上課的時候,你的意思是文檔類嗎?據推測您正在使用Flash IDE?如果你發佈.fla,它會更有幫助 – BadFeelingAboutThis

回答

0

固定。

我被正常的rava愚蠢,忘了把它們放在init裏面:

對於可能會遇到此問題的人。
工作代碼:

public function Main() 
    { 
     // constructor code 
     test.addEventListener(MouseEvent.CLICK, myButtonClick); 

    } 
     function myButtonClick(ev:MouseEvent):void 
    { 
     trace("button Clicked); 
    } 

不管怎樣謝謝你們的幫助,有時它只是最簡單的答案是正確的。

eli

1

如果您創建了具有時間軸的文檔類,那麼您的「測試」按鈕必須位於第一幀。因爲文檔類從第一幀開始執行。只有在階段中可用時才能訪問按鈕實例。

哦,我忘了提。您必須在文檔類中將這些實例聲明爲公共變量。

public var test:SimpleButton; 
+0

它在第一幀。閱讀上面的腳本,看看我得到的錯誤。 –

0

請通過下面,讓我知道你是哪種方式。

1)你有文檔類嗎? 有下類文檔屬性發布Flash IDE中的選項卡,如果你在該領域則稱爲文檔類

如果你有給你的類名文檔類,那麼你甚至可以在構造器按鈕中爲你的按鈕創建監聽器。 Flash不會像你一樣拋出任何錯誤。

2)如果你實例化你的類在第一幀,直到您添加使用的addChild的階段,不會有階段的屬性。它也不會訪問你的按鈕。所以它會拋出錯誤,未定義屬性的訪問。

+0

這是**文檔類** –

+0

如果是這樣,您嘗試在哪裏創建偵聽器到您的按鈕。另外請確保您是否有多個場景或畫面,在嘗試訪問之前您已移至該場景或畫面。 – Moorthy

+0

我只有1幀和1場景,我試圖把我的按鈕裏面的監聽器放在我的文檔類中,但我只是得到錯誤,基本上說它找不到。如果我將偵聽器放置在第1幀上,並保留Document Class中的函數,它確實有效。但我希望編碼明智的一切都在文檔類中。 –

0

你有沒有分配的按鈕的實例在舞臺上的名稱是「test」?您發佈的錯誤消息似乎表示沒有名稱「test」來分配事件偵聽器。

要檢查,單擊按鈕上的舞臺,並期待在「屬性」選項卡:將在靠近頂部的文本框中顯示,如果它需要分配。

現在您發佈的第二個錯誤意味着你指的是一種叫「myButtonClick」不首先聲明/初始化該名稱的變量/功能。如果您想要引用其他內容,您需要聲明它或更正它。

+0

是的舞臺上的按鈕確實具有「測試」的實例名稱,myButtonClick被聲明在其正下方。 –