开发者

Loading an swf into another swf accessing functions in the child swf

I have an an class a fla called draw.fla . The document class associated with draw is Draw.as The code inside Draw.as is as follows

package
{
import flash.display.MovieClip;
i开发者_JAVA技巧mport flash.display.Graphics;

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

}
}

The resulting swf is called draw.swf.

I have another fla called test.fla.

The following is the code on the first frame on the main time line.

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);
}

I have loaded dwaw.swf into test.swf as you can see. Is there anyway I can access the drawCircle1 function of Draw from the test.fla. Actually I need to pass the value color as an argument while accessing this function.


If I'm not wrong, once the loader is complete you could simply make MovieClip(loader.content).drawCircle1(0xFF0000);.


Loader.content should be that class, and function can be called by name with square bracket syntax:

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);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