Ошибка AS3 # 1009 Невозможно получить доступ ... пустой объект ref - PullRequest
0 голосов
/ 03 апреля 2011

Здравствуйте. Я помещаю внешний файл .swf в свой .fla в определенном окне, но у меня возникла следующая ошибка:

TypeError: Ошибка # 1009: Невозможно получить доступ к свойству или методу пустой ссылки на объект. в TestingOne / createPlayer () в TestingOne ()

Я пытался вставить это во внешний .swf, но безуспешно -

       {
        stage.addEventListener(Event.ADDED_TO_STAGE, init);
        }

Я добавил следующее в кадр слоя действия:

stop();

function RoachWarsGame2(){
     loadPlayer()
   }

function loadPlayer(){
    var my_loader:Loader = new Loader();
    my_loader.load(new URLRequest("TestingOne.swf"));
    addChild(my_loader);
    my_loader.x = -320.95;
    my_loader.y = -485.95;
}

Но я не вижу игру. Ничего не показывает вообще. Может кто-нибудь предложить мне решение? Спасибо ....

londonbird

1 Ответ

1 голос
/ 03 апреля 2011

Снимите часть сцены этого слушателя, и она должна работать.

То, что вы делаете, просит flash сообщить вам, когда этот объект завершил создание и был добавлен в список отображения. Таким образом, теперь безопасно манипулировать содержанием вашего сердца.

говоря stage.add ~ побеждает цель.

Редактировать: Вам действительно нужно иметь этот ADDED_TO_STAGE в SWF вашей загрузки. Это единственный способ убедиться, что он загружен на 100%, прежде чем пытаться его использовать.

Вот в принципе, как это должно работать ...

Сначала наш внешний SWF, который мы сделали, будет загружен для тестирования.

package src 
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class ExternalSWFDocumentClass extends Sprite
    {
        public function ExternalSWFDocumentClass() 
        {
            addEventListener(Event.ADDED_TO_STAGE, initializeThisClass);
        }

        private function initializeThisClass(e:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, initializeThisClass);

            // I am now added to the display list. Have fun.
            // Now when Some other swf loads me up I will know
            // for sure I have access to the stage etc.

            // Below this is for testing
            var sp:Sprite = new Sprite();
            sp.graphics.clear();
            sp.graphics.lineStyle(1, 0);
            sp.graphics.beginFill(0xccccff);
            sp.graphics.drawCircle(0, 0, 20);
            sp.graphics.endFill();

            sp.x = stage.stageWidth * 0.5;
            sp.y = stage.stageHeight * 0.5;
            addChild(sp);
        }
    }
}

Теперь, когда вы сказали, что хотите загрузить его из FLA-файла, вы делаете это следующим образом.

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;

var loader:Loader = new Loader();
var file:URLRequest = new URLRequest("externalSWFTest.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);

loader.load(file);

function onCompleteLoad (loadEvent:Event):void
{
    addChild(loadEvent.currentTarget.content);
}

Редактировать: Повторное чтение вашего поста заставляет меня думать, что это не проблема. Это может быть, но может быть что-то еще, учитывая полученную ошибку. Нет причин добавлять addChild в загрузчик или устанавливать его свойства x и y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...