Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Вызов функций ActionScript из JavaScript (http://www.flasher.ru/forum/showthread.php?t=48861)

Sandor 09.09.2003 00:31

Вызов функций ActionScript из JavaScript
 
:confused:
Нутром чую, что задаю очевидный вопрос, но всё-таки:
каким образом можно экспортировать из мувика функцию и поюзать ее из джаваскрипта?
Пока я додумался, только делать SetVariable, а в watch на нее делать то, что требуется, но что-то это уж очень криво...

Eprinter 09.09.2003 02:15

На этом сайте есть урок от УильямБрэдберри, там все популярно расписано ;)

Sandor 09.09.2003 23:43

Не, в эту-то сторону я понял - мне нужно наоборот AS-функции вызывать из JS. То есть у меня на странице есть flash-овый объект, и вот когда я нажимаю html-ную кнопку, я его показываю (ну, это из JS) и хочу вызвать его функцию (load-что-то-там). Пока единственный способ, которым я смог что-то подобное получить - это делать для мувика setVariable для передачи параметров и потом (вот изврат-то) setVariable для вызова watch на него (например, setVariable('initial_connect') и внутри на изменение этой переменной коннекчусь) - ну очень криво выходит :mad:

Sandor 10.09.2003 18:29

Вот пара ссылок по теме:
http://www.xs4all.nl/~ppk/js/flash_call.html
http://www.darkbackward.com/flashMAC/MACtalk.zip - какой-то хитрый пример

Здесь http://macrofun.pvpers.com/archives/000035.html товарищ тоже предлагает

вызывать функции через setVariable (приятно, когда сам додумываешься до правильного решения),

однако не очень онятно как это он через одну переменную передает несколько параметров, так как

даже массивы передаются как одна строка.

По мотивам его исходников я пришел вот к чему:

javascript:

Код:

function CallFlash(function_name, parameters)
{
        var movie = document.all('EditorMovie');
        movie.setVariable('_root.function_params', parameters);
        movie.setVariable('execute_function', function_name);
}

Flash:

Код:

this.watch("execute_function", ExecFunction);

function TestFunc(s, x)
{
        _root.Log.text = 'In the test: S=' + s + ', X=' + x;
}


function ExecFunction(prop, oldval, newval, userData)
{
        //eval(newval + '(' + _root.function_params + ')');
        eval(newval)(_root.function_params);
        _root.function_params = null;
}

Вот, в закомментированной строчке я ожидал, что eval работает как в JS, однако он только объекты

по имени возвращает. А то можено было бы сделать, скажем, CallFlash('TestFunc', '"Some Text",

117'); К сожалению распарсить строку по отдельным переменным, видимо, нельзя, а массивы

собираются точно в такую же строку.

Есть у кого-нибудь мысли по этому поводу?

Sandor 10.09.2003 21:37

Попробую сформулировать-таки вопрос:

Как бы так передавать параметры из JS в AS одной строкой или еще какой структурой, так чтобы на стороне AS их разобрать можно было по переменным?


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

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