![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
Доброе время всем. Вопрос вроде несложный, но решить не получается.
В главном классе документа командуется загрузка некоторого количества свф, которые содержат различные кнопки, текстфилды и т.д. Все содержимое имеет уникальные инстансы. А как бы до него добраться из главного класса? Вот фрагмент кода. Помогите пожалуйста разрулить проблемку. ... swfLdr = new Loader(); url = new URLRequest(); swfLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded); ... url.url='History.swf'; swfLdr.load(url); // private function swfLoaded(e:Event):void{ // hist=swfLdr.content as MovieClip; holder.addChild(hist); trace(hist.test)//Error 1119 //И клип с инстансом ok_btn недоступен (hist.ok_btn) } |
|
|||||
|
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
Это у вас юмор такой?
Или я не особо ясно спросил? test - это переменая в первом кадре 130-фреймового таймлайна клипа History.swf. ok_btn - клип, расположенный там же. На него хотелось бы, как-то пресс-релизы отследить в главном классе. Ни то, ни другое не отслеживается. Дубликат проекта в АС2 версии, прекрасно все видит Последний раз редактировалось MOHCTEP; 24.01.2009 в 03:12. |
|
|||||
|
strange mood
|
Цитата:
Делая так, вы говорите, что класс загруженного swf - MovieClip, а значит, даже если бы этот swf имел какой-то расширенный класс, так вы сможете получить доступ только к свойствам, описанным в MovieClip. А вот достать оттуда экземпляр можно:
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
так значит у вас 130 фреймов и в каждом написан код в кадре, а вам нужно получить переменную из первого кадра?
Для это нужно в подгруженном ролике перейти в первый кадр и остановить мувик. по вашему коду так теперь можно поработать с переменными находящимися в первом кадре и навешанными на него инстансами и прочее. |
|
|||||
|
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
cleptoman
Event.COMPLETE срабатывает после Event.INIT Alex Lexcuk Не в каждом. В 1 кадре var test:Number=85;Ну и в 2-х, 3-х - синхро стопы. Они в супе роли не играют. 'ok_btn' доступен по длине таймлайна. GAIKER Ни так ни сяк, свойство недоступно. Причем, когда в листенере комплита пытаюсь запросить, что-то находящееся внутри контента, сразу вылетает ошибка (попытка обращения к несуществующему чему-то) и стопы в главном фильме игнорируются. Запросы убираю - все грузится, стопится как надо, но нифига недоступно. Вобщем, вот архив - посмотрите пожалуйста. Болеет кнопка "История". |
|
|||||
|
Найдите 10 отличий (все работает)
package {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
//
public class Main extends MovieClip {
//private var ;
//public var ;
private var swfLdr:Loader;
private var url:URLRequest;
private var holder:Sprite;
//
private var hist:Object;//просто объект
//
public function Main():void {
this.stop();
init();
}
//
private function init():void {
//this.stop();
holder = new Sprite();
addChild(holder);
addChild(swfLdr = new Loader());
url = new URLRequest();
swfLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
start_btn.addEventListener(MouseEvent.CLICK, clickHandler);
history_btn.addEventListener(MouseEvent.CLICK, clickHandler);
close_btn.addEventListener(MouseEvent.CLICK, clickHandler);
//holder.addEventListener('PressButton',butPressed);
}
//
//
//
//
/*EVENT LISTENERS*/
//
private function clickHandler(e:MouseEvent):void {
//
trace(e.target, e.target.name, e.target.parent);//
switch (e.target.name) {
case "start_btn" :
this.gotoAndStop('Game');
//function
break;
case "history_btn" :
this.gotoAndStop('History');
url.url='HistoryAS3.swf';
swfLdr.load(url);
break;
case "close_btn" :
fscommand("quit");
break;
}
}
//
private function swfLoaded(e:Event):void{
//
trace(e.target, e.target.content)
hist=swfLdr.content;
//holder.addChild(hist);
//addChild(holder);
trace("Трассируем кнопку "+hist.ok_btn);
//trace(hist.getChildByName('ok_btn'));
//var mc= hist.ok_btn as MovieClip;
trace(hist);
}
//
private function butPressed(e:MouseEvent){
trace(e,e.target,e.currentTarget, e.currentTarget.name);
for(var i=0;i<holder.numChildren;i++){
trace(i,holder.getChildAt(i));
}
}
//
}
}
[object MovieClip] history_btn [object Main] [object LoaderInfo] [object MainTimeline] Трассируем кнопку [object MovieClip] [object MainTimeline] http://www.dnadillo.dn.ua/fla/Load-ext-dog.html |
|
|||||
|
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
Alex Lexcuk
Спасибо! Кочка то была еще в том, что "просто объект" не добавить в дисплей лист, стало быть - кина не будет. Но кнопка, теперь доступна. Ладно, сделаю покуда переменную сию нетипизированной - работает вроде. |
|
|||||
|
>>Спасибо
Не зачто. >>не добавить в дисплей лист Он добавляется так: >>Не типизированная переменная а, объект это тип. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|