PDA

Просмотр полной версии : передача параметров через SWFObject


alex163
19.11.2008, 02:14
суть дела в следующем, нужно передать переменную из JS в AS2.

данные во флэш передаются SWFObject`ом:
var flashvars = {
test1: "тестовое сообщение",
test2: "второе тестовое сообщение"
};

есть кнопка, при клике по которой вызывается функция:
function sendmyvars() {
thisMovie('flash').nameofmetod(flashvars.test1);
}

далее идём во флэш:
import flash.external.*;
var methodName:String = "nameofmetod";
var instance:Object = null;
var method:Function = funcname;
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
function funcname() {
_root.createTextField("mytext", 1, 80, 20, 100, 20);
mytext.text = test1;
}

это всё идеально работает, в текстовом поле флешки появляется "тестовое сообщение", вопрос вот в чём.. если мне понадобится вывести test2, то придётся переписывать код as2.. как этого избежать? т.е. нужно, чтобы test1 в
mytext.text = test1;
не самому надо было прописывать, а каким-то образом автоматически бралось из
thisMovie('flash').nameofmetod(flashvars.test1);

и само название текстового поля, чтобы было не мною написанное "mytext", а автоматом из JS присваивалось "text1"..

надеюсь, понятно изложил суть..
заранее всем спасибо.

alexcon314
19.11.2008, 08:55
Так передавайте имя текстового поля из JS. Как-нибудь так
function sendmyvars() {
thisMovie('flash').nameofmetod("тестовое сообщение", "mytext");
}
import flash.external.*;
var methodName:String = "nameofmetod";
var instance:Object = null;
var method:Function = funcname;
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
function funcname(str:String, tfName:String) {
_root.createTextField(tfName, 1, 80, 20, 100, 20);
_root[tfName].text = test1;
}