Во Flash-игре Actionscript необходимо передать объект класса загрузчика во внешний SWF - PullRequest
0 голосов
/ 08 сентября 2011

Я действительно тяну свои волосы с этим.Флэш-игра, контейнер SWF загружает IMG с использованием класса загрузчика.

Изображение - это карта, которая будет использоваться на уровнях.

Проблема, с которой я столкнулся, заключается в том, что у меня изначально была загрузка каждого уровняизображение карты, преобразуйте в растровое изображение и используйте его для создания x и y для обнаружения столкновений.

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

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

Вот код, который у меня есть

PARENT SWF:

(Этот код находится в конструкторе)

var mImageLoader = new Loader();
var anImageURLRequest:URLRequest = new URLRequest('http://example.com/Level-map.png');
mImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
mImageLoader.load(anImageURLRequest);

Затем дочерний SWF-файл загружается за пределы конструктора

SWF-файл CHILD:

map1 = Bitmap(mImageLoader.content);
        bmd1 = map1.bitmapData;

        addChild(map1);

Очевидно, что вышеприведенное не работает, но в идеале это то, что мне нужнона работу Кто-нибудь получил какие-либо идеи?

Действительно нужно получить доступ к объекту загрузчика после того, как он загрузил изображение из дочернего SWF

Спасибо

Эндрю

1 Ответ

1 голос
/ 08 сентября 2011

Если родительский SWF-файл имеет ссылку на загруженный дочерний SWF-файл, вы можете просто установить свойство дочернего элемента или вызвать дочерний метод для передачи растрового изображения.Вот о чем я говорю:

// Child.as
public function setBitmap(value:Bitmap):void
{
    addChild(value);
}

// Parent.as
public function Parent()
{
    // load child
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedChild);
    loader.load('Child.swf');
}

private function loadedChild(event:Event):void
{
    var loaderInfo:LoaderInfo = event.currentTarget as LoaderInfo;
    loaderInfo.removeEventListener(Event.COMPLETE, loadedChild);

    // 'bitmap' contains the reference to your Bitmap
    var child:Child = loaderInfo.content as Child;
    child.setBitmap(bitmap);
}
...