Просмотр полной версии : Шлейф за объектом
Всем привет,
Пытаюсь сделать шлейф за движущимся объектом (не за мышью - хотя какая разница)
на главной сцене код создающий "детей" объекта с классом shlejf (мувик в библиотеке)
addEventListener(Event.ENTER_FRAME,loop);
function loop(e:Event):void{
var shlejf_obj:shlejf = new shlejf();
this.addChild(shlejf_obj);
shlejf_obj.x=obj.x;
shlejf_obj.y=obj.y;
obj.x+=3;
}
Как мне постепенно удалять ненужные мувики ("детей") из шлейфа
Пробую делать через removeChild, на последнем кадре в shlejf`e пишу
removeChild(DisplayObject(this));
выдает ошибку про нулевой объект, как превозмочь?
MikroAcse
13.03.2013, 18:42
removeChild(DisplayObject(this));
Хм... удалить себя из себя?
Может, так? (если в самом шлейфе)
parent.removeChild(this);
Или так? (если в главном классе)
removeChild(shlejf);
Кстати, переименуй shlejf в plume, ну или в другое английское слово, а то ужас... :)
Ругается
"Не удается вызвать свойство или метод со ссылкой на объект "null"
MikroAcse
13.03.2013, 18:56
"Не удается вызвать свойство или метод со ссылкой на объект "null"
На какое свойство ругается?
на последний кадр в объекте shlejf на котором "parent.removeChild(this);"
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at shlejf/frame40()
strangedk
13.03.2013, 19:23
на последний кадр в объекте shlejf на котором "parent.removeChild(this);"
Если код уж в кадрах, то он должен быть в одном кадре.
Код из одного кадра не знает что происходит с кодом из другого кадра.
Код из одного кадра не знает что происходит с кодом из другого кадра. Не совсем так.
Если вы в первом кадре напишите var a:int = 5; а в 5 кадре сделаете trace(5) то получите 5 - без вариантов :) Там немного своя система, еще до конца не изученная на 100%. Например, если маска сделанная в IDE динамическая, то есть с каждым кадром меняется, то некоторые действия кода - могут отменяться при наступлении след кадра. Сейчас на пальцах это объяснить сложно - но проблема существует и оч болшая
PainKiller
14.03.2013, 10:53
плюс к вышесказанному, прежде чем использовать строчку
parent.removeChild(this);
я бы еще проверил чему равен parent
плюс к вышесказанному, прежде чем использовать строчку
parent.removeChild(this);
я бы еще проверил чему равен parent
вывел парент через трейс - [object MainTimeline]
На AS2 делал так:
Добавлял на сцену дубликат MovieClip, а потом строчкой в самом клипе
удалял его parent.removeMovieClip(this);
а с addChild это не прокатывает
Блин вроде бы простейшая задача - а не все так просто оказалось )))
Zebestov
14.03.2013, 12:07
Если вы ... в 5 кадре сделаете trace(5) то получите 5 - без вариантов
Внезапно.
Так что делать то, как реализовать?
Есть конечно вариант - делать анимацию добавленных мувиков в прозрачность (типа исчезновение).
Но ониж будут оставаться на сцене + память хавать.
Можно еще их через определенное время все через цикл с главной сцены стирать - но блин что проще никак нельзя?
Zebestov
14.03.2013, 12:31
Так что делать то, как реализовать?
Уже ответили.
if (parent) parent.removeChild(this);
Если не работает, ищи ошибку в другом месте кода.
ДА!!!
Спасибо всем большое.
Внезапно. Черт опечатка trace(a) - но получилось смешно)))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.