我有一个名为draw.fla的fla。与draw相关联的文档类是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函数。实际上,我需要在访问此函数时将值颜色作为参数传递。
答案 0 :(得分:3)
如果我没有错,一旦加载器完成,你可以简单地制作MovieClip(loader.content).drawCircle1(0xFF0000);.
答案 1 :(得分: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);
}