2013-08-28 8 views
5

Próbuję ustawić indeks Z dla mojej linii Grafika(). Próbuję ustawić linię tak, aby zawsze była za pozostałymi dwoma kształtami. Two shapes and one line.Pozycjonowanie indeksu Z za pomocą CreateJS

O ile mi wiadomo, pierwszym dodanym elementem jest z = 0, drugim jest z = 1 i tak dalej. Czy tak jest? Czy z = 0 to najwyższa pozycja, czy jest na dole?

Próbuję zmienić ich pozycję z przy użyciu stage.setChildIndex (element, z-level), czy to prawda?

Dzięki.

+0

Czy możesz dodać kod? Nie jestem całkowicie pewien, jakie są oczekiwania. – Lanny

Odpowiedz

5

1) Im niższy wskaźnik, tym bardziej w „plecach” jest pozycją, więc: 0 = bottom Należy również pamiętać, że setChildIndex zawiedzie jeśli spróbujesz coś takiego: container.setChildIndex(child,500) jeśli masz tylko 4 dzieci , więc indeks, do którego chcesz ustawić dziecko, nie może być poza zakresem. Oznacza to, że jeśli chcesz je posortować, powinieneś zacząć od najniższego indeksu (zwykle 0).

2) Albo można też dać obiektami nieruchomości jak np: child.zIndex = 500; i napisać własną metodę sortowania-następnie użyć sortChildren -method pojemnika, na przykład:

function sortByZ(a,b) { 
    if (a.zIndex < b.zIndex) return -1; 
    if (a.zIndex > b.zIndex) return 1; 
    return 0; 
} 

myContainer.sortChildren(sortByZ); 

// or a shorter version: 
function sortByZ(a,b) { 
    return a.zIndex - b.zIndex; 
} 

Że sposób, w jaki nie musisz się martwić o ustawienie zIndex, który jest poza granicami.

+0

Mogę pobrać liczbę dzieci, jeśli otrzymam NumChildren(), prawda? Dzięki olsn, nie tylko pomyliłem się co do zamówienia, ale także o indeksie. Robiłem setChildIndex (child, 200), ponieważ myślałem, że będzie on przechowywany w nieograniczonej tablicy. Dzięki! – Cod1ngFree

+0

Nawiasem mówiąc, czy indeks przechodzi od 0 do getNumChildren()? – Cod1ngFree

+0

Tak, to prawda. Wszystkie te metody 'getNumChildren()' 'setChildIndex()' są po prostu * tylko * funkcjami opakowania dla podstawowych operacji tablicowych, 'getNumChildren()' na przykład po prostu zwróci 'this.children.length' - oraz' setChildIndex() 'po prostu sprawdzi indeks i wykona operację splice na tablicy' children' - Więc jeśli chcesz się czegoś nauczyć, zajrzyj pod maską: http://www.createjs.com/Docs/EaselJS /files/.._src_easeljs_display_Container.js.html#l331 - to bardzo dobry kod napisany przez zespół Gskinner :) – olsn

3

Z właściwymi wartościami dla setChildIndex() są w zakresie od 0 do numChildren() - 1. Połączenie takie jak:

container.setChildIndex(container.numChildren()); 

zakończy się niepowodzeniem.

Co więcej po zwiększeniu indeksu podrzędnego - na przykład dla dziecka z indeksem Z 1 po zmianie na 2, dziecko zostanie umieszczone przed obiektem w indeksie 2. W przypadku zmniejszenia indeksu w ruchu dziecko do tyłu zostanie przesunięte za obiekt w docelowej pozycji. Może to powodować zamieszanie, gdy nie masz pewności, jaki jest początkowy indeks Z dziecka.

Powiązane problemy