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

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

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

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
По умолчанию Firefox проблема с window.status

Есть код.
Код AS1/AS2:
getURL("javascript:function setStatus(par){window.status=par}");
but.onRelease=function():Void{
	getURL("javascript:setStatus('Привет зелёным человечкам.')");
}
В IE 8 строка состояния браузера меняется при нажатии кнопки, в Firefox ни каких изменений.
Кто нибудь знает - почему?

Добавлено через 7 минут
Ха-ха.
Код:
window.close()
тоже не работает. Подозреваю что тут дело в том, что Firefox не до конца поддерживает спецификацию JavaScript, или где то нужно дать особые разрешения что бы всё это работало. Одно могу сказать точно
Код:
alert()
точно работает.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 05.05.2010, 01:41
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
А собственно зачем вам оно надо? если диплинк для этого есть готовый класс

Старый 05.05.2010, 01:47
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 3  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Вообще на самом деле не зачем пока что. Просто читаю книжку и делаю примеры по ней. Ну и слегка неприятно/непонятно когда что-то ведёт себя не так как это описано.
А можно поподробнее про:
Код AS1/AS2:
если диплинк для этого есть готовый класс
Что такое диплинк? И что за готовый класс? О_о
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 05.05.2010, 02:29
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
www.google.ru там набираем DeepLink. Готовый класс - SWFAddress

Старый 05.05.2010, 04:05
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 5  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
В общем что такое DeepLink так и осталось для меня тайной за семью печатями. Гугл, как впрочем и Яндекс, находит всё что угодно, но только не ответ на этот вопрос.
А за то что сказали название класса - спасибо. Только вот в справочнике по AS2 от Adobe о нём не сказано не слова. Вероятно Вы имели в виду класс созданный группой умельцев на коленке. По крайней мере вот что я нашёл по этому вопросу: тут ссылка на страничку сайта умельцев где можно скачать класс и доку по нему. Собственно пока особо не ознакомился, сейчас сижу занимаюсь.

Интересен вопрос - где можно узнать какие команды JavaScript поддерживает Firefox, да и другие браузеры. Это просто будет полезно и пригодится в дальнейшем. Или если он поддерживает их все, тогда где нужно ему разрешить выполнение тех команд в работе с которыми возникли проблемы(команды приведены в первом посте)?

Добавлено через 1 час 37 минут
Ололо!
Код AS1/AS2:
private static function _call(fn:String, param:Object):Void {
	if (typeof param == 'undefined') param = '';
	trace(ExternalInterface.available);//Возвращает true
	trace(_availability);//Возвращает false
	if (_availability) {
		if (System.capabilities.os.indexOf('Mac') != -1) {
			if (_queue.length == 0) {
				_queueInterval = setInterval(SWFAddress._callQueue, 10);                
			}
			_queue.push({fn: fn, param: param});
		} else {
			ExternalInterface.call(fn, param);
		}
	}
}
Это в файле - SWFAddress.as для AS2. Что-то пере|недо-мутили.

