Неожиданный __Preloader__ при загрузке внешнего SWF с - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть два файла: Main.swf и DataEnter.swf. У каждого есть класс документа. Я пытаюсь загрузить DataEnter.swf в Main.swf.

Main.as

package
{
    import flash.events.*;
    import flash.display.MovieClip;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.display.Loader;

    public class Main extends MovieClip
    {    
        public function Main()
        {
            var loader: Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, DataEnter_loadComplete);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
            loader.load(new URLRequest('DataEnter.swf'));
        }       

        function DataEnter_loadComplete(evt: Event):void
        {   
            trace(evt.target.content); // DataEnter__Preloader__                    
        var SWF = evt.target.content;   
        SWF.FooBar(); //Error #1069: Property FooBar not found on DataEnter__Preloader__ and there is no default value                      
        }
    }
}

DataEnter.as

package
{
    import flash.display.Sprite;

    public class DataEnter extends Sprite
    {
       private var _socketWorker:Foo;

       public function setSocketWorker(sw:Foo)
       {
           _socketWorker = sw;
       }

       public function FooBar()
       {
           //do something
       }
    }
}

Когда происходит событие Event.COMPLETE загрузчика в классе Main, evt.target.content содержит объект DataEnter_ Preloader _ . Но это должно быть " DataEnter ".

Что не так? Как вызвать метод FooBar из Loaded Class?

Ответы [ 3 ]

1 голос
/ 02 января 2012

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

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

1 голос
/ 06 января 2012

Я открыл DataEnter.swf в FlashDevelopIDE . Это показывает, что мой файл имеет два кадра, но FlashIDE имеет только один кадр.

В DocumentClass DataEnter я включил класс "Foo", который работает с сокетами. Но объект этого класса передается в конструктор.

Когда я удалил класс "Foo" и снова опубликовал файл, то при загрузке файла swf * DataEnter_Preloader_ * исчез, и ожидалось, что DataEnter был там.

Извините за плохой английский

1 голос
/ 29 ноября 2011

Вы случайно не использовали параметры предварительного загрузчика в разделе «Общая библиотека времени выполнения» расширенной панели настроек ActionScript?

...