actionscript flash游戏需要将loader类对象传递给外部swf

时间:2011-09-08 11:46:42

标签: flash actionscript-3 flash-cs5

我真的用这个把头发拉了出来。 Flash游戏,容器swf使用loader类加载img。

图像是将在关卡上使用的地图。

我遇到的问题是我原来每个级别加载地图图像,转换为位图,然后我们创建x和y用于colision检测。

问题在于游戏正在加载,有时地图图像加载了。 它还指出每个级别都加载了相同的图像,如果上面发生在第3级,第4级,则非常烦人。

所以我需要一种方法来加载父级中的图像,但是它可供子级使用,但它必须在位图上可用才能工作。

这是我的代码

父母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:

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

        addChild(map1);

显然上面的方法不起作用,但最理想的是我需要它如何工作 有人有任何想法吗?

真正需要在加载孩子swf

的图像后访问加载器对象

由于

安德鲁

1 个答案:

答案 0 :(得分:1)

如果父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);
}