Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Удаление объектов и добавление


Автор: neoks 3.12.2013, 19:14
Написал скрипт app к которому подключаются скрипт для автоматического обновление, с целью не писать у каждого объекта .update() за меня делает это app, вот пример скрипта app

Код

var app = new function(){
    this.objects = [];

    this.add = function(a){
        this.objects.push(a);
    }
    
    this.remove = function(a){
        this.objects.splice(this.objects.indexOf(a), 1);
    }
    
    this.getObjects = function(call){
        for(var i = 0; i < this.objects.length; i++) call(this.objects[i]);
    }

    this.destroy = function(){
        this.getObjects(function(a){
            a.destroy();
        })
   }
})


Так вот к апп подключаются дополнительные скрипты

Код

app.graphics = function(){
    app.add(this);
}
app.graphics.prototype = {
    destroy: function(){
        app.remove(this)
    },
    update: function(){
        // вызывается из app для обновления 
    }
}


Затем где та я создаю обьект к примеру

Код

new graphics({
    // всякие параметры там
})


то есть я создал обьект и он сам обновляется, мне не приходится присваивать его к переменной и вызывать постоянно graphics.update()

По сути все работает как надо, все обновляется и удаляется когда я вызываю app.destroy() но вот тут и начинаются сюрпризы, по какой та причине не все удаляется и я не знаю почему, проверяю я методом console.log() в graphics.destroy чтобы убедится что graphics полностью удален, но почему та не всегда срабатывает console.log() и музыка продолжает играть.

Почему не все удаляется ? это происходит по разному, что-то удаляется а что то нет, и правильно ли я написал app ?
Я стремлюсь сделать чтобы главный app обновляем все объекты что в нем есть, такое понятие как children, но не знаю как правильно его сделать)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)