2011-05-27 95 views
0

我有一個叫做draw.fla的fla類。與draw相關的文檔類是Draw.as Draw.as中的代碼如下將swf加載到另一個swf中訪問子swf中的函數

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函數。其實我需要在訪問此函數時將值顏色作爲參數傳遞。

回答

3

如果我沒有錯,一旦裝載完成後,你可以簡單地使影片剪輯(裝載機。內容).drawCircle1(爲0xFF0000);.

1

Loader.content應該是一流的,並且功能可以用方括號語法的名字叫:

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); 
} 
相關問題