1

我想知道getMCRef().unloadMovie()OL 4.9 中的等价物

我知道getDisplayObject()给出的显示对象会getDisplayObject.unload()与此类似getMCRef().unloadMovie()吗?

4

1 回答 1

1

OpenLaszlo视图类有一个 unload() 函数:

视图.卸载();卸载使用 setSource 或 source= 属性加载的媒体。

<canvas>

  <view id="redBox" width="150" height="150">
    <method name="loadSWF">
       this.setSource('logo.swf');
    </method>
    <method name="unloadSWF">
       this.unload();
    </method>
  </view>

  <button x="200" text="Load SWF" onclick="redBox.loadSWF()"/>

  <button x="200" y="40" text="Unload SWF" onclick="redBox.unloadSWF()"/>

</canvas>

如果您对如何加载资源感兴趣,请查看 LzSprite.as SWF9 内核文件的 setSource 函数:

/** setSource( String:url )
    o Loads and displays media from the specified url
    o Uses the resourceload callback method when the resource finishes loading 
*/
public function setSource (url:String, cache:String = null, headers:String = null, filetype:String = null) :void {
    if (url == null || url == 'null') {
        return;
    }
    var loadurl:String = getLoadURL(url, cache, headers);
    if (getFileType(url, filetype) == "mp3") {
        // unload previous image-resource and sound-resource
        this.unload();
        this.__isinternalresource = false;
        this.resource = url;
        this.loadSound(loadurl);
    } else {
        if (this.isaudio) {
            // unload previous sound-resource
            this.unloadSound();
        }

        if (! imgLoader) {
            if (this.resourceContainer) {
                // unload previous internal image-resource
                this.unload();
            }
            imgLoader = new Loader();
            imgLoader.mouseEnabled = false;// @devnote: see LPP-7022
            imgLoader.mouseChildren = false;
            this.resourceContainer = imgLoader;
            this.addChildAt(imgLoader, IMGDEPTH);
            this.attachLoaderEvents(imgLoader.contentLoaderInfo);
        } else {
            //TODO [20080911 anba] cancel current load?
            // imgLoader.close();
        }
        this.__isinternalresource = false;
        this.resource = url;
        var res:Loader = this.imgLoader;
        if (res) {
            res.scaleX = res.scaleY = 1.0;
        }

        imgLoader.load(new URLRequest(loadurl), LzSprite.loaderContext);
    }
}

在 setSource() 中,会创建flash.display.Loader类的一个实例:imgLoader = new Loader();

有时最好知道 LFC 内部使用了哪些 ActionScript 类,因为如果需要,您可以扩展 OpenLaszlo 的功能。

于 2012-09-11T10:17:17.500 回答