2013-08-28 5 views
5

Ich versuche, den Z-Index für meine Linie Graphic() zu setzen. Ich versuche die Linie so zu setzen, dass sie immer hinter den anderen zwei Formen liegt. Two shapes and one line.Z-Index Positionierung mit CreateJS

Soweit ich weiß, ist das erste Element hinzugefügt z = 0, das zweite ist z = 1 und so weiter. Ist das so? Ist z = 0 die Top-Position oder ist es die Unterseite?

Ich versuche yo ändern ihre z-Position mit stage.setChildIndex (Element, Z-Ebene), ist das richtig?

Danke.

+0

Können Sie etwas Code posten? Ich bin mir nicht ganz sicher, was die Erwartung ist. – Lanny

Antwort

5

1) Je niedriger der Index, desto mehr in der ‚Zurück‘ ist das Element, so: 0 = bottom Bitte auch beachten, dass setChildIndex schlagen fehl, wenn Sie versuchen, etwas wie: container.setChildIndex(child,500) wenn Sie nur 4 Kinder haben , so dass der Index, den Sie dem Kind zuweisen möchten, nicht außerhalb des Bereichs sein darf. Das heißt, wenn Sie sie sortieren möchten, sollten Sie mit dem niedrigsten Index beginnen (normalerweise 0).

2) Oder Sie könnten auch Ihren Objekten eine Eigenschaft wie zum Beispiel geben: child.zIndex = 500; und Ihre eigene Art-Methode schreiben Sie dann den sortChildren -Methode des Behälters, zum Beispiel zu verwenden:

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; 
} 

That So müssen Sie sich keine Gedanken darüber machen, einen zIndex zu setzen, der außerhalb des zulässigen Bereichs liegt.

+0

Und ich könnte die Anzahl der Kinder abrufen, wenn ich GetNumChildren(), oder? Danke olsn, ich habe mich nicht nur mit dem Auftrag geirrt, sondern auch mit dem Index. Ich tat setChildIndex (Kind, 200), weil ich dachte, dass es in einem unbegrenzten Array gespeichert würde. Danke! – Cod1ngFree

+0

Übrigens, geht der Index von 0 zu getNumChildren()? – Cod1ngFree

+0

Ja, das ist richtig. Alle diese Methoden 'getNumChildren()' 'setChildIndex()' sind im Grunde * nur * Wrapper-Funktionen für grundlegende Array-Operationen, 'getNumChildren()' zum Beispiel gibt einfach 'this.children.length' - und' setChildIndex() zurück 'werde einfach nach dem Index suchen und eine Spleiß-Operation auf dem 'Kinder'-Array durchführen - Also wenn du etwas lernen willst, schau mal unter die Haube: http://www.createjs.com/Docs/EaselJS /files/.._src_easeljs_display_Container.js.html#l331 - es ist ein sehr guter Code, den das gskinner-Team geschrieben hat :) – olsn

3

Mit createjs sind gültige Werte für setChildIndex() im Bereich von 0 bis numChildren() - 1. Ein Anruf wie:

container.setChildIndex(container.numChildren()); 

wird fehlschlagen. Wenn Sie den Kindindex erhöhen, ist dies mehr, wenn Sie beispielsweise den Wert für ein Kind mit dem Z-Index 1 auf 2 ändern. Das Kind wird vor dem Objekt mit dem Index 2 platziert Kind rückwärts wird es an der Zielposition hinter das Objekt bewegt. Es kann zu Verwirrung führen, wenn Sie nicht sicher sind, was der anfängliche Z-Index des Kindes ist.