пытаясь удалить MovieClip со сцены - PullRequest
1 голос
/ 03 декабря 2010

Я немного расстроен попыткой удалить мувиклип со своей сцены после того, как с ним покончено. При загрузке моего фрейма у меня есть немного кода в функции, которая создает круговую диаграмму.

var piechart: MovieClip = new MovieClip (); stage.addChild (PieChart); // Затем еще куча, чтобы нарисовать круговую диаграмму

Так что этот фрагмент кода НЕ находится на моем слое "Actions". Теперь у меня есть кнопка на этом кадре, которая перемещается к другому кадру на временной шкале, но когда я меняю кадры, круговая диаграмма остается. Итак, как мне удалить эту круговую диаграмму со сцены после того, как я закончу с ней? У меня есть попытки stage.removeChild (...) и другие, но, возможно, я называю это неправильно? Любая помощь будет оценена.

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 декабря 2010

Myk прав, лучше не кодировать на временной шкале.В любом случае, одним из быстрых решений является просто очистить сцену перед тем, как уйти от текущего кадра.

Например:

   function nextFrame(event:MouseEvent ):void
   {
        //if you're still in the same frame , this should work...
        stage.removeChild( pieChart );

        //then move on...
        gotoAndStop('whereverYouWannaGo');
   }
2 голосов
/ 03 декабря 2010

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

Тем не менее, есть разные способы убрать вещи со сцены. Если вы хотите удалить все со сцены, потому что вы переходите или что-то в этом роде, что-то вроде этого работает:

while (this.numChildren > 0) {
     this.removeChildAt(0);
}

С другой стороны, если существует путаница в отношении того, кто является конкретным родителем вашего объекта, вы можете использовать код, подобный этому:

if (pieChart.parent) { // checks to see if it actually has a parent
     pieChart.parent.removeChild(pieChart);
}

Таким образом, даже если вы случайно потеряли отслеживание вашей ссылки на родительский объект (как это может легко случиться, если вы делаете код временной шкалы), вы все равно можете получить ссылку, вызвав родительское свойство самого объекта. Имеет ли это смысл?

0 голосов
/ 11 апреля 2013

использовать gotoAndStop ("требуемый кадр")

если вы попытаетесь перейти к AndPlay, предыдущие кадры продолжат воспроизводиться

...