Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.02.2009, 12:24
PgeorgyV вне форума Посмотреть профиль Отправить личное сообщение для PgeorgyV Найти все сообщения от PgeorgyV
  № 1  
Ответить с цитированием
PgeorgyV

Регистрация: Apr 2008
Сообщений: 79
По умолчанию не работает ExternalInterface

Все перепробовал, ничего не помогает, вот выложил пример из документации, firebug выдает thisMovie("ExternalInterfaceExample").sendToActionScript is not a function, ткните пальцем, где ошибка или дайте рабочий примерчик плиз
Код:
 <html lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>ExternalInterfaceExample</title>
 <script language="JavaScript">
     var jsReady = false;
     function isReady() {
         return jsReady;
     }
     function pageInit() {
         jsReady = true;
         document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n";
     }
     function thisMovie(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
     }
     function sendToActionScript(value) {
         thisMovie("ExternalInterfaceExample").sendToActionScript(value);
     }
     function sendToJavaScript(value) {
         document.forms["form1"].output.value += "ActionScript says: " + value + "\n";
     }
 </script>
 </head>
 <body onload="pageInit();">
 
     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
             id="ExternalInterfaceExample" width="500" height="375"
             codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
         <param name="movie" value="ExternalInterfaceExample.swf" />
         <param name="quality" value="high" />
         <param name="bgcolor" value="#869ca7" />
         <param name="allowScriptAccess" value="sameDomain" />
         <embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7"
             width="500" height="375" name="ExternalInterfaceExample" align="middle"
             play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
             type="application/x-shockwave-flash"
             pluginspage="http://www.macromedia.com/go/getflashplayer">
         </embed>
     </object>
 
     <form name="form1" onsubmit="return false;">
         <input type="text" name="input" value="" />
         <input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br />
         <textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea>
     </form>
 
 </body>
 </html>
Код AS3:
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.external.ExternalInterface;
    import flash.text.TextField;
    import flash.utils.Timer;
    import flash.text.TextFieldType;
    import flash.text.TextFieldAutoSize;
 
    public class ExternalInterfaceExample extends Sprite {
        private var input:TextField;
        private var output:TextField;
        private var sendBtn:Sprite;
 
        public function ExternalInterfaceExample() {
            input = new TextField();
            input.type = TextFieldType.INPUT;
            input.background = true;
            input.border = true;
            input.width = 350;
            input.height = 18;
            addChild(input);
 
            sendBtn = new Sprite();
            sendBtn.mouseEnabled = true;
            sendBtn.x = input.width + 10;
            sendBtn.graphics.beginFill(0xCCCCCC);
            sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10);
            sendBtn.graphics.endFill();
            sendBtn.addEventListener(MouseEvent.CLICK, clickHandler);
            addChild(sendBtn);
 
            output = new TextField();
            output.y = 25;
            output.width = 450;
            output.height = 325;
            output.multiline = true;
            output.wordWrap = true;
            output.border = true;
            output.text = "Initializing...\n";
            addChild(output);
 
            if (ExternalInterface.available) {
                try {
                    output.appendText("Adding callback...\n");
                    ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
                    if (checkJavaScriptReady()) {
                        output.appendText("JavaScript is ready.\n");
                    } else {
                        output.appendText("JavaScript is not ready, creating timer.\n");
                        var readyTimer:Timer = new Timer(100, 0);
                        readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
                        readyTimer.start();
                    }
                } catch (error:SecurityError) {
                    output.appendText("A SecurityError occurred: " + error.message + "\n");
                } catch (error:Error) {
                    output.appendText("An Error occurred: " + error.message + "\n");
                }
            } else {
                output.appendText("External interface is not available for this container.");
            }
        }
        private function receivedFromJavaScript(value:String):void {
            output.appendText("JavaScript says: " + value + "\n");
        }
        private function checkJavaScriptReady():Boolean {
            var isReady:Boolean = ExternalInterface.call("isReady");
            return isReady;
        }
        private function timerHandler(event:TimerEvent):void {
            output.appendText("Checking JavaScript status...\n");
            var isReady:Boolean = checkJavaScriptReady();
            if (isReady) {
                output.appendText("JavaScript is ready.\n");
                Timer(event.target).stop();
            }
        }
        private function clickHandler(event:MouseEvent):void {
            if (ExternalInterface.available) {
                ExternalInterface.call("sendToJavaScript", input.text);
            }
        }
    }
}

