2015-06-24 2 views
0

Я загружаю swf-файл и создаю объект MovieClip из Linkage в swf-библиотеке. В кадре MovieClip есть два кадра, разделенные, без анимации. В кадрах или объектах отсутствует код. Все объекты в кадрах - это MovieClips, каждый из которых содержит в себе один кадр с графическим объектом. В первом кадре 12 объектов и 1 на втором кадре.Удаление ребенка из временной шкалы MovieClip

swf file first frame

Я пытаюсь удалить один из объектов с первого кадра:

var mc:MovieClip = new clss() as MovieClip; 
trace("total frames: "+mc.totalFrames); 
mc.gotoAndStop(1); 
trace("first frame numChildren: "+mc.numChildren); 
mc.removeChildAt(0); 
trace("first frame numChildren: "+mc.numChildren); 
mc.gotoAndStop(2); 
trace("second frame numChildren: "+mc.numChildren); 
mc.gotoAndStop(1); 
trace("first frame numChildren: "+mc.numChildren); 

И я получил:

total frames: 2 
first frame numChildren: 12 
first frame numChildren: 11 
second frame numChildren: 1 
first frame numChildren: 12 

Почему снова 12 объектов?

ответ

1

Вкратце: не используйте рамки.

В арбузе: рамка как состояние. Вы можете манипулировать состоянием, но всякий раз, когда вы возвращаетесь к кадру, восстанавливается исходное состояние.

Вот почему кадры - ужасный выбор, когда дело доходит до контроля потока программы: они не сохраняют свое состояние.

Вот почему вы не должны использовать фреймы для организации состояний объекта. По крайней мере, если вы хотите изменить свое состояние.


Там есть противоречие в вашем заявлении:

и имеет один кадр с ним в графическом. В первом кадре 12 объектов и 1 на втором кадре.

Он либо имеет один кадр с графикой, либо имеет 12 и 1 объект на кадрах 1 и 2 соответственно, что означает 2 кадра с графикой.


У вас уже есть имя класса, связанного с объектом: clss Это не очень описательный характер. Он также должен начинаться с заглавной буквы. Circles или CircleGroup звучит как более подходящее, учитывая изображение в вашем вопросе. Теперь все, что вам нужно сделать, это добавить методы к классу, которые изменяют состояние объекта с 12 кругов только на 1.

Учитывая простоту и кажущуюся случайность размещения, я бы не создал символ библиотеки и не делал это все в коде. Для этого вам нужно связать символ круга с именем класса, чтобы создать его экземпляры.

+0

Я имею в виду, «каждый MovieClip на временной шкале состоит из одного кадра с графическим объектом в нем». Я исправлю описание. – Porcelain

+0

Я опишу проблему, которую я пытаюсь решить. SWF-файл - это моя внешняя библиотека ресурсов, которую я пытаюсь проанализировать. Временная шкала каждого элемента содержит анимацию и заполнители. Я делаю два прохода. Сначала я записываю позицию всех заполнителей и удаляю их из MovieClip. На втором проходе я делаю PNG-последовательность временной шкалы. И я был очень удивлен, когда после второго прохода я обнаружил удаленные заполнители, видимые на PNG-изображениях. Я думаю, единственный способ решить мою проблему сейчас - сделать всю работу за один проход. Благодаря! – Porcelain

+0

@Porcelain, в чем цель? Почему вы сохраняете png? Почему вы удаляете заполнители? Это DisplayObject ** Containers **, поэтому вы можете просто добавить свой контент к каждому заполнителю. – null

Смежные вопросы