Създайте 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)


Контейнерите предоставят наистина лесен начин за групиране на обекти и управлението им като един обект. Това улеснява:

  • Трансформирайте/преведете група елементи наведнъж (преместете, завъртете и мащабирайте контейнера, задайте алфа, compositeOperation, сянка и т.н.)
  • Кеширайте група от обекти като един (container.cache(0,0,w,h) за по-бърза производителност
  • Поддържайте различни редове на сортиране, като например добавяне на всички елементи на преден план към контейнер и всички игрови спрайтове към контейнер и всички фонови елементи към контейнер – след това сортиране във всеки контейнер – но без да се притеснявате за смесване на елементи в различните слоеве

Накратко, това е просто полезен начин за управление на групи от съдържание. Не е необходимо да го използвате, но той няма голямо влияние върху производителността - така че определено се препоръчва за нещо сложно.

person Lanny    schedule 07.08.2013
comment
Благодаря, Lanny! Мисля да продължа да ги използвам. Мога ли да хвърля всичките си спрайтове в един контейнер, след което да ги манипулирам независимо? Или това нарушава целта на контейнера? - person Growler; 07.08.2013