![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
Проблема:
Есть флешка, к которой нужно создать внешний прелоадер. Когда флешка работает отдельно, то всё работает отлично. Нужно отметить, что в главном классе флешки я "запоминаю" stage и root, чтобы к ним можно было обратиться из любого места вот так: Когда эта флешка становится дочерней, т.е. когда её подгружают в другую, this.stage возвращает null. Можно ли это как-то решить? И вопрос #2: Хочется организовать передачу параметров из HTML в Flash, но т.к. у нас будет ещё и ролик прелоадера, то как правильно организовать передачу парамтетров из прелоадера в дочернюю флешку? За ранее спасибо. |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Цитата:
Использовать событие ADDED_TO_STAGE. Цитата:
Например, присвоить публичной переменной или передать в какой-либо публичный метод класса. |
|
|||||
|
Цитата:
http://www.flasher.ru/forum/showthread.php?t=115551
__________________
Дело не в тебе |
|
|||||
|
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
2 AL.exe:
Не могли бы вы выслать любой работающий пример с .as кодом и флешками? Просто я попробовал способ передачи через пары "имя=значение", но во-первых, он у меня не работает, во-вторых, этот способ не совсем правильный я считаю, т.к. флешки не должны при работе с ним кешироваться, да и вообще должен быть нормальный работающий способ сделать это. В общем, если у вас есть возможность, вышложите пожалуйста куда-нибудь исходники, чтобы я смог посмотреть наглядно что и как там. За ранее спасибо. |
|
|||||
|
Ну, вот, к примеру, по-быстрому склепал пример с присвоением публичной переменной главного класса какого-то значения из прелоадера:
/* 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")
}
}
}
Вывод будет вот такой: Собственно вот, как Вы и хотели, безо всяких строк с парами имя=значение. P.S.Что-то я совсем засыпаю, забыл добавить в прелоадер получение FlashVars, но это, в принципе, обсуждалось уже на форуме: Вам нужно будет задействовать в коде прелоадера ассоциативный массив stage.loaderInfo.parameters
__________________
Дело не в тебе Последний раз редактировалось AL.exe; 22.10.2008 в 03:48. Причина: палю метаданные из флешдевелопа :D |
|
|||||
|
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
2 mre:
За "ADDED_TO_STAGE" спасибо большое, сам бы вряд ли нашёл. Что касается "в любой момент", то в любой момент не получилось бы, т.к. нужно было, чтобы параметр уже был передан до того, как дочернея флешка будет инициирована. Ниже мне правильно написали, что нужно использовать "loaderInfo.parameters" я об этом свойстве тоже не знал, пока форум не облазил сильно. Но в любом случае спасибо за помощь. 2 Al.exe: Огромное спасибо за то, что натолкнули меня на loaderInfo.parameters. Я у себя решил всё немного по другому, решил, что раз параметр уже есть в родительской флешке, то зачем его "плодить" ещё и в дочерней, просто обращаюсь из дочерней к родительской за нужным параметром. Спасибо вам =) Последний раз редактировалось koIIImarik; 22.10.2008 в 04:28. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А что вы вообще там забыли, на stage?
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
2 etc:
Я внутри дочерней (когда она была ещё единственной флешкой) выставлял параметры для align и scaleMode, а так же проверял в одной функции где сейчас фокус (stage.focus). |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Цитата:
stage - един, root - различен. |
|
|||||
|
для передачи параметра в подгружаемую флешку сделал функцию в таймлайне
function setFile(value:String){
xmlLoader.file=value;
if (xmlLoader.file!=null) xmlLoader.loadData();
}
Последний раз редактировалось alekson; 23.10.2008 в 15:23. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|