Добавлено через 2 часа 7 минут
}{E-}{E
Вопрос решён.
Да, SWFAddress оказался хренью. Как я и предполагал изначально Об этом говорит обнаруженный бажок + отсутствие адекватного хелпа.
Собственно разобрал как реализован setStatus в компоненте SWFAddress. ExternalInterface.call() - вызывает функцию JavaScript.
Вот выдержка из хелпа Adobe по AS2:
Код AS1/AS2:
call (ExternalInterface.call method) 
public static call(methodName: String, [parameter1: Object]) : Object
 
Calls a function exposed by the Flash Player container, passing 0 or more arguments. If the desired function is not available, the call returns null; otherwise it returns the value provided by the function. Recursion is not permitted; a recursive call produces a null response. 
 
If the container is an HTML page, this method invokes a JavaScript function in a <script> element.
 
If the container is some other ActiveX container, this method broadcasts an event with the specified name, and the container processes the event.
 
If the container is hosting the Netscape plug-in, you can either write custom support for the new NPRuntime interface or embed an HTML control and embed Flash Player within the HTML control. If you embed an HTML control, you can communicate with Flash Player through a JavaScript interface that talks to the native container application.
 
Availability: ActionScript 1.0; Flash Player 8
 
Parameters
 
methodName: String - The name of the function to call in the container. If the function accepts parameters, they must appear following the methodName parameter.
 
parameter1: Object [optional] - Any parameters to be passed to the function. You can specify zero or more parameters, separating them by commas. The parameters can be of any ActionScript data type. When the call is to a JavaScript function, the ActionScript types are automatically marshalled into JavaScript types. When the call is to some other ActiveX container, the parameters are encoded in the request message.
 
Returns
 
Object - The response received from the container. If the call failed (for example if there is no such function in the container, or the interface was not available, or a recursion occurred, or there was a security issue) null is returned.
 
Example
 
The following example calls the JavaScript function sayHello() in the HTML page that contains the SWF. The call is made by using the ExternalInterface.call() method. 
 
import flash.external.*;
 
var greeting:String;
var btn:MovieClip = createButton(100, 30, 0xCCCCCC);
btn.onPress = function() {
    greeting = String(ExternalInterface.call("sayHello", "browser"));
    this.mcTxt.text = greeting; // >> Hi Flash.
}
 
function createButton(width:Number, height:Number, color:Number):MovieClip {
    var depth:Number = this.getNextHighestDepth();
    var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
    var mcFmt:TextFormat;
 
    mc.beginFill(color);
    mc.lineTo(0, height);
    mc.lineTo(width, height);
    mc.lineTo(width, 0);
    mc.lineTo(0, 0);
 
    mcFmt = new TextFormat();
    mcFmt.align = "center";
    mcFmt.bold = true;
 
    mc.createTextField("mcTxt", depth, 0, 0, width, height);
    mc.mcTxt.text = "Call JS Function";
    mc.mcTxt.setTextFormat(mcFmt);
 
    return mc;
}
 
For the previous example to work properly, you should be copy and paste the following code into the containing HTML page. Unless the HTML page is hosted on a server, your browser may alert you with a security warning. 
 
<script>
    function sayHello(name) {
        alert(">> Hello " + name + ".");
        return ">> Hi Flash.";
    }
</script>
Другими словами аналог
Код AS1/AS2:
getURL("javascript:setStatus('Привет зелёным человечкам.')");
Будет такой:
Код AS1/AS2:
import flash.external.*;
ExternalInterface.call("setStatus('Привет зелёным человечкам.')", "browser");
Естественно в Firefox ничего работать не будет из за дефолтного отруба части команд JavaScript. Для того чтобы исправить ситуацию идём: Инструменты -> Настройки -> Содержимое -> Использовать JavaScript -> Дополнительно. И ставим там какие нужно галки.
__
Думаю, тема исчерпана.

Добавлено через 2 часа 17 минут
И да,
Код AS1/AS2:
window.close()
Заставить работать в Firefox не получилось. Судя по всему эта команда залочна разрабами Firefox. Наверное как не очень безопасная. Хотя, кто их знает.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.


Последний раз редактировалось AzagThoth; 05.05.2010 в 05:50.
Старый 05.05.2010, 07:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от AzagThoth Посмотреть сообщение
Другими словами аналог
Код AS1/AS2:
getURL("javascript:setStatus('Привет зелёным человечкам.')");
Будет такой:
Код AS1/AS2:
import flash.external.*;
ExternalInterface.call("setStatus('Привет зелёным человечкам.')", "browser");
Это не аналог, в таком виде.

Старый 05.05.2010, 07:59
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 7  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Если флеш ролик открывать при помощи браузера - работает одинаково. Отсюда сделан вывод, что это, судя по всему, аналог.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 05.05.2010, 08:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
В первом случае вы вызываете setStatus с текстом. Во втором неверный синтаксис, первый аргумент принимает имя функции, а не строку непонятно с чем. Аналогом будет это:
Код AS3:
ExternalInterface.call("setStatus", 'Привет зелёным человечкам.');

Старый 05.05.2010, 08:21
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 9  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Да, так точно. Блин. Это я какую то ерунду написал ) Проверял двумя методами, всё работало. Просто перекосел с примером когда отписывался. Спасибо большое, что поправили.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 05.05.2010, 13:49
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
дА уж написать такую ахинею! SWFAdress работет на всех браузерах прекрасно и выполняет свою задачу на 100%. DeepLink - линкование во флеше с помощью сторонних компонентов, чтопозволяет меня текст адреса, текст заголовка страницы. А далее и возможность с помощью навигации на сайте реагировать на строку состояния, а так же в обратном порядке меняя строку состояния переходить на определенное место флешке или же вы полнять опред действие....

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

Теги
as2 , javascript+flash

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

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


 


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


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