|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2010
Сообщений: 91
|
Flex, gotoAndStop и элементы на stage
Есть символ, который содержит несколько кадров, каждый кадр имеет имя и содержит некоторые элементы (текстовые поля, картинки и т.п.). Элементы одного кадра могут отсутствовать в других.
В одном кадре есть текстовое поле time, в других нет. Этот символ эмбедится в класс и в классе есть функция, в которой происходит gotoAndStop(этот кадр) и запись текста в поле. Но. При первом вызове функции текстовое поле является null (данный кадр не первый). При втором и последующих все нормально. Но если перемотать на другой кадр, то его элементы будут null при первом вызове. При перемотке назад, опять элементы этого станут несуществующими до следующих вызовов. Выглядит так, как будто флекс не перематывает кадры с первого раза. В чем проблема? Добавлено через 17 минут Оказывается он как раз перематывает кадр, но элементы остаются null (а при последующих вызовах, он уже на кадре, потому перематывать не надо, но элементы в какой-то момент появились и остаются доступными) |
|
|||||
Сразу после вызова gotoAndStop элементы еще неготовы, т.е. они еще не инстанцировались. Как вариант повесьте в классе который содержит этот клип слушатель на ENTER_FRAME, выждите один кадр и можете обращаться к вашим объектам.
P.S. В этом разделе постят вопросы связанные с использованием flex framework. То, что вы компилируете ваше приложение с использованием Flex SDK, не делает его "флекс-приложением". Подобные вопросы лучше постить в разделе ActionScript 3. |
|
|||||
Регистрация: Aug 2010
Сообщений: 91
|
А как выждать один кадр? Дело в том, что там каждый кадр является ключевым. Если выждать один кадр, флекс перемотает на следующий, уже с другими контролами (а код во фреймах флекс не выполняет, потому сделать несколько кадров и поставить stop() в последнем нельзя).
Я так понял, перед перемоткой подписываемся на ENTER_FRAME, а в обработчике этого события обращаемся к контролам? P.S. Как перенести тему? |
|
|||||
Цитата:
var clipWithControls:MovieClip = new MyClip(); private function gotoCotrols():void { clipWithControls.gotoAndStop(2); addEventListener(Event.ENTER_FRAME, waitNextFrame); } private function waitNextFrame(event:Event):void { removeEventListener(Event.ENTER_FRAME, waitNextFrame); //вот тут контролы должны быть готовы } |
|
|||||
Регистрация: Aug 2010
Сообщений: 91
|
Не, все равно проблема остается.
|
|
|||||
Регистрация: Jul 2008
Сообщений: 107
|
Дайте, пожалуйста, кусок исходника. Будет гораздо быстрее.
|
|
|||||
Регистрация: Aug 2010
Сообщений: 91
|
public function showFeaturedItemToolTipAt(text:String):void { gotoAndStop("featuredItemToolTip"); var format:TextFormat = new TextFormat(FontManager.LaCartoonerie, 12, 0x000000, true); time.visible == false; time.defaultTextFormat = format; time.embedFonts = true; time.text = text; time.width = time.textWidth + 5; var whiteSpace:int = bg.width - (time.width + fbIcon.width + 5); time.x = bg.x + whiteSpace/2; fbIcon.x = time.x + time.width + 5; time.visible == true; } |
|
|||||
Регистрация: Jul 2008
Сообщений: 107
|
А точно пробовали то, что alatar писал?
По сути что-то вроде этого должно работать: private function onSmth():void { mc.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); mc.gotoAndStop("frameWithTextField"); } private function onEnterFrameHandler(event:Event):void { if(mc.currentFrameLabel == "frameWithTextField") { mc.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); time.text = "12.00"; } } |
|
|||||
Регистрация: Aug 2010
Сообщений: 91
|
Да, сделал именно так. Тем более, что mc.currentFrameLabel == "frameWithTextField" сразу после строчки mc.gotoAndStop("frameWithTextField"); если верить дебаггеру. Самое примечательно, что у людей, которые писали этот код, он прекрасно работает (это игра на фейсбука). А у нас (мы портируем ее) вылазят глюки в этом месте. Может версия флекса влияет или настройки компилятора?
|
|
|||||
Регистрация: Jul 2008
Сообщений: 107
|
У меня ошибка mc.time.text = "...";
Значит что-то вы все-таки упустили... Не знаю как вам помочь. Можете еще кусок fla кинуть. Возможно, когда собирать будете , то увидите в чем была беда. Так часто бывает.. |
Часовой пояс GMT +4, время: 11:33. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|