Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Обновление Flashvars через 1 секунду (http://www.flasher.ru/forum/showthread.php?t=124658)

NaFigator 05.05.2009 19:27

Обновление Flashvars через 1 секунду
 
Доброго времени суток. У меня возникла вот такая проблема.

Дано:
Сайт, использующий jquery для динамической подгрузки данных.
В верхнем фрейме есть флэшка, куда при загрузке страницы я легко засылаю FlashVars данные. Дело в том, что при некоторых манипуляциях в других фреймах содержимое ролика должно менять, но без перезагрузки самого ролика. Я могу менять сами FlashVars с помощью JavaScript, но вот ролик в упор не хочет подменять эти самые данные новыми =(

Подскажите, можно ли вообще както задать ролику задачу пересчитывать FlashVars каждую секунду?

вот код ролика:
Код:

var main_url = "http://static.mysite.ru/";
        texta.text=_level0.user_name;
        user_hp.text=_level0.hp+" / "+_level0.max_hp
        user_mana.text=_level0.mana+" / "+_level0.max_mana
       
        _root.hp_bar._width = int(_level0.hp / _level0.max_hp*111);
        _root.mana_bar._width = int(_level0.mana / _level0.max_mana*88);

if(_level0.user_clan!="none"){
        _root.createEmptyMovieClip("container_mc1", 1);
        container_mc1.loadMovie(main_url + "flash/clans/" +_level0.user_clan + ".swf");
        container_mc1._x=15;
        container_mc1._y=18;
}

if(_level0.user_align!="none"){
        _root.createEmptyMovieClip("container_mc2", 2);
        container_mc2.loadMovie(main_url + "flash/clans/align_" +_level0.user_align + ".swf");
        container_mc2._x=158;
        container_mc2._y=18;
}

в ролике есть единственный кадр и несколько слоев для размещения динамический текстовых блоков.

iNils 05.05.2009 19:38

Данные FlashVars считываются единожды при инициализации ролика. Потому их менять бесполезно.
Для связи флеше с js есть класс ExternalInterface.

NaFigator 05.05.2009 20:42

Цитата:

Сообщение от iNils (Сообщение 817801)
Данные FlashVars считываются единожды при инициализации ролика. Потому их менять бесполезно.
Для связи флеше с js есть класс ExternalInterface.

Прошу прощения, покопался яв документации, но всеравно недопонял =(
можно,чуточку поконкретнее?

iNils 05.05.2009 20:46

Что именно вы недопоняли?

NaFigator 05.05.2009 20:53

1. как я понял нужно использовать дополнительный яваскрипт типа swfobject
2. а вот как нужно переписать код во флэшке не ясно =(
будут ли переменные так же храниться в _level0 ? Каким образом запрограммировать перезапись значений переменных через 1 секунду?

iNils 05.05.2009 20:57

1. swfobject не имеет ни какого отношения к текущей задаче.
2. Внутри флеша пишете функцию, которую вызывает js, эта функция изменяет значения нужных вам параметров. Вызов функции раз в секунду делается через функцию setInterval.
То есть, js:setInterval -> js:function -> as:function -> as:variable

Stargazer 05.05.2009 20:59

Цитата:

Сообщение от NaFigator (Сообщение 817839)
1. как я понял нужно использовать дополнительный яваскрипт типа swfobject

Вы не в том направлении поняли.

ExternalInterface позволяет вам вызвать функцию js и получить из неё результат. Либо наоборот - позволяет зарегистрировать функцию as так, чтобы она была доступна из js.

NaFigator 05.05.2009 21:31

точно! как передать одну переменную я примерно понял
Код AS1/AS2:

import flash.external.*;
 
ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);
 
function recieveFromJS(t) {
        _root.theText.text = t;
}

Но теперь вопрос, можно ли передать массив? Если да, то как обращаться к членам массива? или придется передавать строку, а затем ее парсить?

По сути нужно передать 4 переменные.

Stargazer 05.05.2009 21:41

Я нормально принимал переменную класса Object.

NaFigator 05.05.2009 22:15

тоесть по сути ассоциативный массив можно передать из яваскрипта во флэш?


Часовой пояс GMT +4, время: 17:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.