ссылочная функция родительского класса в AS 3.0 - PullRequest
1 голос
/ 23 марта 2010

Я пытаюсь запустить функцию основного класса, но даже с приведением не работает. Я получаю эту ошибку

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();}

что я делаю не так?

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Класс считывателя не является частью списка отображения, чтобы добавить что-то в список отображения, необходимо вызвать addChild для ближайшего родительского экранного объекта и передать в качестве параметра скоро ожидаемый дочерний экранный объект.

В любом случае, это действительно плохой способ общения между классами. На самом деле вы должны отправить событие из RPXMLReader и затем прослушать его в своем главном классе.

1 голос
/ 23 марта 2010

Похоже, что у вашего RPXMLReader нет parent ... при условии, что RPXMLReader расширяет MovieClip (или Sprite, или DisplayObject и т. Д.), Вам нужно добавить его как ребенка вашего Main класса - иначе его parent свойство будет null:

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

    public function Main(){
        addChild(reader);
    }...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...