|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: 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, время: 14:24. |
|
« Предыдущая тема | Следующая тема » |
|
|