Flashvars не определен - PullRequest
       26

Flashvars не определен

1 голос
/ 24 октября 2011

Я пытаюсь передать параметры в мой SWF-файл с помощью Flash Vars. Я использую Swfobject, чтобы встроить мой SWF. Однако я не могу получить доступ к этим flashvars внутри SWF-файла. У меня были проблемы с этим уже несколько недель. Я искал в интернете, документации swfobject и другие вопросы, связанные с этим.

Вот мой код js, использующий swfobject для встраивания файла swf.

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
flashvars.name1 = "hello";
swfobject.embedSWF("Comics.swf", "myContent", "950", "650","9.0.0","expressInstall.swf", flashvars, flashvars,flashvars);
</script>

Вот мой HTML-код для встраивания

<div id="myContent"></div>

SWF отлично встроен и выдает следующее

<object type="application/x-shockwave-flash" name1="hello" data="Comics.swf" width="950" height="650" id="myContent" style="visibility: visible; ">
    <param name="name1" value="hello">
    <param name="flashvars" value="name1=hello">
</object>

Опять же, SWF встраивается нормально. Я могу видеть содержимое, но flashvars кажется нулевым. Вот мой флэш-код, который пытается получить доступ к flashvars

var flashVars = root.loaderInfo.parameters;
addChild(Util.newLabel("  FlashVars: " + flashVars+" "+root.loaderInfo,0,0,400,100,12,0x0));        


var y=0;
for(var i in flashVars){
    addChild(Util.newLabel("FlashVars:"+i+":"+flashVars[i],0,y+=30,300,100,12,0x0));
}

Util - это пользовательский класс, который я создал, где newLabel (str: String, x: Number, y: Number, w: Number, h: Number, fontSize: uint, color: uint) представляет собой метод, который возвращает компонент метки с str в качестве его текста, x и y в качестве его местоположения, w и h в качестве его размеров и т. д. Я почти уверен, что утилита работает, поэтому я хотел бы знать, как я действительно загружаю flashvars?

Я должен увидеть список имен переменных при запуске этого кода.

PS: приведенный выше флэш-код кодируется в основной временной шкале (я использую flash ide для компиляции моего кода), в первом кадре, пока Util находится в отдельном файле. Корневой объект в первом кадре на главной временной шкале - это [объект MainTimeline].

Дайте мне знать, если вам нужна дополнительная информация. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 ноября 2012

Flash фиксирует переменные, получая переменные внутри URL или flashvars, и они представляют собой пары ключ / значение. Так что, в основном, если у вас был такой URL:

http://someurl.com/flashmovie.swf?testVariable=101&testVariable2=tank

testVariable - это ключ, а 101 - это значение, и вы можете получить эти пары ключ / значение, как показано ниже;

    //creating a textfield for debugging
var _textField:TextField = new TextField();
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.border = true;
addChild(_textField);

//flashvars code
try {
    var valueString:String;
    var keyString:String;
    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
    for (keyString in paramObj) {
        valueString = String(paramObj[keyString]);
        _textField.appendText("\t" + keyString + ":\t" + valueString + "\n");
    }
}catch (error:Error) {
    _textField.appendText(error.toString());
}

Надеюсь, это поможет, ура

1 голос
/ 25 октября 2011

Я просто настроил HTML-страницу, которая встраивает SWF точно так же, как ваш (на самом деле, я скопировал / вставил ваш код), затем в свой Flash я вставил следующий (простой) код:

import flash.text.TextField;

var myTextField:TextField = new TextField();    

var flashVars = root.loaderInfo.parameters;

myTextField.text = flashVars["name1"]+"!";

addChild(myTextField);

И когда я открываю HTML-страницу, я получаю привет!на экране, как и ожидалось.Очевидно, я не смог бы попробовать ваш компонент создания ярлыков, но строка будет выглядеть так:

addChild(Util.newLabel(flashVars["name1"]+"!",0,0,400,100,12,0x0) );        

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

Надеюсь, это поможет!

...