Revision: 1067
Author: allain.lalonde
Date: Wed Sep 1 12:45:28 2010
Log: JS: Adding moveToFront and moveToBack to PNode
http://code.google.com/p/piccolo2d/source/detail?r=1067
Modified:
/piccolo2d.js/trunk/piccolo2d.js
/piccolo2d.js/trunk/test.html
=======================================
--- /piccolo2d.js/trunk/piccolo2d.js Wed Sep 1 12:01:18 2010
+++ /piccolo2d.js/trunk/piccolo2d.js Wed Sep 1 12:45:28 2010
@@ -509,6 +509,32 @@
getScale: function() {
return this.transform.getScale();
+ },
+
+ moveToFront: function() {
+ if (this.parent && this.parent.children.length > 1) {
+ this.parent.children = this.parent.children.remove(this);
+ this.parent.children.push(this);
+
+ this.invalidatePaint();
+ }
+ return this;
+ },
+
+ moveToBack: function() {
+ if (this.parent && this.parent.children.length > 1) {
+ var newSiblings = [this];
+ for (var i=0, n = this.parent.children.length; i<n; i++) {
+ if (this.parent.children[i] != this) {
+ newSiblings.push(this.parent.children[i]);
+ }
+ }
+
+ this.parent.children = newSiblings;
+
+ this.invalidatePaint();
+ }
+ return this;
}
});
@@ -743,10 +769,10 @@
function dispatchEvent(type, event, pickedNodes) {
var currentNode, listener;
- for (var nodeIndex = 0; nodeIndex < pickedNodes.length;
nodeIndex += 1) {
+ for (var nodeIndex = 0, pickedNodeCount =
pickedNodes.length; nodeIndex < pickedNodeCount; nodeIndex += 1) {
currentNode = pickedNodes[nodeIndex];
while (currentNode) {
- for (var i = 0; i < currentNode.listeners.length;
i += 1) {
+ for (var i = 0, listenerCount =
currentNode.listeners.length; i < listenerCount; i += 1) {
listener = currentNode.listeners[i];
if (listener[type]) {
listener[type]({
=======================================
--- /piccolo2d.js/trunk/test.html Wed Sep 1 12:01:18 2010
+++ /piccolo2d.js/trunk/test.html Wed Sep 1 12:45:28 2010
@@ -465,6 +465,36 @@
testNode.getFullBounds();
ok(layoutChildrenCalled, "layoutChildren was not called");
});
+
+ test("Move to front places child node at end of its parent's
children", function() {
+ var a = new PNode();
+ var b = new PNode();
+ var parent = new PNode();
+ parent.addChild(a);
+ parent.addChild(b);
+ a.moveToFront();
+ same(parent.children[1], a);
+ });
+
+ test("Move to back places child node at front of its parent's
children", function() {
+ var a = new PNode();
+ var b = new PNode();
+ var parent = new PNode();
+ parent.addChild(a);
+ parent.addChild(b);
+ b.moveToBack();
+ same(parent.children[0], b);
+ });
+
+ test("Move to front does nothing if child has no parent",
function() {
+ var a = new PNode();
+ a.moveToFront();
+ });
+
+ test("Move to back does nothing if child has no parent",
function() {
+ var a = new PNode();
+ a.moveToBack();
+ });
}
function testPRoot() {
--
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en