Загрузка SWF в другой SWF доступ к функциям в дочернем SWF - PullRequest
0 голосов
/ 27 мая 2011

У меня есть класс fla, который называется draw.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.

Ниже приведен код в первом кадре на главной временной шкале.

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, как вы можете видеть.В любом случае я могу получить доступ к функции drawCircle1 Draw из test.fla.На самом деле мне нужно передать значение цвета в качестве аргумента при доступе к этой функции.

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Если я не ошибаюсь, после завершения загрузчика вы можете просто сделать MovieClip (loader.content) .drawCircle1 (0xFF0000);.

1 голос
/ 27 мая 2011

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...