2011-08-21 88 views
2

我正在使用flash cs5進行寓教於樂的遊戲,我真的是使用flash的新手,實際上我們從來沒有在學校解決它,但我堅持在學習它。1119:訪問可能未定義的屬性點擊通過靜態類型的引用類

在我的代碼,我遇到了這個錯誤

C:\Users\acer\Desktop\JikanLibrary\Main.as, Line 16 1119: Access of possibly undefined property Click through a reference with static type Class.

這是我在程序中使用的代碼

package 
{ 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class Main extends MovieClip 
{ 
    var startPage:StartPage; 
    var jikanBookshelf:JikanBookshelf; 

    public function Main() 
    { 
     startPage = new StartPage; 
     jikanBookshelf = new JikanBookshelf; 

     startPage.jikanBookshelf.addEventListener(MouseEvent.Click, onJikanBookshelf); 

     addChild(startPage); 

     function onJikanBookshelf(event:MouseEvent):void 
     { 
      addChild(jikanBookshelf); 
      removeChild(startPage); 
     } 


    } 
} 
} 

的錯誤是在這一行

startPage.jikanBookshelf.addEventListener(MouseEvent.Click, onJikanBookshelf);

由於我真的是新手,我真的不知道我的代碼出了什麼問題,我在放置鼠標事件之前不久就開始工作了。我希望有人能幫助我。

回答

3

ActionScript是一種區分大小寫的語言。這意味着ClickCLICK不一樣。所以你在這裏需要的是MouseEvent.CLICK

爲什麼CLICK全部大寫?大多數屬性名稱不是。」,你可能會問。

這是因爲CLICK是的MouseEvent的靜態常量財產之中的ActionScript(和許多其他語言)的約定程序員是靜態常量都寫在全部大寫從其他變量在視覺上區分開來。

  • 'static'表示它是MouseEvent類的屬性,而不是MouseEvent的實例的屬性。
  • 'const'表示它不是一個變量:你不能改變它的值。
+0

順便說一句:'新的StartPage'也不會工作。它應該是'新的StartPage()'。構造函數也是一個函數。 – RIAstar

+1

實際上'新的StartPage'將起作用。我曾經想過同樣的事情,但我最近才瞭解到,AS3中帶有非參數化構造函數的類可以在沒有括號的情況下實例化,但這並不是我親自做的事情。 – Taurayi

+0

我的新startStartpage工作,說的行是我唯一的問題,我試圖改變點擊CLICK和錯誤變成這樣__TypeError:錯誤#1010:一個術語是未定義的,沒有任何屬性。 \t at Main()[I:\ JikanLibrary \ Main.as:16] __ – MisaChan

0

這是一個名稱衝突問題:類定義名稱與對象名稱相同。

腳本中的問題是,您有一個類定義名稱startPage,並且您試圖創建一個同名對象startPage

您必須將對象名稱更改爲不同。比如說startpage1

+0

或更改類名'StartPage'。對於實例(對象),使用大寫第一個字母和小寫第一個字母是一種慣例。 – nalply

相關問題