Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не могу отправить данные с Javascript во Flash (http://www.flasher.ru/forum/showthread.php?t=206699)

dead 22.02.2014 11:55

Не могу отправить данные с Javascript во Flash
 
Код AS3:

import flash.external.ExternalInterface;
function to_flash()
{
        if( ExternalInterface.available )
                ExternalInterface.addCallback("send",from_js);
 
}
function from_js( value:String ):void
{
                lbl.text = value;
}
to_flash();

Javascript код
Код:

function to_flash( value )
{
    var flash = navigator.appName.indexOf( "Microsoft" ) != -1 ? window[ "flash" ] : document[ "flash" ];
    flash.send( value );
}

HTML код
Код:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="550" height="400" id="flash" align="middle">
                        <param name="allowScriptAccess" value="sameDomain" />
                        <param name="allowFullScreen" value="false" />
                        <param name="movie" value="Untitled-1.swf" />
                        <param name="quality" value="high" />
                        <param name="bgcolor" value="#ffffff" />
                        <embed
                        src="Untitled-1.swf"
                        name="flash" align="middle"
                        play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
                        width="550" height="400" scale="exactfit"
                        type="application/x-shockwave-flash"
                        pluginspage="http://www.macromedia.com/go/getflashplayer">
                    </embed>       
                </object>

Javascript выдаёт ошибку TypeError: flash.send is not a function

Zebestov 22.02.2014 12:00

Код следует оформлять соответствующими тегами (кнопки # и AS3 в панели редактора сообщений)

alexandrratush 22.02.2014 13:05

Сильно в код не вникал, но не вижу где вы вызываете JS-функцию to_flash.

dead 22.02.2014 13:08

функцию to_flash() я вызвал, после чего получил ошибку: "TypeError: flash.send is not a function"

mooncar 22.02.2014 14:20

Выложите все на сервер, есть вероятность, проблема с настройками безопасности, флешке не удается заявить о доступных методах браузеру, поэтому консоль говорит о том, что вызов такой функции ошибочен.
Или добавьте папку с проектом в "доверенные" (в настройках флеш-плеера в системе это делается).

dead 22.02.2014 16:05

Ничего не помогает. При сохранении .swf файла изменил Local playback security на access network only, всё равно не помогает.

alexandrratush 22.02.2014 16:39

Скорее всего когда вызывается ваша JS функция to_flash() из контейнера, у флешке не успевает зарегистрироваться функция send, по которому контейнер может осуществить вызов функции у флешке.

Попробуйте вызывать в контейнере функцию инициализации после регистрации, вот так:
Код AS3:

ExternalInterface.addCallback("send", from_js);
 
// Отправляем контейнеру что приложение загрузилось
ExternalInterface.call('initApp');

Вот часть кода контейнера:
Код:

/**
 * Функция вызывается из флешки, и сообщает, что приложение загрузилось и все функции зарегистрированы.
*/
function initApp()
{
    to_flash( 'Hello' );
}


dead 22.02.2014 18:24

alexandrratush, работает спасибо.


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

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