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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.02.2010, 13:19
dmitlantis вне форума Посмотреть профиль Отправить личное сообщение для dmitlantis Найти все сообщения от dmitlantis
  № 1  
Ответить с цитированием
dmitlantis

Регистрация: Jan 2010
Сообщений: 15
По умолчанию Дружба AS3 c кадрами

Доброго времени суток, уважаемые знатоки!
На днях столкнулся с удручающим нонсенсом, так до конца и не поняв баг это или нет...
Суть нонсенса вот в чём...
1) Создадим новый проект AS3
2) Создадим в библиотеке 5 символов-мувиклипов с идентификаторами экспорта:
Test, a1, b1, c1, d1
3) Поместим символы с ид. а1 и с1 на 1ый кадр Тест, а с1 и д1 на 2ой кадр
4) Напишем на временной шкале следующий код:


Код AS3:
var mc:MovieClip = new Test();
addChild(mc);
mc.gotoAndStop(1);
trace(mc.getChildByName("a")); // Выдает [object a1]...
trace(mc.getChildByName("b")); // Выдает [object b1]...
mc.gotoAndStop(2);
trace(mc.getChildByName("c")); // Выдает null...
trace(mc.getChildByName("d")); // Выдает null

Если для кого не понятно: После смены кадра в родитесльком мувиклипе все дочерние объекты становятся недоступны, мало того:

Код AS3:
var mc:MovieClip = new Test();
addChild(mc);
mc.gotoAndStop(1);
trace(mc.getChildByName("a")); // Выдает [object a1]...
trace(mc.getChildByName("b")); // Выдает [object b1]...
mc.gotoAndStop(2);
trace(mc.getChildByName("c")); // Выдает null...
trace(mc.getChildByName("d")); // Выдает null
mc.gotoAndStop(1);
trace(mc.getChildByName("a")); // Выдает null
trace(mc.getChildByName("b")); // Выдает null
Если попытаться вернуться обратно на 1ый кадр после смены кадра на 2ой, объекты не восстановятся при чем:

Код AS3:
trace(mc.numChildren);
Выводит мифическое число 3, вместо 4ех реальных потомков, или хотябы 2ух (на 1ом или на 2ом кадре ), кто нибудь замечал подобное или хотябы догадывается с чем это связано? Ведь в АС2 никаких проблем с этим не было, все было предельно просто. Сменил кадр > обратился к содержимому.. а тут... такое.. Неужели АС 3 после ввода спрайтового класса настолько возненавидел кадры, что теперь придется вовсе исключить их из инструментов разработки?


З.Ы. К посту прилеплен Исходник с готовым содержимым , можете сами проверить и убедится
Вложения
Тип файла: rar AS3 Frames.rar (6.2 Кб, 33 просмотров)

Старый 16.02.2010, 13:28
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Нужно ждать enterFrame - да, баг извесный, в десятом плеере вроде что-то исправили. Ну не пишите код на временной шкале, она для анимации, в AS3 код пишут в классах.
__________________
Hell is the possibility of sanity

Старый 16.02.2010, 13:29
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 3  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
ну правильно...спрайты и мувиклипы не сразу инициализируются

Добавлено через 3 минуты
Цитата:
Нужно ждать enterFrame
в AS2 1-го диспатча enterFrame было достаточно...в AS3 не всегда все объекты успевали проинициализироваться за это время...поэтому можно использовать Timer с маленьким интервалом. Долбить им пока все станут не null (хотя есть ещё и другие типы и трики).

Ну а если вообще, то лучше не использовать фреймы...
__________________
Flash Developer
Папа TDP4 Team Battle


Последний раз редактировалось CrazyFlasher; 16.02.2010 в 13:34.
Старый 16.02.2010, 13:34
dmitlantis вне форума Посмотреть профиль Отправить личное сообщение для dmitlantis Найти все сообщения от dmitlantis
  № 4  
Ответить с цитированием
dmitlantis

Регистрация: Jan 2010
Сообщений: 15
Огромное спасибо!! А то я уже огрочился, что придётся отказаться от использвования кадров.
З.Ы. Я написал код на таймлайне только для упрощения примера, конечно, я пишу всё в классах

Старый 16.02.2010, 19:09
oleg_tomenko вне форума Посмотреть профиль Отправить личное сообщение для oleg_tomenko Найти все сообщения от oleg_tomenko
  № 5  
Ответить с цитированием
oleg_tomenko

Регистрация: Feb 2010
Адрес: Донецк
Сообщений: 34
Я делал dispatchEvent из кадра и в обработчике уже обращался к клипам на кадре. Помогает, не знаю как при 150 клипах, но 5—10 работают.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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