Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   не отрабатывает ExternalInterface.addCallback в AS3 (http://www.flasher.ru/forum/showthread.php?t=120517)

Anry_coolboy 22.01.2009 20:58

не отрабатывает ExternalInterface.addCallback в AS3
 
Подскажите пожалуйста, может кто то сталкивался с такой проблемой.

У меня есть код на AS2
Код AS1/AS2:

import flash.external.*;
var wasSuccessful:Boolean = ExternalInterface.addCallback("XMLS", null, XMLS);
 
function XMLS(dat)
{
        test_txt.text=dat;
}

отрабатывает прекрасно, данные все приходят в функцию.


Переписал на AS3

Код AS3:

public class Chat extends MovieClip
        {
                import flash.external.ExternalInterface;
                public function Chat()
                {
 
                ExternalInterface.addCallback("XMLS", getData);
 
                }
                private function getData(data:String):void
                {
                        test_text.text=data;
                }
        }

Функция отрабатывает, но приходит пустой параметр.

Что делать?

Alex Lexcuk 22.01.2009 21:15

Чето-то не совсем понятно...
Хотя вопрос хороший
>>Что делать?
http://dnadillo.dn.ua/fla/js-swf-htm...rnal-call.html

http://dnadillo.dn.ua/fla/js-swf-html/js-swf-html.html

Anry_coolboy 22.01.2009 21:24

ничего не нашел что может мне помочь на этих ссылках.

wvxvw 22.01.2009 21:57

Ну так может стоит написать, как вы ее вызываете?

Alex Lexcuk 22.01.2009 22:27

>>ничего не нашел что может мне помочь на этих ссылках.

Хм...Страно по ссылкам рабочий пример передачи в ActionScript переменной из JavaScript кода.
Ладно, опишу, хотя во второй ссылке описан процесс работы.
При нажатии на кнопку, которая расположена на html странице
html
Код:

//функция срабатывает при нажатии на кнопку на html странице
function but_1_click()
{
  i++;
  my_flash_view.text_for_swf(""+i);
}

и при ее нажатии передается переменная ""+i из html во флеш
Flash ActionScript
Код:

var newText = ExternalInterface.addCallback("text_for_swf", /*null,*/ func_external_text);
function func_external_text(newVal)
{
my_txt.text = newVal;
}

И отображается в текстовом поле флеша.
А тема топика "не отробатывает ExternalInterface.addCallback в AS3 "
Ну так я вам привел живой пример, что обрабатывает.

tikhop 23.01.2009 12:58

функция которая вызывается из JS должна быть public

Код AS3:

public class Chat extends MovieClip
        {
                import flash.external.ExternalInterface;
                public function Chat()
                {
 
                ExternalInterface.addCallback("XMLS", getData);
 
                }
                public function getData(data:String):void
                {
                        test_text.text=data;
                }
        }


BlooDHounD 23.01.2009 14:44

а у нас с приватами работает.

litebox 23.01.2009 15:35

Сталкивался с такой же проблемой, при формировании данных таким образом:
Код:

<invoke name='XMLS' returntype='xml'><arguments><string><LOGOK NICK="vallf" ANAME="Support"/></string></arguments></invoke>
также приходило пустое поле, при таком варианте:
Код:

<invoke name='XMLS' returntype='xml'><arguments><string><![CDATA[<LOGOK NICK="vallf" ANAME="Support"/>]]></string></arguments></invoke>
данные во флэш поступают.
Почему AS2 хавал вариант без CDATA, а AS3 не захотел - не понятно

Anry_coolboy 23.01.2009 19:05

wvxvw >> А тема топика "не отробатывает ExternalInterface.addCallback в AS3 "
Ну так я вам привел живой пример, что обрабатывает.

Я же не говорю что вобще не работает. У меня на AS2 работает прекрасно, и на AS3 вызов проходит, только аргумент - пустая строка.

Я разобрался в чем проблема! Пишу для тех кто может с этим столкнется.

Когда я отправляю просто текст, то он приходит нормально, а если XML, то пустая строка.


Что б решить эту проблему данные нужно отправлять вот так <![CDATA[xml]]>.

wvxvw 23.01.2009 19:32

Фишка в том, что у меня работает и так и так :)
Поэтому ошибка либо в JS либо XML состоит из одного узла и не содержит текстовой информации - а вы не читали в мануале про XML.toString() и XML.toXMLString().


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

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