2010-03-23 61 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