簡體   English   中英

將 swf 加載到另一個 swf 訪問子 swf 中的函數

[英]Loading an swf into another swf accessing functions in the child swf

我有一個 class 一個名為 draw.fla 的 fla。 與draw關聯的文件class是Draw.as,Draw.as里面的代碼如下

package
{
import flash.display.MovieClip;
import flash.display.Graphics;

public class Draw extends MovieClip
{
    public  function drawCircle1(color:Number):void
    {
        graphics.beginFill(color);
        graphics.drawCircle(100,100,40);
        graphics.endFill();
    }

}
}

生成的 swf 稱為 draw.swf。

我有另一個名為 test.fla 的 fla。

以下是主時間線上第一幀的代碼。

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

var swfLoader = new Loader();
var color:Number;

color = Math.round(Math.random()*0xFFFFFF);
var urlReq:URLRequest = new URLRequest("draw.swf");
swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadComplete);
swfLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfLoadError);
swfLoader.load(urlReq);

function swfLoadComplete(evt:Event):void
{
    var loader:Loader = Loader(evt.target.loader);
    addChild(loader.content);
    swfLoader.removeEventListener(Event.COMPLETE, swfLoadComplete);
}

function swfLoadError(evt:IOErrorEvent):void
{
  trace("Unable to load swf ");
  swfLoader.removeEventListener(IOErrorEvent.IO_ERROR, swfLoadError);
}

如您所見,我已將 dwaw.swf 加載到 test.swf 中。 無論如何我可以從test.fla訪問draw的drawCircle1 function。 實際上我需要在訪問這個 function 時將值顏色作為參數傳遞。

如果我沒記錯的話,一旦加載器完成,您可以簡單地制作 MovieClip(loader.content).drawCircle1(0xFF0000);。

Loader.content 應該是 class 和 function 可以使用方括號語法按名稱調用:

function swfLoadComplete(evt:Event):void
{
    var loader:Loader = Loader(evt.target.loader);
    addChild(loader.content);

    //trying to call function drawCircle1
    loader.content["drawCircle1"](0xFF0000);

    swfLoader.removeEventListener(Event.COMPLETE, swfLoadComplete);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM