Как передать аргументы конструктору, если объект загружается динамически с помощью Loader во flash? - PullRequest
0 голосов
/ 11 апреля 2011

Возможно ли это? Если да, то как?

Иначе каковы альтернативы?

Под динамически я имею в виду использование

    loader = new Loader();                      
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
    loader.load(new URLRequest("MySWF.swf"));   

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

SWF - это не сам класс, а скорее набор классов и других вещей (таких как изображения или аудиобайты), все они заархивированы и готовы к использованию. У вас не может быть конструктора для SWF. Однако, что вы можете сделать, это загрузить SWF, а затем, после завершения загрузки, вы можете создать экземпляр класса из этого SWF и передать любые аргументы, которые вы хотите, его конструктору.

Также возможно отправить параметры в SWF и затем обработать их как flashvars внутри SWF, но это, конечно, не конструктор:)

loader.load(new URLRequest("MySWF.swf?day=tue&week=3"));

И тогда вы можете получить их так:

var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.day);
trace(paramObj.week);
1 голос
/ 11 апреля 2011

Если у вас есть класс документа в вашем SWF, тогда вместо использования параметров в конструкторе создайте открытый метод init с вашими параметрами или даже используйте методы получения и установки:

import flash.display.MovieClip;

public class MySWF extends MovieClip
{
    private var _var1   :String;
    private var _var2   :int;

    public function MySWF():void
    {

    }

    public function init(var1:String):void
    {
        _var1 = var1;
    }

    public function get var2():int
    {
        return _var2;
    }
    public function set var2(value:int):void
    {
        _var2 = value;
    }
}

Затем вы можете вызватьэто после того, как вы загрузили свой SWF следующим образом:

private function finishLoading(event:Event):void
{
    var mySWF:MySWF = event.target.content as MySWF;
    addChild(mySWF);
    mySWF.init("This is a string");
    mySWF.var2 = 5;
{
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...