Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как объекту убить самого себя? (http://www.flasher.ru/forum/showthread.php?t=111679)

chingachgoog 05.05.2008 13:09

Как объекту убить самого себя?
 
собственно вопрос

etc 05.05.2008 13:20

Никак.

chingachgoog 05.05.2008 13:45

Хм.
Но если очень хочется, а нельзя, то вроде можно:

Код:

zz={}
zz.test="qwerty"

trace(zz.test)
trace(zz)

zz.del=function(){
        this.death=true
        for (var i in _root) {
                if (_root[i].death){
                        delete _root[i]
                }
        }
}

zz.del()



trace(zz.test)
trace(zz)


etc 05.05.2008 16:30

Ну вы же понимаете, что это, мягко говоря, не есть решение?

chingachgoog 05.05.2008 18:08

Ничего лучшего пока не придумал, но хоть так работает. :)

Жень Шень 05.05.2008 18:29

Цитата:

Сообщение от chingachgoog (Сообщение 737253)
Хм.
Но если очень хочется, а нельзя, то вроде можно:

Так проще:
Код:

zz = {};
zz.kill = kill
zz.test = "qwerty";
trace(zz.test);
trace(zz);
zz.kill();
trace(zz.test);
trace(zz);
//
function kill() {
 zz={}
 delete zz
}


Molecula 05.05.2008 18:34

У Object-a нет команды самоликвидации.
Вы просто удаляйте всё по мере необходимости и всё:
Код:

var s:Sound = new Sound();
trace(s)
delete s;
trace(s);

Можно расширить класс, добавив св-ва и методы, а после уже наследоваться от него.

Жень Шень 05.05.2008 19:20

Вопрос был "Как объекту убить самого себя?"
Я в примере как раз и добавил метод "самоликвидации".
Правда в функции лишняя строчка, надо так:
Код:

function kill() {
 delete zz
}


Molecula 05.05.2008 19:41

Жень Шень, а смысл создавать лишнее?
Если просто вызвать ф-цию:
Код:

kill();
Вместо строки:
Код:

zz.kill();
Эффект один и тот же.
Соответственно вот это:
Код:

zz.kill = kill
само собой отпадает.

Получится:
Код:

zz = {};
zz.test = "qwerty";
kill();
function kill() {
 delete zz
}

То же, что и я написал на верху.

Что бы объект убил себя, нужно что-то типа такого:
Код:

var o:Object = new Object();
o.onPress = kill;
function kill(){
this.destroyItSelf();
trace(o)// undefined;
}


iNils 05.05.2008 19:43

Жень Шень, есть одна проблема, в функции явно указывается имя объекта, поэтому применить его к любый объектам не получится.
Поэтому, лучше сразу задавать имя объекту
Код:

function Obj (parent, name) {
        this.parent = parent;
        this.name = name;
        this.test = "qwerty";
}
Obj.prototype.del = function () {
        delete this.parent[this.name];
};
var obj1 = new Obj (this, "obj1");
var obj2 = new Obj (this, "obj2");
_global.obj3 = obj1;
trace (obj1 + " " + obj1.test);
trace (obj2 + " " + obj2.test);
obj1.del ();
trace (obj1 + " " + obj1.test);
trace (obj2 + " " + obj2.test);
obj2.del ();
trace (obj1 + " " + obj1.test);
trace (obj2 + " " + obj2.test);



Часовой пояс GMT +4, время: 01:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.