2010-11-04 49 views
0

我有一個類,我的文檔類,稱爲SilkRoadTweeter.as 我也有一個名爲User.as 類在我的User類,我需要調用一個方法叫做隨機數() 我已經試過了,如何從當前課程中的其他課程調用方法。 AS3

trace(SilkRoadTweeter(root).nonce()); 

但我得到的錯誤,

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
+2

你應該添加更多關於你的課程的細節。 – 2010-11-04 16:08:51

回答

0

在這種情況下, 「」 可能是零。 嘗試調試它來檢查。

+0

我覺得這很愚蠢,但我實際上並不知道根是什麼。 – 2010-11-04 16:44:18

+0

我正在學習大學的行爲腳本,並且我使用了類似trace的東西(SilkRoadTweeter(root).nonce()); – 2010-11-04 16:45:09

+0

約旦的答案是最適合你的。靜態是要走的路。 – ansiart 2010-11-05 19:59:46

1

編輯

我其實忘了最重要的一個,你可以派遣en事件!編輯

 //In the Document class 
    var user:User = new User(); 
    user.addEventListener("nonce" , nonceEventListener); 

    //define your listener 
    private function nonceEventListener(event:Event):void 
    { 
     user.result = this.nonce(); 
    } 

    //In the User class 
    public function result(value:Number):void 
    { 
     //here you deal the generated Number 
     } 

     //somewhere in the Class 
    this.dispatch(new Event("nonce")); 

你應該通過你SilkRoadTweeter的實例在User類

例如:

//In the Document class 
    var user:User = new User(this); 

    //In the User class 
    var srt:SilkRoadTweeter; 

    public function User(srt:SilkRoadTweeter) 
    { 
     this.srt = srt; 
     srt.nonce(); 
    } 

如果用戶類的實例添加爲一個孩子SilkRoadTweeter類,你也可以 做到這一點

//In the User class 
    var srt:SilkRoadTweeter; 

    public function User() 
    { 
     addEventListener(Event.ADDED , addedListener); 
    } 

    protected function addedListener(event:Event):void 
    { 
     srt = this.parent as SilkRoadTweeter; 
     srt.nonce(); 
    } 
+0

嘿,對不起,我不認爲我很清楚。我需要調用nonce()和nonce()在文檔類(SilkRoadTweeter.as)中,但我需要從其他類調用它User.as – 2010-11-04 16:36:51

+0

我即將去嘗試現在。所有的nonce()都會返回一個生成的數字。有沒有辦法只是從用戶調用nonce()並獲取值? – 2010-11-04 16:50:30

+0

是的,用戶對象被添加爲SilkRoadTweeter的子節點 – 2010-11-04 16:51:47

0

嘗試:

trace(root is SilkRoadTweeter) 

我都感覺你需要做的:

trace((root.getChildAt(0) as SilkRoadTweeter).nonce()); 
+0

trace(root是SilkRoadTweeter);追蹤什麼? – 2010-11-04 23:51:10

1

你說的隨機數()函數是在SilkRoadTweeter類,你需要從用戶調用它類。您必須具有對SilkRoadTweeter的引用才能調用它。錯誤是說它不知道SilkRoadTweeter是什麼。在我看來,使用root獲得參考很麻煩,應該避免。我建議在創建它時傳遞一個對User類的引用。如果這不是一個選項,只要函數不需要訪問SilkRoadTweeter的非靜態屬性,在SilkRoadTweeter類中靜態函數nonce()就可以解決您的問題。你說它所做的只是返回一個生成的數字,所以我猜測它不需要訪問非靜態屬性。如果你仍然感到困惑,我可以詳細闡述我所說的話。

+0

我將使nonce()成爲一個靜態函數。但是我還有另一個函數,我想在用戶名爲signRequest()的SilkRoadTweeter中調用,它在SilkRoadTweeter類中使用了很多不同的變量。那我該怎麼做呢? – 2010-11-04 23:44:44

+0

如果你要在兩個類之間進行很多函數調用,我建議在創建User類時引用它。在SilkRoadTweeter中創建User類的實例的代碼如下所示:var user:User = new User(this);並且User類的構造函數將除了一個SilkRoadTweeter,您可以將其作爲私有屬性保存並用於進行函數調用。 – Jordan 2010-11-04 23:54:56

相關問題