![]() |
Как объекту убить самого себя?
собственно вопрос
|
Никак.
|
Хм.
Но если очень хочется, а нельзя, то вроде можно: Код:
zz={} |
Ну вы же понимаете, что это, мягко говоря, не есть решение?
|
Ничего лучшего пока не придумал, но хоть так работает. :)
|
Цитата:
Код:
zz = {}; |
У Object-a нет команды самоликвидации.
Вы просто удаляйте всё по мере необходимости и всё: Код:
var s:Sound = new Sound(); |
Вопрос был "Как объекту убить самого себя?"
Я в примере как раз и добавил метод "самоликвидации". Правда в функции лишняя строчка, надо так: Код:
function kill() { |
Жень Шень, а смысл создавать лишнее?
Если просто вызвать ф-цию: Код:
kill();Код:
zz.kill();Соответственно вот это: Код:
zz.kill = killПолучится: Код:
zz = {};Что бы объект убил себя, нужно что-то типа такого: Код:
var o:Object = new Object(); |
Жень Шень, есть одна проблема, в функции явно указывается имя объекта, поэтому применить его к любый объектам не получится.
Поэтому, лучше сразу задавать имя объекту Код:
function Obj (parent, name) { |
Как правильно сказал iNils, есть проблема - в функции не должно быть явно указано имя объекта. Поэтому код типа
Цитата:
Но и создавать объект, дополнительно задавая ему (по сути вручную) параметром его же имя - тоже неверно. Если разобраться, то iNils выполнил тот же код: Цитата:
в моем коде, типа Цитата:
1) объект может лежать вовсе не на _root, а так как свойства _parent у объекта нет, придется искать его какой-нибудь рекурсией 2) может случиться перекрытие имен с death - а вдруг у объекта уже есть смысловая переменная с таким же именем? |
а если так
Код:
var zz1:Object={}; |
Объекты не должны сами себя удалять, это ошибка в дизайне...
|
Цитата:
Код:
...Но хорошо, что проблема с перекрыванием имен оказалась надуманной мной - переменная типа death не требуется: Код:
Object.prototype.del=function(){Цитата:
add: Не люблю рекурсию, но пока ничего иного не придумал: Код:
Object.prototype.del=function(path, firstThis){ |
>>Тем более что они МОГУТ себя удалять ..
во всех приведенных примерах, насколько я смог понять, экземпляры объектов НЕ УДАЛЯЮТ САМИ СЕБЯ, что они делать не могут и не должны по определению. А отдать другому объекту-киллеру ссылку на себя с призывом "вот он я, убей меня быстрее!" - что тут заморочного? всегда так и делают в принципе. то что в прототипе вы прописываете метод del, ничего не меняет по сути, только вносит путаницу и все. |
Цитата:
Код:
мой_мувик.removeMovieClip()А замороченного тут только то, что объект не знает ни своего имени ни своего родителя. Цитата:
|
Развивая мысль, может так:
Код:
Object.prototype.del=function(LVL) |
Цитата:
|
Цитата:
Код:
Object.prototype.del=function(LVL)Цитата:
Недостаток в коллекцию: Код:
a = {}; |
Ей богу, вы занимаетесь ерундой. Не нужно удалять объекты из себя, это не правильно логически и может привести к сбою, например, если вы попытаетесь этот ваш метод вызвать в теле цикла фор-ин. (скорее всего он просто не сработает)
|
Не, Vertax, у вас глобал не отлавливает
Код:
_global.z={}Цитата:
add: Но кажется я победил зацикливание по ссылке на другой объект: Код:
Object.prototype.del=function(path, firstThis){ |
Цитата:
|
Я просто хотел сказать, что в этой логике получается, что ни один объект, включая мувиклип, себя напрямую не убивает - все равно идет обращение к команде-киллеру (встроенной или внешней). Но я всего-лишь хотел сделать аналог removeMovieClip(), но только для объектов.
|
А сделать delete для мувиклипа нет желание? :D
|
Цитата:
Пример использования - программная анимация частиц, когда мувиклипы аттачаться на сцену и умирают, когда проигрывают свою анимацию. |
Надеюсь бить меня никто не будет, если я напомню, что в ас2 объекты вручную вообще удалить нельзя?
Можно удалить все ссылки на него из-вне, тогда он убивается автоматически. upd В связи с этим все недовольства по поводу того, что вызывается delete %имя_объекта% — беспомощны. В связи с этим максимум, что можно сделать — покрутить вариант, предложеный iNils на первой странице. Например так: Код:
this.createObj=function (name) { |
| Часовой пояс GMT +4, время: 02:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.