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

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

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

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
Attention Внешний прелоадер и передача параметров в подгружаемую флешку

Проблема:

Есть флешка, к которой нужно создать внешний прелоадер. Когда флешка работает отдельно, то всё работает отлично. Нужно отметить, что в главном классе флешки я "запоминаю" stage и root, чтобы к ним можно было обратиться из любого места вот так:

Код:
Имя_класса.stage = this.stage;
Имя_класса.root = this;
Когда эта флешка становится дочерней, т.е. когда её подгружают в другую, this.stage возвращает null.

Можно ли это как-то решить?

И вопрос #2:

Хочется организовать передачу параметров из HTML в Flash, но т.к. у нас будет ещё и ролик прелоадера, то как правильно организовать передачу парамтетров из прелоадера в дочернюю флешку?

За ранее спасибо.

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

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Цитата:
Сообщение от koIIImarik Посмотреть сообщение
Когда эта флешка становится дочерней, т.е. когда её подгружают в другую, this.stage возвращает null.
Можно ли это как-то решить?
Можно.
Использовать событие ADDED_TO_STAGE.
Цитата:
Сообщение от koIIImarik Посмотреть сообщение
Хочется организовать передачу параметров из HTML в Flash, но т.к. у нас будет ещё и ролик прелоадера, то как правильно организовать передачу парамтетров из прелоадера в дочернюю флешку?
Как угодно.
Например, присвоить публичной переменной или передать в какой-либо публичный метод класса.

Старый 21.10.2008, 23:38
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 3  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Цитата:
Хочется организовать передачу параметров из HTML в Flash, но т.к. у нас будет ещё и ролик прелоадера, то как правильно организовать передачу парамтетров из прелоадера в дочернюю флешку?
Если нужно передавать так же, как из HTML:
http://www.flasher.ru/forum/showthread.php?t=115551
__________________
Дело не в тебе

Старый 22.10.2008, 02:04
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 4  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
2 AL.exe:
Не могли бы вы выслать любой работающий пример с .as кодом и флешками? Просто я попробовал способ передачи через пары "имя=значение", но во-первых, он у меня не работает, во-вторых, этот способ не совсем правильный я считаю, т.к. флешки не должны при работе с ним кешироваться, да и вообще должен быть нормальный работающий способ сделать это.

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

За ранее спасибо.

Старый 22.10.2008, 03:38
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 5  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Ну, вот, к примеру, по-быстрому склепал пример с присвоением публичной переменной главного класса какого-то значения из прелоадера:

Код:
/*    Preloader.as    */

package 
{
	
	import flash.display.Loader
	import flash.display.Sprite;
	import flash.net.URLRequest;
	import flash.events.Event
	import flash.display.MovieClip
	
	
	
	
	public class Preloader extends Sprite
	{
		private var mainLoader:Loader = new Loader()
		public var movie:Main
		
		
		public function Preloader() {
			
			mainLoader.load(new URLRequest("main.swf"))
			trace("Preloader started")
			
			mainLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, startMain)
			
		}
		
		private function startMain(e:Event) 
		{
			trace("Main Movie loaded")
			
                        //смотрим старое значение переменной:
			trace((mainLoader.content as Main).sin)
			
			
                        //записываем объект в переменную, потому что напрямую в mainLoader.content нам не дадут присваивать значения переменным
			movie = (mainLoader.content as Main)
			
			movie.sin = "new variable ;)"
			
                        //смотрим новое:
			trace(movie.sin)
			
			addChild(mainLoader.content)
		}
		
	}
	
}

Код:
/*    Main.as    */
package
{
	
	import flash.display.Sprite;
	
	
	public class Main extends Sprite
	{
		

		public var sin:String = "old variable"
		public var sex:int
		public var salvation:Array
		
		
		public function Main() 
		{
			trace("Main movie started")
					
		}
		
	}
	
}
Собственно, прелоадер с базовым классом Preloader грузит main.swf с базовым классом Main и задает ему кастомное свойство "sin", что и иллюстрируется трейсами.

Вывод будет вот такой:

Код:
Preloader started
Main movie started
Main Movie loaded
old variable
new variable ;)
Собственно вот, как Вы и хотели, безо всяких строк с парами имя=значение.

P.S.Что-то я совсем засыпаю, забыл добавить в прелоадер получение FlashVars, но это, в принципе, обсуждалось уже на форуме: Вам нужно будет задействовать в коде прелоадера ассоциативный массив stage.loaderInfo.parameters
__________________
Дело не в тебе


Последний раз редактировалось AL.exe; 22.10.2008 в 03:48. Причина: палю метаданные из флешдевелопа :D
Старый 22.10.2008, 04:26
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 6  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
2 mre:
За "ADDED_TO_STAGE" спасибо большое, сам бы вряд ли нашёл.

Что касается "в любой момент", то в любой момент не получилось бы, т.к. нужно было, чтобы параметр уже был передан до того, как дочернея флешка будет инициирована.

Ниже мне правильно написали, что нужно использовать "loaderInfo.parameters" я об этом свойстве тоже не знал, пока форум не облазил сильно.

Но в любом случае спасибо за помощь.

2 Al.exe:
Огромное спасибо за то, что натолкнули меня на loaderInfo.parameters. Я у себя решил всё немного по другому, решил, что раз параметр уже есть в родительской флешке, то зачем его "плодить" ещё и в дочерней, просто обращаюсь из дочерней к родительской за нужным параметром.

Спасибо вам =)


Последний раз редактировалось koIIImarik; 22.10.2008 в 04:28.
Старый 22.10.2008, 13:59
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А что вы вообще там забыли, на stage?

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

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
2 etc:
Я внутри дочерней (когда она была ещё единственной флешкой) выставлял параметры для align и scaleMode, а так же проверял в одной функции где сейчас фокус (stage.focus).

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

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Цитата:
Сообщение от alekson Посмотреть сообщение
а можно ли сделать чтобы дочерняя флешка работала независемо со своим stage установленном при её проектировании? Т.к. не охото автомономную по сути флеху адаптировать под дочернию.
Нельзя.
stage - един, root - различен.

Старый 23.10.2008, 15:19
alekson вне форума Посмотреть профиль Отправить личное сообщение для alekson Найти все сообщения от alekson
  № 10  
Ответить с цитированием
alekson

Регистрация: Aug 2008
Сообщений: 128
Отправить сообщение для alekson с помощью ICQ
для передачи параметра в подгружаемую флешку сделал функцию в таймлайне
Код:
function setFile(value:String){
	xmlLoader.file=value;
	if (xmlLoader.file!=null) xmlLoader.loadData();
}
а вот загрузка самой swf
Код:
        private function completeHandler(event:Event):void {
	var mySFW:Object;
            try {
		mySFW=loader.content;
		mySFW.setFile("data/pie_data.xml");
		parentObject.addChild(mySFW);
            } catch (e:ReferenceError){
            	trace('ERROR: '+e);
            }
        }


Последний раз редактировалось alekson; 23.10.2008 в 15:23.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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