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

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

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

Регистрация: Feb 2013
Сообщений: 3
По умолчанию Считывание параметров приложением

Здравствуйте, имеется такой вопрос, у меня есть html страница с встроенным в неё Flex приложением, мне необходимо в этом Flex приложении считывать параметры которые передаются странице в адресной строке. Через FlashVars уже пробовал, это работает только в том случае когда параметры передаются непосредственно swf, а не html странице в которой он находится.

Старый 02.02.2013, 20:51
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
используйте
Код AS3:
ExternalInterface
Код AS3:
ExternalInterface.call("window.location.href.toString")
Для примера мой класс, правда он несколько шире, с ожиданием готовности JavaScript.
Код AS3:
package inpictures.connector {
 
	import flash.display.Sprite;
	import flash.utils.Timer;
	import flash.utils.setTimeout;
	import flash.events.TimerEvent;
 
	import flash.external.ExternalInterface;
 
	import inpictures.events.ChannelEvent;
 
	public class External extends Sprite  {
 
		public const SystemName:String = "EXTERNAL";
 
		private var reconnect:uint = 5;
		private var attempts:uint = 15;
 
		private var isSupported:Boolean = false;
 
		public function External() {
		}
 
		public function init():void {
			if (ExternalInterface.available) {
                try {
					//if (log) log.add("ExObjectID: " + ExternalInterface.objectID);
 
                    if (checkJSReady()) {
						dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"JavaScript is ready."));
                    } else {
						dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"JavaScript is not ready, creating timer."));
 
                        var JSConnector:Timer = new Timer(100, 0);
							JSConnector.addEventListener(TimerEvent.TIMER, timerHandler);
							JSConnector.start();
                    }
                } catch (error:SecurityError) {
 
					dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"A SecurityError occurred: " + error.message));
                } catch (error:Error) {
					dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"An Error occurred: " + error.message));
                }
            } else {
				dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"External interface is not available for this container."));
            }
 
 
 
			if (!ExternalInterface.call("window.location.href.toString")) {
				setTimeout( function () { dispatchEvent(new ChannelEvent(ChannelEvent.USING,ChannelEvent.IDE_MODE));} , 100 );
			} else isSupported = true;
 
			//dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE, ExternalInterface.call("window.location.href.toString")+"\n"+ExternalInterface.call("window.top.location.hash")));
		}
 
		public function addCallBack(func:String,callback:Function):void {
			ExternalInterface.addCallback(func, callback);
		}
 
		public function call(func:String,... args):Object {
			return ExternalInterface.call(func,args);
		}
 
		private function checkJSReady():Boolean {
            var isReady:Boolean = ExternalInterface.call("jsready");
 
			if (isReady) 
				dispatchEvent(new ChannelEvent(ChannelEvent.USING,ChannelEvent.JS_READY));
 
            return isReady;
        }
 
		private function timerHandler(event:TimerEvent):void {
 
			if (isSupported) {
				dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"Checking JavaScript status..."));
 
				var isReady:Boolean = checkJSReady();
				if (isReady) {
					dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"JavaScript is ready."));
					Timer(event.target).stop();
				}
			} else {
				dispatchEvent(new ChannelEvent(ChannelEvent.LOG,ChannelEvent.WRITE,"Emulation: JavaScript."));
				Timer(event.target).stop();
			}
        }
	}
}
В HTML
PHP код:
<body onload="pageInit();">
    <
script type="text/javascript">
        var 
jsc false;
        function 
jsready() { return jsc; }

        function 
pageInit() { jsc true; }

    
</script> 
Добавлено через 8 минут
Хотя с точки зрения ООП, лучше не использовать мой класс, а написать статический класс для событий.
__________________
return this...

Старый 02.02.2013, 21:37
Amidamaru вне форума Посмотреть профиль Отправить личное сообщение для Amidamaru Найти все сообщения от Amidamaru
  № 3  
Ответить с цитированием
Amidamaru

Регистрация: Feb 2013
Сообщений: 3
Огромное спасибо!

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

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

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


 


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


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