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

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.09.2010, 15:41
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 1  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
По умолчанию Баг флэша?

Наткнулся на тему в сообществе на фрилансере
http://www.free-lance.ru/commune/?id...c&post=1195427

Скачал пример, посмотрел - вспомнил, что у себя тоже когда-то было такое, и в конце концов я решил, что это какой-то баг флэша и ничего с этим не поделать.

А всё-таки, в чём причина?
для тех, кто там не может смотреть:
Код AS3:
function onEntFrame(e:Event):void{ 
trace("======\nFrameNo:"+this.curren tFrame+" childs:"+this.numChildren); 
for(var i:int=0;i<this.numChildren;i++){ 
  var doo:MovieClip=MovieClip(this.getChildAt(i)); 
  var dooName:String=""; 
  if(doo){ 
    dooName=doo.name; 
  } 
  trace(doo+" "+dooName); 
  } 
}
При этом имеется анимационный ролик, в котором в каждом кадре одинаковое число одинаковых мувиков (одинаково названых). Проблема в том, что функция, возвращая всегда одинаковое число numChildren, тем не менее иногда возвращает null как getChildAt(i).

Старый 21.09.2010, 16:07
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
для начала неплохо заменить это:
Код AS3:
var doo:MovieClip=MovieClip(this.getChildAt(i));
на вот это:
Код AS3:
var doo:DisplayObject = this.getChildAt(i);
Тогда не станет вот этого:
Цитата:
а мувиклипы становятся в null
А после этих модификаций, было бы здорово увидеть ваш небольшой пример во fla, где такое проявляется. Потому что я вообще не понял как этот баг нужно воспроизводить.


Последний раз редактировалось i.o.; 21.09.2010 в 16:10.
Старый 21.09.2010, 19:12
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 3  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
станет, i.o., станет. В кадре и так только MovieClip'ы.

Вот, ещё раз повторюсь, это не мой пример во fla. Набрёл на него в сети. Вложил.
Вложения
Тип файла: zip f_4c984d7229019 (1).zip (27.3 Кб, 31 просмотров)

Старый 21.09.2010, 20:33
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Скорее всего экземпляры не успевают добавляться - это не баг, а фича. Если поставить событие EXIT_FRAME, то все норм будет.

Старый 21.09.2010, 21:14
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 5  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
For the coders, and others working in Flash, is the ability to use addFrameScript to perform actions when a frame is fully initialized and children are on stage, similar to onLoad() in AS2, where-as use of ENTER_FRAME gets called prior to children in that movieclip getting called...this is similar to onInit() in AS2. So for example you can have a button only on a particular frame and setup it's event listener to call your controller...in another swf, regardless of what the playhead is doing.

You should be aware if using that approach that when the framescript is called via the ENTER_FRAME, items in the frame may have not been added yet, so this approach can't be used to bind to objects on the timeline (e.g. to registerListeners to buttons), this the addFrameScript does not suffer from.

Старый 23.09.2010, 17:58
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 6  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Баг есть. Баг в 10м плеере не появляется. Именуйте клипы по-разному, проще всего добавлять номер кадра в конец, и будет счастье. Дело именно в одинаковых именах.
__________________
4am is time to rock

Старый 23.09.2010, 23:53
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 7  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
Хм. Спасибо, а подробнее про эту проблему не знаете?
Хотя, если в 10 нет, то и хрен с ним.

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

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

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


 


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


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