Форум 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)
-   -   ExternalInterface - Ошибка в Help'e к Flash 8? (http://www.flasher.ru/forum/showthread.php?t=99724)

Vitowd 12.08.2007 05:48

ExternalInterface - Ошибка в Help'e к Flash 8?
 
Вызов из Флеш внешних функций и вызов функций Флеша извне.

1. Макромедия предоставила готовые файлы примера работы ExternalInterface.
2. Файлы примера находятся в каталоге: Program Files\MacroMedia\Flash 8\Samples and Tutorials\Samples\ActionScript\ExternalAPI\
3. Пример не работает.
4. Ошибка в коде примера, глюк AS, JS или .... ?
5. Линки, правда, у себя изменил на локальные.
6. Например, в локалке, если "коротнуть" в AS Флеша метод playVideo(sobaka.flv), то работает, т.е. видео организовано и боеготово.
7. Чего только не лопатил и HTML и JS...
8. Узнать бы, где "собака порылась".
9. Для тех, кто не хочет открывать папку с примером:

Флеш ролик состоит из 2-х слоёв:
В 1-м содержится только AS.
Во 2-м находится объект типа Video (ActionScript-controlled) с именем-идентификатором "selectedVid".

Можно загрузить исходник примера от макромедии

screamge 12.08.2007 09:06

Что значит пример не работает? Флеш вызывает метода JS, из HTML'a вызываются метода во флеш, что там не работает?

З.Ы. Оформите код, а то придут модераторы ругаться будут :)

etc 12.08.2007 12:29

Vitowd, отредактируйте свой пост и оформите код тегами [code][/code]. А лучше такую простыню прикреплять в виде архива с html и fla, дабы не заставлять форумчан собирать исходник для теста.

Vitowd 12.08.2007 18:49

Пояснения.
 
1.Уважаемому screamge.
Не работает - означает, что не загружается внешниее видео во флеш, как подразумевелось авторами примера т.е. Macromedia inc. Поскольку, как я предполагаю, не происходит(не выполняется или не доходит до "адресата") обращения JS к AS.

2. Уважаемому __etc:
2.1. Я впервые здесь. Что видно из раздела форума. Спасибо за замечания! Учту, постараюсь отредактировать и разобраться в вопросах оформления.
2.2 Собирать исходник для теста нет необходимости, поскольку он стандартный Sample в стандартной поставке Flash 8. Место, Где находятся ВСЕ готовые к употреблению файлы я указал в п.2 своего вопроса-обращения. Для тех, у кого не установлен Flash 8 подготовлю архив.

Vitowd 12.08.2007 20:08

Уточнение.
 
Вложений: 1
1. Объяснять, как должен работать приведенный код нет необходимости. Я поместил достаточно комментариев к коду на русском языке, объясняющих этот алгоритм.

2. В форуме на тему об "ExternalInterface" часто упоминалась не корректная работа с IE. Сама же Macromedia в файле к тесту readme.txt предупреждает, что для выполнения этого примера достаточно броузера IE5.

3. Проблема: Не устанавливается взаимосвязь между JS и AS.
3.1. Внешнее проявление - локальный FLV видеофайл во флеш не подгружается.
3.2 Не получается вызвать ни alert() в JS, ни trace() в AS.

4. Поскольку, я нашёл всего лишь один ("имхо" или по моему л. мнению, не принципиальный) изъян в коде JS. И, пока что, не вижу порочности алгоритма примера, то повторю вопрос:

Ошибка в коде примера, глюк AS, JS или .... ?

5. Сам исходник от ММ прикреплён архивом "external_sample.rar" Вложение 1. Локальный видео файл, я думаю, у каждого найдётся свой.

etc 12.08.2007 23:32

Vitowd, что я не вижу вашего «учту». Первый пост до сих пор без оформленного кода. На этом форуме можно редактировать свои сообщения. Так что, будьте добры, оформите код. У нас с этим строго и лишние плюсы вам ни к чему.

Kikasso 13.08.2007 02:29

Цитата:

Сообщение от Vitowd
3.2 Не получается вызвать ни alert() в JS

Код:

import flash.external.*;
onMouseDown = function(){
ExternalInterface.call('alert', 'hello');
}

Проблема с исходником от ММ одна - он в Опере не работает, потому что опера притворяется ие. Лечится просто.
Код:


var OPERA = Boolean(window["opera"]);
var IE = !OPERA && navigator.appName.indexOf("Microsoft") != -1;
flashVideoPlayer = (IE) ? window['videoPlayer'] : document['videoPlayer'];

Чтобы избежать возни с нахождением флешки, можно заюзать SFWObject, тогда флешка находится универсальным document.getElementById
Ну а тот пример у меня работает во всех броузерах.

Vitowd 16.08.2007 05:46

Для уважаемого __etc:
Кажется, милостивейший государь, вы должны быть удовлетворены. Ну, хотя бы, в первом приближении. Ещё раз раз извиняюсь за моё нулевое.

Теперь по поводу Флеш:

Спасибо г-ну Kikasso!
Но у меня остаются вопросы:
1. Действительно ли загружается и видеофайл? И всё остальное также работает именно в этом наборе файлов примера?

2. Но, в JS (в исх. примере),есть шунт, который закорачивает обращения на собственную JS функцию, минуя AS. Хотя в AS специально предусмотрена для этого "videoNs.onStatus"
Код:

function callFlashPlayVideo() {
  var comboBox = document.forms['videoForm'].videos;
  var video = comboBox.options[comboBox.selectedIndex].value;
  updateStatus("____" + video + "____"); // непосредственный вызов нижеобъявленной JS функции
  flashVideoPlayer.playVideo("http://www.helpexamples.com/flash/video/" + video);
}

3. Даже замена в JS процедуре callFlashPlayVideo() вызова flashVideoPlayer.playVideo("...") на вызов с прямым обращением к объекту document.getElementById("videoPlayer").playVideo("..") ничего не дала. Т.е. видео не загружается.
3.1. В AS вставил вызов alert'a по клику мышки. как предлагали, JS Не отзывается.

4. Возможно дело в системе или в железе?
4.1 WinXP SP1 на Athlon XP 1700. Материнка с чипсетом nForce 2. Browser IE6. Всегда каталоги и имена файлов пишу только латиницей.

etc 16.08.2007 10:45

Мне кажется, что в html-коде не хватает параметра swLiveConnect со значением true.

Kikasso 16.08.2007 12:56

Вложений: 1
Вот алерт во вложении - неужели оно не работает?
Тот пример макромедийный, с учетом фикса для оперы (только я написал большими буквами, а там маленькие), работает без вопросов.
У меня был глюк в работе с видео, оно не хотело грузится командой js - убрал папку из "Рабочего Стола" и все заработало.
насчет LiveConnect - возможно, для младших версий оперы и мозиллы.


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

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