унаследовать createjs.Container из библиотеки opensjs

Я использую Easeljs в свободное время. Я попытался наследовать контейнер от объекта createjs в библиотеке Easeljs.

    var innovative = {};
innovative.object = {};

innovative.object.Basic = function () {

};

//innovative.object.Basic.prototype = new createjs.Container;

innovative.object.LocalPhoto = function (data) {
};

innovative.object.LocalPhoto.prototype = new innovative.object.Basic;
innovative.object.LocalPhoto.prototype.constructor = innovative.object.LocalPhoto;

У меня есть функция в LocalPhoto, которая добавит себя на сцену, как это

innovative.object.LocalPhoto.prototype.load = function (stage, event) {
    var self = this;
            stage.addChild(self);
            stage.update();

};

Вот как я создаю объект LocalPhoto

  var self = this;
                        for (var i = 0; i < values.length; i++) {
                            this.download (values[i], function (evt) {
                                var photo;
                                photo = new innovative.object.LocalPhoto(evt.target.object);

                                photo.load(self.stage, evt);
});
}

Проблема, с которой я сталкиваюсь, заключается в том, что когда я добавляю LocalPhoto на сцену, остальная часть localPhoto на этой стадии также добавляет ту же фотографию.

Вот что я имею в виду в шагах: 1) вставьте изображение в контейнер и добавьте его на сцену. 2) другое изображение в новом контейнере и добавленное на сцену. В то же время более позднее изображение также добавилось в другой дочерний контейнер, который я добавил на сцену.


person LittleFunny    schedule 14.08.2014    source источник
comment
Не совсем понимаю.. У меня есть контейнер, унаследованный от класса Basic, тогда у меня есть LocalPhoto, унаследованный от Basic... Каким-то образом предыдущее LocalPhoto было связано с созданным позже LocalPhoto   -  person LittleFunny    schedule 16.08.2014
comment
о, я знаю, почему... я должен вызвать инициализацию для контейнера... но почему мы заставляем это делать, а не скрываем нас..   -  person LittleFunny    schedule 17.08.2014
comment
Потому что инициализация аналогична вызову super() в традиционном языке ООП. JavaScript не поставляется с super, поэтому ему нужен способ инициализации унаследованного класса.   -  person Makzan    schedule 18.08.2014
comment
О, это инициализирующая часть функции javascript или класс createjs   -  person LittleFunny    schedule 19.08.2014


Ответы (1)


(function() {

function YourFunc(param) {
    this.Container_constructor();
    this.param = param;
}
var p = createjs.extend(YourFunc, createjs.Container);

p.draw = function() {
    this.Container_draw();
    // add custom logic here.
}

window.Button = createjs.promote(Button, "Container");
}());

Или просто

var p = YourFunc.prototype = new createjs.Container();
person Narek Hayrapetyan    schedule 08.02.2015