Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Баг флэша? (http://www.flasher.ru/forum/showthread.php?t=144795)

Anton Riot 21.09.2010 15:41

Баг флэша?
 
Наткнулся на тему в сообществе на фрилансере
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).

i.o. 21.09.2010 16:07

для начала неплохо заменить это:
Код AS3:

var doo:MovieClip=MovieClip(this.getChildAt(i));

на вот это:
Код AS3:

var doo:DisplayObject = this.getChildAt(i);

Тогда не станет вот этого:
Цитата:

а мувиклипы становятся в null
А после этих модификаций, было бы здорово увидеть ваш небольшой пример во fla, где такое проявляется. Потому что я вообще не понял как этот баг нужно воспроизводить.

Anton Riot 21.09.2010 19:12

Вложений: 1
станет, i.o., станет. В кадре и так только MovieClip'ы.

Вот, ещё раз повторюсь, это не мой пример во fla. Набрёл на него в сети. Вложил.

Волгоградец 21.09.2010 20:33

Скорее всего экземпляры не успевают добавляться - это не баг, а фича. Если поставить событие EXIT_FRAME, то все норм будет.

Rzer 21.09.2010 21:14

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.

DarkLight 23.09.2010 17:58

Баг есть. Баг в 10м плеере не появляется. Именуйте клипы по-разному, проще всего добавлять номер кадра в конец, и будет счастье. Дело именно в одинаковых именах.

Anton Riot 23.09.2010 23:53

Хм. Спасибо, а подробнее про эту проблему не знаете?
Хотя, если в 10 нет, то и хрен с ним.


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

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