2010-03-23 57 views
1

我正在嘗試運行主類的函數,但即使使用它也不起作用。我得到這個錯誤AS 3.0中的引用父類函數

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
at rpflash.communication::RPXMLReader/updateplaylist() 
at rpflash.communication::RPXMLReader/dataHandler() 
at flash.events::EventDispatcher/dispatchEventFunction() 
at flash.events::EventDispatcher/dispatchEvent() 
at flash.net::XMLSocket/scanAndSendEvent() 

這是主類代碼

package{ 
import flash.display.MovieClip; 
import rpflash.communication.RPXMLReader; 

public class Main extends MovieClip{ 

    var reader:RPXMLReader = new RPXMLReader(); 

    public function Main(){ 
     trace('Main actionscript loaded'); 

     } 

    public function test(){ 
     trace('test worked');} 

} 
} 

,這是函數試圖調用它:

private function updateplaylist(){ 
     //xml to string 
     var xmls:String= xml.toXMLString(); 
     trace('playlist updated debug point'); 
     MovieClip(this.parent).test();} 

我到底做錯了什麼?

回答

1

它看起來像你的RPXMLReader沒有parent ...假設RPXMLReader延伸MovieClip(或Sprite,或DisplayObject等),你需要把它添加爲Main類的子類 - 否則其parent屬性將是null

public class Main extends MovieClip{ 
    var reader:RPXMLReader = new RPXMLReader(); 

    public function Main(){ 
     addChild(reader); 
    }... 
+0

謝謝,工作! – vasion 2010-03-23 07:49:28

1

讀者類是不顯示列表的一部分,添加一些你需要調用的addChild在即將父顯示對象,並通過顯示列表中很快就被孩子的顯示對象作爲參數。

在任何情況下,這是嘗試和在類之間進行通信的非常糟糕的方法。真的,你應該從RPXMLReader調度一個事件,然後在你的Main類中監聽它。

+0

我會研究它。事件似乎是一個更乾淨的方式來做到這一點。 – vasion 2010-03-23 07:49:00