Создать JS: Использование контейнеров

Я создаю RPG и хотел бы добавить все свои спрайты в spriteContainer, а NPC в npcContainer и т. д. Причина в том, что я могу просто добавить контейнер и связанные с ним метки на сцену вместо каждого индивидуальный спрайт.

Я бы использовал объект create js container.

Я хочу установить начальный x,y для контейнера, но затем установить для каждого элемента в контейнере разные x,y с их метками. Должен ли я просто не использовать контейнер? В чем причина контейнеров?

Спасибо


Редактировать: я вызываю addNPC в начале, который создает кучу вещей, а затем добавляет их в контейнер:

        function addNPCs() {
            var NPCs = [];
            spriteContainer = new createjs.Container();

            spriteContainer.x = spriteContainerX-camX;
            spriteContainer.y = spriteContainerY-camY;  

            spriteBMP = new createjs.Bitmap("myBmp.png");           
            spriteBMP2 = new createjs.Bitmap("myBmp.png");
            spriteBMP3 = new createjs.Bitmap("myBmp.png");  

            spriteLabel = new createjs.Text("Hey kitty! Come talk to me!", "14px Arial", "white");
            spriteLabel.y = -70;    

            NPCs.push(spriteBMP, spriteBMP2, spriteBMP3);   

            for (npcs in NPCs) {
                spriteContainer.addChild(npcs);
                console.log("added " + npcs);
            }

        }

Затем добавьте этот контейнер:

stage.addChild(spriteContainer);

person Growler    schedule 06.08.2013    source источник
comment
ознакомьтесь с документацией createjs. если вам кажется, что контейнеры облегчат вашу работу, используйте их. если нет, то не заморачивайтесь. javascript имеет конструкторы и создание экземпляров объектов, аналогичные многим другим объектно-ориентированным языкам (он просто использует прототипное наследование, а не классы).   -  person user428517    schedule 06.08.2013


Ответы (1)


Контейнеры обеспечивают очень простой способ группировки объектов и управления ими как одним объектом. Это упрощает:

  • Преобразование/перевод группы элементов сразу (перемещение, поворот и масштабирование контейнера, установка альфа-канала, композитной операции, тени и т. д.)
  • Кэшировать группу объектов как один (container.cache(0,0,w,h) для повышения производительности
  • Поддерживайте разные порядки сортировки, например добавляйте все элементы переднего плана в контейнер, все игровые спрайты в контейнер и все фоновые элементы в контейнер — затем сортируйте внутри каждого контейнера — но не беспокойтесь о смешивании элементов в разных слоях.

Короче говоря, это просто полезный способ управления группами контента. Вам не нужно его использовать, но он не оказывает большого влияния на производительность, поэтому его определенно рекомендуется для чего-то сложного.

person Lanny    schedule 07.08.2013
comment
Спасибо, Лэнни! Я думаю, что я буду придерживаться их использования. Могу ли я поместить все свои спрайты в один контейнер, а затем управлять ими независимо? Или это противоречит цели контейнера? - person Growler; 07.08.2013