Старый 06.02.2009, 13:27
tikhop вне форума Посмотреть профиль Отправить личное сообщение для tikhop Найти все сообщения от tikhop
  № 2  
Ответить с цитированием
tikhop

Регистрация: Jul 2006
Сообщений: 170
а если попробовать сделать функцию public (receivedFromJavaScript)?

Старый 06.02.2009, 13:41
CEBEP вне форума Посмотреть профиль Отправить личное сообщение для CEBEP Посетить домашнюю страницу CEBEP Найти все сообщения от CEBEP
  № 3  
Ответить с цитированием
CEBEP
 
Аватар для CEBEP

Регистрация: Nov 2006
Сообщений: 688
Отправить сообщение для CEBEP с помощью ICQ Отправить сообщение для CEBEP с помощью Skype™
кажется ExternalInterface не работает на локальной машине, только в интырнете
__________________
"I am the terror that flaps in the night…!"

Старый 06.02.2009, 14:40
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
у меня пример работает (FF3.1b2, IE7)

Старый 06.02.2009, 15:20
PgeorgyV вне форума Посмотреть профиль Отправить личное сообщение для PgeorgyV Найти все сообщения от PgeorgyV
  № 5  
Ответить с цитированием
PgeorgyV

Регистрация: Apr 2008
Сообщений: 79
да, локально не работает

Старый 06.02.2009, 15:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
У меня работaет локально. IE7. Но пришлось сходить сюда
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 06.02.2009, 16:33
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
не уверен на 100%, но разрешение на доступ к локальным файлам вроде бы не причем

специально удалил все разрешения из C:\Documents and Settings\USER\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust
и перекомпилил с useNetwork = true
все равно работает..

Старый 06.02.2009, 23:33
hipot вне форума Посмотреть профиль Отправить личное сообщение для hipot Посетить домашнюю страницу hipot Найти все сообщения от hipot
  № 8  
Ответить с цитированием
hipot
 
Аватар для hipot

Регистрация: Dec 2008
Сообщений: 38
локально не работает,
базовая работа с ExternalInterface
__________________
Чем универсальнее решение, тем меньше мест, где его можно применить...

Старый 07.02.2009, 00:13
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 9  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
я криворукий ? почему у меня работает локально !
opera\apache 2.2

спекцально залез в help, создал новый прожкт, запустил, вуаля .... все рабоает

единственно когда я делал проэкт с externom мне пришлось отказатся от swfobject так как почему так и не получилось получить в разумительную работу при вставке через него но это мелочи

вобщем меня беспокоит только одно, а именно для кого сделали TRACE ? что так сложно отследить ошибку ? ааа поражают темы аля " неработает то что на самом деле работает, просто у меня руки кривые и трэйс религия не позволяет использовать "
__________________
на каком языке вы пишите?
а на каком нужно?


Последний раз редактировалось darksranger; 07.02.2009 в 00:16.
Старый 07.02.2009, 00:52
hipot вне форума Посмотреть профиль Отправить личное сообщение для hipot Посетить домашнюю страницу hipot Найти все сообщения от hipot
  № 10  
Ответить с цитированием
hipot
 
Аватар для hipot

Регистрация: Dec 2008
Сообщений: 38
Цитата:
я криворукий ? почему у меня работает локально !
opera\apache 2.2
имелось в виду, что не работает, если октрыть html-страницу в браузере с жесткого диска, а не по схеме http://somehost/fileWithflash.html
__________________
Чем универсальнее решение, тем меньше мест, где его можно применить...

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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