давайте сделаем это немного за раз ...
slate.event.target.removeChild(_elementArray[0]);
в background.as
почему вы используете slate.event
?
вы проходитеevent
объект для функции, но похоже, что вы используете цель другого события, которое я не знаю, откуда оно происходит или почему оно не выдает ошибку.
это должно быть простоevent.target
, который должен дать вам PageElement (ранее известный как _newElement)
я также не знаю, почему вы удаляете из него дочерний элемент _elementArra [0] - который на самом деле является другим PageElementи, вероятно, само по себе, если у вас есть только один.
, поэтому мне кажется, что есть куча вещей, которые должны были выдавать ошибки.Что вы используете для компиляции вашего кода?Как насчет отладчика?Вы используете какой-нибудь?
Если вы посмотрите на свой предыдущий вопрос, я добавил туда код о том, как получить родителя.Поэтому я настроил его немного
function deleteElement($e:MouseEvent):void{
var parentMC:MovieClip = $e.target.parent;
parentMC.removechild($e.target);
}
, однако проблема в том, что вы не передаете MouseEvent, а пропускаете пустое событие
dispatchEvent(new Event("closeWindow", true));
в DeleteBack.as
так что это ничего не пропустит под цель, и вы не можете получить это.(цель доступна только для чтения, поэтому new Event(etc)
всегда будет иметь нулевую цель. По сути, это немного проигрышная задача.
вы можете установить объект в вашем синглтоне и передать, какой mc должен быть удален,и затем deleteElement просто захватит этот объект. Другой вариант - заглянуть в класс сигналов , который позволит вам сделать более эффективную / более эффективную обработку событий.
наконец (вроде как,это еще не все, но пока) Я бы сказал, что стоит изучить использование CASAlib, в частности, использовать CasaMovieClip вместо MovieClip для расширения, так как это будет лучше удалять ваши видеоклипы. Если у вас много слушателей событий, и вы их не очищаетедолжным образом, они останутся в памяти даже после того, как вы их удалите.
Конечно, изучать другие фреймворки, такие как RobotLegs, тоже неплохая идея, она поможет вам получить лучшие практики.
GL
Редактировать ...
Каркасы / микроархитектуры:
http://www.robotlegs.org/
http://swizframework.org/
http://puremvc.org/
и многие другие
Я думаю, что важно не застрять на каркасе (хотя я часто упоминаю это слово).И лучший фреймворк - это фреймворк, который лучше всего подходит для вас, и для меня это означает, что мы предлагаем хорошую коммуникационную основу для приложения и не вмешиваемся.
Моя настройка для написания кода следующая:
FlashDevelop с компилятором Flex.FlashDevelop предназначен только для ПК, поэтому, если вы работаете на Mac, вы можете рассмотреть другие варианты, такие как flex.FlashDevelop и Flex-компилятор (только компилятор) бесплатны, так что вы не ошибетесь, и как только вы начнете использовать его, вы не захотите возвращаться к кодированию во Flash - гарантировано !!
отладка:
Трассировка - это самая простая форма отладки, и понять проблему может быть довольно сложно.
Вы можете использовать флэш-отладчик, нажав Ctrl-Shift-Enter
для компиляции и запуска.Вам нужно будет заранее установить точки останова.
FlashDevelop имеет отладчик, который работает так же, как отладчики Flash и Flex, и я использую его довольно часто.
Но мой любимый инструмент отладки долженбыть de monster отладчик
это займет немного больше, чтобы реализовать, и вам нужно добавить некоторый код, но он обнаружил проблемы для меня, что я не мог добраться до использования отладчика по умолчаниютолько.Определенно стоит посмотреть.