axmol/tests/js-tests/src/SpriteTest/SpriteTest.js

5051 lines
169 KiB
JavaScript

/****************************************************************************
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011-2012 cocos2d-x.org
Copyright (c) 2013-2017 Chukong Technologies Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_TILE_MAP = 1;
var TAG_SPRITE_BATCH_NODE = 1;
var TAG_NODE = 2;
var TAG_ANIMATION1 = 1;
var TAG_SPRITE_LEFT = 2;
var TAG_SPRITE_RIGHT = 3;
var TAG_SPRITE1 = 0;
var TAG_SPRITE2 = 1;
var TAG_SPRITE3 = 2;
var TAG_SPRITE4 = 3;
var TAG_SPRITE5 = 4;
var TAG_SPRITE6 = 5;
var TAG_SPRITE7 = 6;
var TAG_SPRITE8 = 7;
var IDC_NEXT = 100;
var IDC_BACK = 101;
var IDC_RESTART = 102;
var spriteTestIdx = -1;
var spriteFrameCache = cc.spriteFrameCache;
//------------------------------------------------------------------
//
// SpriteTestDemo
//
//------------------------------------------------------------------
var SpriteTestDemo = BaseTestLayer.extend({
_title:"",
_subtitle:"",
ctor:function () {
if (arguments.length === 0) {
this._super(cc.color(0, 0, 0, 255), cc.color(98, 99, 117, 255));
} else {
this._super.apply(this, arguments);
}
},
onRestartCallback:function (sender) {
var s = new SpriteTestScene();
s.addChild(restartSpriteTest());
director.runScene(s);
},
onNextCallback:function (sender) {
var s = new SpriteTestScene();
s.addChild(nextSpriteTest());
director.runScene(s);
},
onBackCallback:function (sender) {
var s = new SpriteTestScene();
s.addChild(previousSpriteTest());
director.runScene(s);
},
// automation
numberOfPendingTests:function () {
return ( (arrayOfSpriteTest.length - 1) - spriteTestIdx );
},
getTestNumber:function () {
return spriteTestIdx;
}
});
//------------------------------------------------------------------
//
// Sprite1
//
//------------------------------------------------------------------
var Sprite1 = SpriteTestDemo.extend({
_title:"Non Batched Sprite ",
_subtitle:"Tap screen to add more sprites",
ctor:function () {
//----start0----ctor
this._super();
this.addNewSpriteWithCoords(cc.p(winSize.width / 2, winSize.height / 2));
if ('touches' in cc.sys.capabilities) {
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesEnded: function(touches, event){
for (var it = 0; it < touches.length; it++) {
var touch = touches[it];
if (!touch)
break;
var location = touch.getLocation();
event.getCurrentTarget().addNewSpriteWithCoords(location);
}
}
}, this);
} else if ('mouse' in cc.sys.capabilities)
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseUp: function(event){
event.getCurrentTarget().addNewSpriteWithCoords(event.getLocation());
}
}, this);
//----end0----
},
addNewSpriteWithCoords:function (p) {
//----start0----addNewSpriteWithCoords
var idx = 0 | (Math.random() * 14);
var x = (idx % 5) * 85;
var y = (0 | (idx / 5)) * 121;
var sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(x, y, 85, 121));
this.addChild(sprite);
sprite.x = p.x;
sprite.y = p.y;
var action;
var random = Math.random();
if (random < 0.20) {
action = cc.scaleBy(3, 2);
} else if (random < 0.40) {
action = cc.rotateBy(3, 360);
} else if (random < 0.60) {
action = cc.blink(1, 3);
} else if (random < 0.8) {
action = cc.tintBy(2, 0, -255, -255);
} else {
action = cc.fadeOut(2);
}
var action_back = action.reverse();
var seq = cc.sequence(action, action_back);
sprite.runAction(seq.repeatForever());
this.testSprite = sprite;
//----end0----
},
//
// Automation
//
testDuration:1,
pixel:{"0":51, "1":0, "2":51, "3":255},
testSprite:null,
setupAutomation:function () {
var fun = function () {
var sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(0, 0, 85, 121));
this.addChild(sprite, 999);
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
};
this.scheduleOnce(fun, 0.5);
},
getExpectedResult:function () {
var ret = {"useBatch":false, "pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
var ret = {"useBatch":this.testSprite.getBatchNode() != null, "pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNode1
//
//------------------------------------------------------------------
var SpriteBatchNode1 = SpriteTestDemo.extend({
_title:"Batched Sprite ",
_subtitle:"Tap screen to add more sprites",
ctor:function () {
//----start1----ctor
this._super();
if ('touches' in cc.sys.capabilities) {
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesEnded: function (touches, event) {
for (var it = 0; it < touches.length; it++) {
var touch = touches[it];
if (!touch)
break;
var location = touch.getLocation();
event.getCurrentTarget().addNewSpriteWithCoords(location);
}
}
}, this);
} else if ('mouse' in cc.sys.capabilities)
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseUp: function(event){
event.getCurrentTarget().addNewSpriteWithCoords(event.getLocation());
}
}, this);
var batchNode = new cc.SpriteBatchNode(s_grossini_dance_atlas, 50);
this.addChild(batchNode, 0, TAG_SPRITE_BATCH_NODE);
this.addNewSpriteWithCoords(cc.p(winSize.width / 2, winSize.height / 2));
//----end1----
},
addNewSpriteWithCoords:function (p) {
//----start1----addNewSpriteWithCoords
var batchNode = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var idx = 0 | (Math.random() * 14);
var x = (idx % 5) * 85;
var y = (0 | (idx / 5)) * 121;
var sprite = new cc.Sprite(batchNode.texture, cc.rect(x, y, 85, 121));
batchNode.addChild(sprite);
sprite.x = p.x;
sprite.y = p.y;
var action;
var random = Math.random();
if (random < 0.20)
action = cc.scaleBy(3, 2);
else if (random < 0.40)
action = cc.rotateBy(3, 360);
else if (random < 0.60)
action = cc.blink(1, 3);
else if (random < 0.8)
action = cc.tintBy(2, 0, -255, -255);
else
action = cc.fadeOut(2);
var action_back = action.reverse();
var seq = cc.sequence(action, action_back);
sprite.runAction(seq.repeatForever());
this.testSprite = sprite;
//----end1----
},
//
// Automation
//
testDuration:1,
pixel:{"0":51, "1":0, "2":51, "3":255},
testSprite:null,
setupAutomation:function () {
var fun = function () {
var sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(0, 0, 85, 121));
this.addChild(sprite, 999);
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
}
this.scheduleOnce(fun, 0.5);
},
getExpectedResult:function () {
var ret = {"useBatch":true, "pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
var ret = {"useBatch":this.testSprite.getBatchNode() != null, "pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteColorOpacity
//
//------------------------------------------------------------------
var SpriteColorOpacity = SpriteTestDemo.extend({
_title:"Sprite: Color & Opacity",
ctor:function () {
//----start11----ctor
this._super();
var sprite1 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(0, 121, 85, 121));
var sprite2 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85, 121, 85, 121));
var sprite3 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 2, 121, 85, 121));
var sprite4 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 3, 121, 85, 121));
var sprite5 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(0, 121, 85, 121));
var sprite6 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85, 121, 85, 121));
var sprite7 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 2, 121, 85, 121));
var sprite8 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 3, 121, 85, 121));
sprite1.x = (winSize.width / 5);
sprite1.y = (winSize.height / 3);
sprite2.x = (winSize.width / 5) * 2;
sprite2.y = (winSize.height / 3);
sprite3.x = (winSize.width / 5) * 3;
sprite3.y = (winSize.height / 3);
sprite4.x = (winSize.width / 5) * 4;
sprite4.y = (winSize.height / 3);
sprite5.x = (winSize.width / 5);
sprite5.y = (winSize.height / 3) * 2;
sprite6.x = (winSize.width / 5) * 2;
sprite6.y = (winSize.height / 3) * 2;
sprite7.x = (winSize.width / 5) * 3;
sprite7.y = (winSize.height / 3) * 2;
sprite8.x = (winSize.width / 5) * 4;
sprite8.y = (winSize.height / 3) * 2;
var delay = cc.delayTime(0.25);
var action = cc.fadeOut(2);
var action_back = action.reverse();
var fade = cc.sequence(action, delay.clone(), action_back).repeatForever();
var tintRed = cc.tintBy(2, 0, -255, -255);
var tintRedBack = tintRed.reverse();
var red = cc.sequence(tintRed, delay.clone(), tintRedBack).repeatForever();
var tintGreen = cc.tintBy(2, -255, 0, -255);
var tintGreenBack = tintGreen.reverse();
var green = cc.sequence(tintGreen, delay.clone(), tintGreenBack).repeatForever();
var tintBlue = cc.tintBy(2, -255, -255, 0);
var tintBlueBack = tintBlue.reverse();
var blue = cc.sequence(tintBlue, delay.clone(), tintBlueBack).repeatForever();
// late add: test dirtyColor and dirtyPosition
this.addChild(sprite1, 0, TAG_SPRITE1);
this.addChild(sprite2, 0, TAG_SPRITE2);
this.addChild(sprite3, 0, TAG_SPRITE3);
this.addChild(sprite4, 0, TAG_SPRITE4);
this.addChild(sprite5, 0, TAG_SPRITE5);
this.addChild(sprite6, 0, TAG_SPRITE6);
this.addChild(sprite7, 0, TAG_SPRITE7);
this.addChild(sprite8, 0, TAG_SPRITE8);
sprite5.runAction(red);
sprite6.runAction(green);
sprite7.runAction(blue);
sprite8.runAction(fade);
this.schedule(this.removeAndAddSprite, 2);
//----end11----
},
// this function test if remove and add works as expected:
// color array and vertex array should be reindexed
removeAndAddSprite:function (dt) {
//----start11----removeAndAddSprite
var sprite = this.getChildByTag(TAG_SPRITE5);
this.removeChild(sprite, false);
this.addChild(sprite, 0, TAG_SPRITE5);
//----end11----
},
//
// Automation
//
testDuration:2.1,
pixel1:{"0":255, "1":0, "2":0, "3":255},
pixel2:{"0":0, "1":204, "2":0, "3":255},
pixel3:{"0":0, "1":0, "2":153, "3":255},
pixel4:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels((winSize.width / 5) * 1, (winSize.height / 3) * 2 + 40, 5, 5);
var ret2 = this.readPixels((winSize.width / 5) * 2, (winSize.height / 3) * 2 + 40, 5, 5);
var ret3 = this.readPixels((winSize.width / 5) * 3, (winSize.height / 3) * 2 + 40, 5, 5);
var ret4 = this.readPixels((winSize.width / 5) * 4, (winSize.height / 3) * 2 + 40, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel3) ? "yes" : "no",
"pixel4":this.containsPixel(ret4, this.pixel4) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeColorOpacity
//
//------------------------------------------------------------------
var SpriteBatchNodeColorOpacity = SpriteTestDemo.extend({
_title:"SpriteBatchNode: Color & Opacity",
ctor:function () {
//----start12----ctor
this._super();
// small capacity. Testing resizing.
// Don't use capacity=1 in your real game. It is expensive to resize the capacity
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 1);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
var sprite1 = new cc.Sprite(batch.texture, cc.rect(0, 121, 85, 121));
var sprite2 = new cc.Sprite(batch.texture, cc.rect(85, 121, 85, 121));
var sprite3 = new cc.Sprite(batch.texture, cc.rect(85 * 2, 121, 85, 121));
var sprite4 = new cc.Sprite(batch.texture, cc.rect(85 * 3, 121, 85, 121));
var sprite5 = new cc.Sprite(batch.texture, cc.rect(0, 121, 85, 121));
var sprite6 = new cc.Sprite(batch.texture, cc.rect(85, 121, 85, 121));
var sprite7 = new cc.Sprite(batch.texture, cc.rect(85 * 2, 121, 85, 121));
var sprite8 = new cc.Sprite(batch.texture, cc.rect(85 * 3, 121, 85, 121));
sprite1.x = (winSize.width / 5) * 1;
sprite1.y = (winSize.height / 3) * 1;
sprite2.x = (winSize.width / 5) * 2;
sprite2.y = (winSize.height / 3) * 1;
sprite3.x = (winSize.width / 5) * 3;
sprite3.y = (winSize.height / 3) * 1;
sprite4.x = (winSize.width / 5) * 4;
sprite4.y = (winSize.height / 3) * 1;
sprite5.x = (winSize.width / 5) * 1;
sprite5.y = (winSize.height / 3) * 2;
sprite6.x = (winSize.width / 5) * 2;
sprite6.y = (winSize.height / 3) * 2;
sprite7.x = (winSize.width / 5) * 3;
sprite7.y = (winSize.height / 3) * 2;
sprite8.x = (winSize.width / 5) * 4;
sprite8.y = (winSize.height / 3) * 2;
var delay = cc.delayTime(0.25);
var action = cc.fadeOut(2);
var action_back = action.reverse();
var fade = cc.sequence(action, delay.clone(), action_back).repeatForever();
var tintRed = cc.tintBy(2, 0, -255, -255);
var red = cc.sequence(tintRed, delay.clone(), tintRed.reverse()).repeatForever();
var tintGreen = cc.tintBy(2, -255, 0, -255);
var tintGreenBack = tintGreen.reverse();
var green = cc.sequence(tintGreen, delay.clone(), tintGreenBack).repeatForever();
var tintBlue = cc.tintBy(2, -255, -255, 0);
var tintBlueBack = tintBlue.reverse();
var blue = cc.sequence(tintBlue, delay.clone(), tintBlueBack).repeatForever();
// late add: test dirtyColor and dirtyPosition
batch.addChild(sprite1, 0, TAG_SPRITE1);
batch.addChild(sprite2, 0, TAG_SPRITE2);
batch.addChild(sprite3, 0, TAG_SPRITE3);
batch.addChild(sprite4, 0, TAG_SPRITE4);
batch.addChild(sprite5, 0, TAG_SPRITE5);
batch.addChild(sprite6, 0, TAG_SPRITE6);
batch.addChild(sprite7, 0, TAG_SPRITE7);
batch.addChild(sprite8, 0, TAG_SPRITE8);
sprite5.runAction(red);
sprite6.runAction(green);
sprite7.runAction(blue);
sprite8.runAction(fade);
this.schedule(this.removeAndAddSprite, 2);
//----end12----
},
// this function test if remove and add works as expected:
// color array and vertex array should be reindexed
removeAndAddSprite:function (dt) {
//----start12----removeAndAddSprite
var batch = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var sprite = batch.getChildByTag(TAG_SPRITE5);
batch.removeChild(sprite, false);
batch.addChild(sprite, 0, TAG_SPRITE5);
//----end12----
},
//
// Automation
//
testDuration:2.1,
pixel1:{"0":255, "1":0, "2":0, "3":255},
pixel2:{"0":0, "1":204, "2":0, "3":255},
pixel3:{"0":0, "1":0, "2":153, "3":255},
pixel4:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels((winSize.width / 5) * 1, (winSize.height / 3) * 2 + 40, 5, 5);
var ret2 = this.readPixels((winSize.width / 5) * 2, (winSize.height / 3) * 2 + 40, 5, 5);
var ret3 = this.readPixels((winSize.width / 5) * 3, (winSize.height / 3) * 2 + 40, 5, 5);
var ret4 = this.readPixels((winSize.width / 5) * 4, (winSize.height / 3) * 2 + 40, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel3) ? "yes" : "no",
"pixel4":this.containsPixel(ret4, this.pixel4) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteZOrder
//
//------------------------------------------------------------------
var SpriteZOrder = SpriteTestDemo.extend({
_dir:0,
_title:"Sprite: Z order",
ctor:function () {
//----start13----ctor
this._super();
this._dir = 1;
var sprite;
var step = winSize.width / 11;
for (var i = 0; i < 5; i++) {
sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 0, 121 * 1, 85, 121));
sprite.x = (i + 1) * step;
sprite.y = winSize.height / 2;
this.addChild(sprite, i);
}
for (i = 5; i < 10; i++) {
sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 1, 121 * 0, 85, 121));
sprite.x = (i + 1) * step;
sprite.y = winSize.height / 2;
this.addChild(sprite, 14 - i);
}
sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * 3, 121 * 0, 85, 121));
this.addChild(sprite, -1, TAG_SPRITE1);
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2 - 20;
sprite.scaleX = 10;
sprite.color = cc.color.RED;
this.schedule(this.reorderSprite, 1);
//----end13----
},
reorderSprite:function (dt) {
//----start13----reorderSprite
var sprite = this.getChildByTag(TAG_SPRITE1);
var z = sprite.zIndex;
if (z < -1)
this._dir = 1;
if (z > 10)
this._dir = -1;
z += this._dir * 3;
this.reorderChild(sprite, z);
//----end13----
},
//
// Automation
//
testDuration:4.2,
pixel:{"0":255, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var step = winSize.width / 11;
var ret1 = this.readPixels((6 + 1) * step, winSize.height / 2 + 10, 5, 5);
var ret = {"pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeZOrder
//
//------------------------------------------------------------------
var SpriteBatchNodeZOrder = SpriteTestDemo.extend({
_dir:0,
_title:"SpriteBatch: Z order",
ctor:function () {
//----start14----ctor
this._super();
this._dir = 1;
// small capacity. Testing resizing.
// Don't use capacity=1 in your real game. It is expensive to resize the capacity
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 1);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
var sprite;
var step = winSize.width / 11;
for (var i = 0; i < 5; i++) {
sprite = new cc.Sprite(batch.texture, cc.rect(85 * 0, 121 * 1, 85, 121));
sprite.x = (i + 1) * step;
sprite.y = winSize.height / 2;
batch.addChild(sprite, i);
}
for (i = 5; i < 10; i++) {
sprite = new cc.Sprite(batch.texture, cc.rect(85 * 1, 121 * 0, 85, 121));
sprite.x = (i + 1) * step;
sprite.y = winSize.height / 2;
batch.addChild(sprite, 14 - i);
}
sprite = new cc.Sprite(batch.texture, cc.rect(85 * 3, 121 * 0, 85, 121));
batch.addChild(sprite, -1, TAG_SPRITE1);
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2 - 20;
sprite.scaleX = 10;
sprite.color = cc.color.RED;
this.schedule(this.reorderSprite, 1);
//----end14----
},
reorderSprite:function (dt) {
//----start14----reorderSprite
var batch = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var sprite = batch.getChildByTag(TAG_SPRITE1);
var z = sprite.zIndex;
if (z < -1)
this._dir = 1;
if (z > 10)
this._dir = -1;
z += this._dir * 3;
batch.reorderChild(sprite, z);
//----end14----
},
//
// Automation
//
testDuration:4.2,
pixel:{"0":255, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var step = winSize.width / 11;
var ret1 = this.readPixels((6 + 1) * step, winSize.height / 2 + 10, 5, 5);
var ret = {"pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeReorderIssue744
//
//------------------------------------------------------------------
var SpriteBatchNodeReorderIssue744 = SpriteTestDemo.extend({
_title:"SpriteBatchNode: reorder issue #744",
_subtitle:"Should not crash",
ctor:function () {
//----start16----ctor
this._super();
// Testing issue #744
// http://code.google.com/p/cocos2d-iphone/issues/detail?id=744
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 15);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
var sprite = new cc.Sprite(batch.texture, cc.rect(0, 0, 85, 121));
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
batch.addChild(sprite, 3);
batch.reorderChild(sprite, 1);
//----end16----
},
//
// Automation
//
testDuration:1.2,
pixel:{"0":51, "1":0, "2":51, "3":255},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
var ret = {"pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeReorderIssue766
//
//------------------------------------------------------------------
var SpriteBatchNodeReorderIssue766 = SpriteTestDemo.extend({
_batchNode:null,
_sprite1:null,
_sprite2:null,
_sprite3:null,
_title:"SpriteBatchNode: reorder issue #766",
_subtitle:"In 2 seconds 1 sprite will be reordered",
ctor:function () {
//----start17----ctor
this._super();
this._batchNode = new cc.SpriteBatchNode(s_piece, 15);
this.addChild(this._batchNode, 1, 0);
this._sprite1 = this.makeSpriteZ(2);
this._sprite1.x = 200;
this._sprite1.y = 160;
this._sprite2 = this.makeSpriteZ(3);
this._sprite2.x = 264;
this._sprite2.y = 160;
this._sprite3 = this.makeSpriteZ(4);
this._sprite3.x = 328;
this._sprite3.y = 160;
this.schedule(this.reorderSprite, 2);
//----end17----
},
reorderSprite:function (dt) {
//----start17----reorderSprite
this.unschedule(this.reorderSprite);
this._batchNode.reorderChild(this._sprite1, 4);
//----end17----
},
makeSpriteZ:function (aZ) {
//----start17----makeSpriteZ
var sprite = new cc.Sprite(this._batchNode.texture, cc.rect(128, 0, 64, 64));
this._batchNode.addChild(sprite, aZ + 1, 0);
//children
var spriteShadow = new cc.Sprite(this._batchNode.texture, cc.rect(0, 0, 64, 64));
spriteShadow.opacity = 128;
sprite.addChild(spriteShadow, aZ, 3);
var spriteTop = new cc.Sprite(this._batchNode.texture, cc.rect(64, 0, 64, 64));
sprite.addChild(spriteTop, aZ + 2, 3);
return sprite;
//----end17----
},
//
// Automation
//
testDuration:2.2,
pixel1:{"0":0, "1":0, "2":0, "3":255},
pixel2:{"0":255, "1":255, "2":255, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(213, 159, 5, 5);
var ret2 = this.readPixels(211, 108, 5, 5);
var ret = {"pixel1":!this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeReorderIssue767
//
//------------------------------------------------------------------
var SpriteBatchNodeReorderIssue767 = SpriteTestDemo.extend({
_title:"SpriteBatchNode: reorder issue #767",
_subtitle:"Should not crash",
ctor:function () {
//----start18----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_ghostsPlist, s_ghosts);
//
// SpriteBatchNode: 3 levels of children
//
var aParent = new cc.SpriteBatchNode(s_ghosts);
this.addChild(aParent, 0, TAG_SPRITE1);
// parent
var l1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("father.gif"));
l1.x = winSize.width / 2;
l1.y = winSize.height / 2;
aParent.addChild(l1, 0, TAG_SPRITE2);
var l1W = l1.width, l1H = l1.height;
// child left
var l2a = new cc.Sprite(spriteFrameCache.getSpriteFrame("sister1.gif"));
l2a.x = -25 + l1W / 2;
l2a.y = 0 + l1H / 2;
l1.addChild(l2a, -1, TAG_SPRITE_LEFT);
var l2aW = l2a.width, l2aH = l2a.height;
// child right
var l2b = new cc.Sprite(spriteFrameCache.getSpriteFrame("sister2.gif"));
l2b.x = 25 + l1W / 2;
l2b.y = 0 + l1H / 2;
l1.addChild(l2b, 1, TAG_SPRITE_RIGHT);
var l2bW = l2b.width, l2bH = l2b.height;
// child left bottom
var l3a1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3a1.scale = 0.65;
l3a1.x = 0 + l2aW / 2;
l3a1.y = -50 + l2aH / 2;
l2a.addChild(l3a1, -1);
// child left top
var l3a2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3a2.scale = 0.65;
l3a2.x = 0 + l2aW / 2;
l3a2.y = +50 + l2aH / 2;
l2a.addChild(l3a2, 1);
// child right bottom
var l3b1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3b1.scale = 0.65;
l3b1.x = 0 + l2bW / 2;
l3b1.y = -50 + l2bH / 2;
l2b.addChild(l3b1, -1);
// child right top
var l3b2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3b2.scale = 0.65;
l3b2.x = 0 + l2bW / 2;
l3b2.y = +50 + l2bH / 2;
l2b.addChild(l3b2, 1);
this.schedule(this.reorderSprites, 1);
//----end18----
},
reorderSprites:function (dt) {
//----start18----reorderSprites
var spritebatch = this.getChildByTag(TAG_SPRITE1);
var father = spritebatch.getChildByTag(TAG_SPRITE2);
var left = father.getChildByTag(TAG_SPRITE_LEFT);
var right = father.getChildByTag(TAG_SPRITE_RIGHT);
var newZLeft = 1;
if (left.zIndex === 1)
newZLeft = -1;
father.reorderChild(left, newZLeft);
father.reorderChild(right, -newZLeft);
//----end18----
},
//
// Automation
//
testDuration:1.5,
pixel1:{"0":255, "1":204, "2":153, "3":255},
pixel2:{"0":255, "1":255, "2":255, "3":255},
curPixel1:null,
curPixel2:null,
setupAutomation:function () {
var fun = function(){
this.curPixel1 = this.readPixels(winSize.width / 2 + 11, winSize.height / 2 - 11, 2, 2);
}
this.scheduleOnce(fun, 0.5);
},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
this.curPixel2 = this.readPixels(winSize.width / 2 + 11, winSize.height / 2 - 11, 2, 2);
var ret = {"pixel1":this.containsPixel(this.curPixel1, this.pixel1) ? "yes" : "no",
"pixel2":this.containsPixel(this.curPixel2, this.pixel2) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteAnchorPoint
//
//------------------------------------------------------------------
var SpriteAnchorPoint = SpriteTestDemo.extend({
_title:"Sprite: anchor point",
ctor:function () {
//----start4----ctor
this._super();
for (var i = 0; i < 3; i++) {
var rotate = cc.rotateBy(10, 360);
var action = rotate.repeatForever();
var sprite = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85 * i, 121, 85, 121));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 10);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
//var copy = action.clone();
sprite.runAction(action);
this.addChild(sprite, i);
}
//----end4----
},
//
// Automation
//
testDuration:0.15,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 45, winSize.height / 2 + 104, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 - 3, winSize.height / 2 + 44, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 - 44, winSize.height / 2 - 16, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeAnchorPoint
//
//------------------------------------------------------------------
var SpriteBatchNodeAnchorPoint = SpriteTestDemo.extend({
_title:"SpriteBatchNode: anchor point",
ctor:function () {
//----start5----ctor
this._super();
// small capacity. Testing resizing.
// Don't use capacity=1 in your real game. It is expensive to resize the capacity
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 1);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
for (var i = 0; i < 3; i++) {
var rotate = cc.rotateBy(10, 360);
var action = rotate.repeatForever();
var sprite = new cc.Sprite(batch.texture, cc.rect(85 * i, 121, 85, 121));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 1);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
sprite.runAction(action);
batch.addChild(sprite, i);
}
//----end5----
},
//
// Automation
//
testDuration:0.15,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 45, winSize.height / 2 + 104, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 - 3, winSize.height / 2 + 44, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 - 44, winSize.height / 2 - 16, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// Sprite6
//
//------------------------------------------------------------------
var Sprite6 = SpriteTestDemo.extend({
_title:"SpriteBatchNode transformation",
ctor:function () {
//----start21----ctor
this._super();
// small capacity. Testing resizing
// Don't use capacity=1 in your real game. It is expensive to resize the capacity
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 1);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
batch.ignoreAnchorPointForPosition(true);
batch.anchorX = 0.5;
batch.anchorY = 0.5;
batch.width = winSize.width;
batch.height = winSize.height;
// SpriteBatchNode actions
var rotate1 = cc.rotateBy(5, 360);
var rotate_back = rotate1.reverse();
var rotate_seq = cc.sequence(rotate1, rotate_back);
var rotate_forever = rotate_seq.repeatForever();
var scale = cc.scaleBy(5, 1.5);
var scale_back = scale.reverse();
var scale_seq = cc.sequence(scale, scale_back);
var scale_forever = scale_seq.repeatForever();
for (var i = 0; i < 3; i++) {
var sprite = new cc.Sprite(batch.texture, cc.rect(85 * i, 121, 85, 121));
switch (i) {
case 0:
sprite.x = winSize.width / 2 - 100;
sprite.y = winSize.height / 2;
break;
case 1:
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
break;
case 2:
sprite.x = winSize.width / 2 + 100;
sprite.y = winSize.height / 2;
break;
}
var rotate = cc.rotateBy(5, 360);
var action = rotate.repeatForever();
sprite.runAction(action.clone());
batch.addChild(sprite, i);
}
batch.runAction(scale_forever);
batch.runAction(rotate_forever);
//----end21----
},
// Automation
testDuration:2,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 + 111, winSize.height / 2 + 82, 5, 5);
var ret2 = this.readPixels(winSize.width / 2 - 148, winSize.height / 2 - 58, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel, false) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel, false) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteFlip
//
//------------------------------------------------------------------
var SpriteFlip = SpriteTestDemo.extend({
_title:"Sprite Flip X & Y",
ctor:function () {
//----start22----ctor
this._super();
var sprite1 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85, 121, 85, 121));
sprite1.x = winSize.width / 2 - 100;
sprite1.y = winSize.height / 2;
this.addChild(sprite1, 0, TAG_SPRITE1);
var sprite2 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85, 121, 85, 121));
sprite2.x = winSize.width / 2 + 100;
sprite2.y = winSize.height / 2;
this.addChild(sprite2, 0, TAG_SPRITE2);
this.schedule(this.onFlipSprites, 1);
//----end22----
},
onFlipSprites:function (dt) {
//----start22----onFlipSprites
var sprite1 = this.getChildByTag(TAG_SPRITE1);
var sprite2 = this.getChildByTag(TAG_SPRITE2);
sprite1.flippedX = !sprite1.flippedX;
sprite2.flippedY = !sprite2.flippedY;
//----end22----
},
//
// Automation
//
testDuration:1.5,
pixel:{"0":255, "1":204, "2":153, "3":255},
pixel1:null,
pixel2:null,
pixel3:null,
pixel4:null,
setupAutomation:function () {
this.scheduleOnce(this.getBeforePixel, 0.5);
},
getBeforePixel:function () {
this.pixel1 = this.readPixels(winSize.width / 2 - 131, winSize.height / 2 - 11, 5, 5);
this.pixel2 = this.readPixels(winSize.width / 2 + 100, winSize.height / 2 + 44, 5, 5);
},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
this.pixel3 = this.readPixels(winSize.width / 2 - 69, winSize.height / 2 - 11, 5, 5);
this.pixel4 = this.readPixels(winSize.width / 2 + 100, winSize.height / 2 - 44, 5, 5);
var ret = {"pixel1":this.containsPixel(this.pixel1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(this.pixel2, this.pixel) ? "yes" : "no",
"pixel3":this.containsPixel(this.pixel3, this.pixel) ? "yes" : "no",
"pixel4":this.containsPixel(this.pixel4, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeFlip
//
//------------------------------------------------------------------
var SpriteBatchNodeFlip = SpriteTestDemo.extend({
_title:"SpriteBatchNode Flip X & Y",
ctor:function () {
//----start23----ctor
this._super();
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 10);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
var sprite1 = new cc.Sprite(batch.texture, cc.rect(85, 121, 85, 121));
sprite1.x = winSize.width / 2 - 100;
sprite1.y = winSize.height / 2;
batch.addChild(sprite1, 0, TAG_SPRITE1);
var sprite2 = new cc.Sprite(batch.texture, cc.rect(85, 121, 85, 121));
sprite2.x = winSize.width / 2 + 100;
sprite2.y = winSize.height / 2;
batch.addChild(sprite2, 0, TAG_SPRITE2);
this.schedule(this.onFlipSprites, 1);
//----end23----
},
onFlipSprites:function (dt) {
//----start23----onFlipSprites
var batch = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var sprite1 = batch.getChildByTag(TAG_SPRITE1);
var sprite2 = batch.getChildByTag(TAG_SPRITE2);
sprite1.flippedX = !sprite1.flippedX;
sprite2.flippedY = !sprite2.flippedY;
//----end23----
},
//
// Automation
//
testDuration:1.5,
pixel:{"0":255, "1":204, "2":153, "3":255},
pixel1:null,
pixel2:null,
pixel3:null,
pixel4:null,
setupAutomation:function () {
this.scheduleOnce(this.getBeforePixel, 0.5);
},
getBeforePixel:function () {
this.pixel1 = this.readPixels(winSize.width / 2 - 131, winSize.height / 2 - 11, 5, 5);
this.pixel2 = this.readPixels(winSize.width / 2 + 100, winSize.height / 2 + 44, 5, 5);
},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
this.pixel3 = this.readPixels(winSize.width / 2 - 69, winSize.height / 2 - 11, 5, 5);
this.pixel4 = this.readPixels(winSize.width / 2 + 100, winSize.height / 2 - 44, 5, 5);
var ret = {"pixel1":this.containsPixel(this.pixel1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(this.pixel2, this.pixel) ? "yes" : "no",
"pixel3":this.containsPixel(this.pixel3, this.pixel) ? "yes" : "no",
"pixel4":this.containsPixel(this.pixel4, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteAliased
//
//------------------------------------------------------------------
var SpriteAliased = SpriteTestDemo.extend({
_title:"Sprite Aliased",
_subtitle:"You should see pixelated sprites",
ctor:function () {
//----start24----ctor
this._super();
var sprite1 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85, 121, 85, 121));
sprite1.x = winSize.width / 2 - 100;
sprite1.y = winSize.height / 2;
this.addChild(sprite1, 0, TAG_SPRITE1);
var sprite2 = new cc.Sprite(s_grossini_dance_atlas, cc.rect(85, 121, 85, 121));
sprite2.x = winSize.width / 2 + 100;
sprite2.y = winSize.height / 2;
this.addChild(sprite2, 0, TAG_SPRITE2);
var scale = cc.scaleBy(2, 5);
var scale_back = scale.reverse();
var seq = cc.sequence(scale, scale_back);
var repeat = seq.repeatForever();
var scale2 = cc.scaleBy(2, 5);
var scale_back2 = scale2.reverse();
var seq2 = cc.sequence(scale2, scale_back2);
var repeat2 = seq2.repeatForever();
sprite1.runAction(repeat);
sprite2.runAction(repeat2);
//----end24----
},
onEnter:function () {
//----start24----onEnter
this._super();
//
// IMPORTANT:
// This change will affect every sprite that uses the same texture
// So sprite1 and sprite2 will be affected by this change
//
if (!cc.sys.isNative && !("opengl" in cc.sys.capabilities && cc._renderType === cc.game.RENDER_TYPE_WEBGL)) {
var label = new cc.LabelTTF("Not supported on HTML5-canvas", "Times New Roman", 30);
this.addChild(label);
label.x = winSize.width / 2;
label.y = winSize.height / 2;
} else {
var sprite = this.getChildByTag(TAG_SPRITE1);
sprite.texture.setAliasTexParameters();
}
//----end24----
},
onExit:function () {
//----start24----onExit
if (cc.sys.isNative || ("opengl" in cc.sys.capabilities && cc._renderType === cc.game.RENDER_TYPE_WEBGL)) {
var sprite = this.getChildByTag(TAG_SPRITE1);
sprite.texture.setAntiAliasTexParameters();
}
this._super();
//----end24----
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeAliased
//
//------------------------------------------------------------------
var SpriteBatchNodeAliased = SpriteTestDemo.extend({
_title:"SpriteBatchNode Aliased",
_subtitle:"You should see pixelated sprites",
ctor:function () {
//----start25----ctor
this._super();
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 10);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
var sprite1 = new cc.Sprite(batch.texture, cc.rect(85, 121, 85, 121));
sprite1.x = winSize.width / 2 - 100;
sprite1.y = winSize.height / 2;
batch.addChild(sprite1, 0, TAG_SPRITE1);
var sprite2 = new cc.Sprite(batch.texture, cc.rect(85, 121, 85, 121));
sprite2.x = winSize.width / 2 + 100;
sprite2.y = winSize.height / 2;
batch.addChild(sprite2, 0, TAG_SPRITE2);
var scale = cc.scaleBy(2, 5);
var scale_back = scale.reverse();
var seq = cc.sequence(scale, scale_back);
var repeat = seq.repeatForever();
var scale2 = cc.scaleBy(2, 5);
var scale_back2 = scale2.reverse();
var seq2 = cc.sequence(scale2, scale_back2);
var repeat2 = seq2.repeatForever();
sprite1.runAction(repeat);
sprite2.runAction(repeat2);
//----end25----
},
onEnter:function () {
//----start25----onEnter
this._super();
//
// IMPORTANT:
// This change will affect every sprite that uses the same texture
// So sprite1 and sprite2 will be affected by this change
//
if (!cc.sys.isNative && !("opengl" in cc.sys.capabilities && cc._renderType === cc.game.RENDER_TYPE_WEBGL)) {
var label = new cc.LabelTTF("Not supported on HTML5-canvas", "Times New Roman", 30);
this.addChild(label);
label.x = winSize.width / 2;
label.y = winSize.height / 2;
} else {
var sprite = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
sprite.texture.setAliasTexParameters();
}
//----end25----
},
onExit:function () {
//----start25----onExit
if (cc.sys.isNative || ("opengl" in cc.sys.capabilities && cc._renderType === cc.game.RENDER_TYPE_WEBGL)) {
var sprite = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
sprite.texture.setAntiAliasTexParameters();
}
this._super();
//----end25----
}
});
//------------------------------------------------------------------
//
// SpriteNewTexture
//
//------------------------------------------------------------------
var SpriteNewTexture = SpriteTestDemo.extend({
_usingTexture1:false,
_texture1:null,
_texture2:null,
_title:"Sprite New texture (tap)",
ctor:function () {
//----start26----ctor
this._super();
if ('touches' in cc.sys.capabilities){
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesEnded:function (touches, event) {
event.getCurrentTarget().onChangeTexture();
}
}, this);
} else if ('mouse' in cc.sys.capabilities)
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseUp: function(event){
event.getCurrentTarget().onChangeTexture();
}
}, this);
var node = new cc.Node();
this.addChild(node, 0, TAG_SPRITE_BATCH_NODE);
this._texture1 = cc.textureCache.addImage(s_grossini_dance_atlas);
this._texture2 = cc.textureCache.addImage(s_grossini_dance_atlas_mono);
this._usingTexture1 = true;
for (var i = 0; i < 30; i++) {
this.addNewSprite();
}
//----end26----
},
addNewSprite:function () {
//----start26----addNewSprite
var p = cc.p(Math.random() * winSize.width, Math.random() * winSize.height);
var idx = 0 | (Math.random() * 14);
var x = (idx % 5) * 85;
var y = (0 | (idx / 5)) * 121;
var node = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var sprite = new cc.Sprite(this._texture1, cc.rect(x, y, 85, 121));
node.addChild(sprite);
sprite.x = p.x;
sprite.y = p.y;
var action;
var random = Math.random();
if (random < 0.20)
action = cc.scaleBy(3, 2);
else if (random < 0.40)
action = cc.rotateBy(3, 360);
else if (random < 0.60)
action = cc.blink(1, 3);
// else if (random < 0.8)
// action = cc.tintBy(2, 0, -255, -255);
else
action = cc.fadeOut(2);
var action_back = action.reverse();
var seq = cc.sequence(action, action_back);
sprite.runAction(seq.repeatForever());
//----end26----
},
onChangeTexture:function () {
//----start26----onChangeTexture
var node = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var children = node.children, sprite, i;
if (this._usingTexture1) { //-. win32 : Let's it make just simple sentence
for (i = 0; i < children.length; i++) {
sprite = children[i];
if (!sprite)
break;
sprite.texture = this._texture2;
}
this._usingTexture1 = false;
} else {
for (i = 0; i < children.length; i++) {
sprite = children[i];
if (!sprite)
break;
sprite.texture = this._texture1;
}
this._usingTexture1 = true;
}
//----end26----
},
//
// Automation
//
testDuration:1,
pixel:{"0":51, "1":0, "2":51, "3":255},
setupAutomation:function () {
this.scheduleOnce(this.addTestSprite, 0.5);
},
addTestSprite:function () {
var node = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var sprite = new cc.Sprite(this._texture1, cc.rect(0, 0, 85, 121));
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
node.addChild(sprite);
},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
var ret = {"pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeNewTexture
//
//------------------------------------------------------------------
var SpriteBatchNodeNewTexture = SpriteTestDemo.extend({
_texture1:null,
_texture2:null,
_title:"SpriteBatchNode new texture (tap)",
ctor:function () {
//----start27----ctor
this._super();
if ('touches' in cc.sys.capabilities){
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesEnded:function (touches, event) {
event.getCurrentTarget().onChangeTexture();
}
}, this);
} else if ('mouse' in cc.sys.capabilities)
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseUp: function(event){
event.getCurrentTarget().onChangeTexture();
}
}, this);
var batch = new cc.SpriteBatchNode(s_grossini_dance_atlas, 50);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
this._texture1 = batch.texture;
this._texture2 = cc.textureCache.addImage(s_grossini_dance_atlas_mono);
for (var i = 0; i < 30; i++) {
this.addNewSprite();
}
//----end27----
},
addNewSprite:function () {
//----start27----addNewSprite
var s = winSize;
var p = cc.p(Math.random() * winSize.width, Math.random() * winSize.height);
var batch = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var idx = 0 | (Math.random() * 14);
var x = (idx % 5) * 85;
var y = (0 | (idx / 5)) * 121;
var sprite = new cc.Sprite(batch.texture, cc.rect(x, y, 85, 121));
batch.addChild(sprite);
sprite.x = p.x;
sprite.y = p.y;
var action;
var random = Math.random();
if (random < 0.20)
action = cc.scaleBy(3, 2);
else if (random < 0.40)
action = cc.rotateBy(3, 360);
else if (random < 0.60)
action = cc.blink(1, 3);
//else if (random < 0.8)
// action = cc.tintBy(2, 0, -255, -255);
else
action = cc.fadeOut(2);
var action_back = action.reverse();
var seq = cc.sequence(action, action_back);
sprite.runAction(seq.repeatForever());
//----end27----
},
onChangeTexture:function () {
//----start27----onChangeTexture
var batch = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
if (batch.texture == this._texture1)
batch.texture = this._texture2;
else
batch.texture = this._texture1;
//----end27----
},
//
// Automation
//
testDuration:1,
pixel:{"0":51, "1":0, "2":51, "3":255},
setupAutomation:function () {
this.scheduleOnce(this.addTestSprite, 0.5);
},
addTestSprite:function () {
var node = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var sprite = new cc.Sprite(this._texture1, cc.rect(0, 0, 85, 121));
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
node.addChild(sprite);
},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
var ret = {"pixel":this.containsPixel(ret1, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteFrameTest
//
//------------------------------------------------------------------
var SpriteFrameTest = SpriteTestDemo.extend({
_sprite1:null,
_sprite2:null,
_counter:0,
_title:"Sprite vs. SpriteBatchNode animation",
_subtitle:"Testing issue #792",
onEnter:function () {
//----start2----onEnter
this._super();
// IMPORTANT:
// The sprite frames will be cached AND RETAINED, and they won't be released unless you call
// cc.spriteFrameCache.removeUnusedSpriteFrames);
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
spriteFrameCache.addSpriteFrames(s_grossini_bluePlist, s_grossini_blue);
//
// Animation using Sprite BatchNode
//
this._sprite1 = new cc.Sprite("#grossini_dance_01.png");
this._sprite1.x = winSize.width / 2 - 80;
this._sprite1.y = winSize.height / 2;
var spritebatch = new cc.SpriteBatchNode(s_grossini);
spritebatch.addChild(this._sprite1);
this.addChild(spritebatch);
var animFrames = [];
var str = "";
var frame;
for (var i = 1; i < 15; i++) {
str = "grossini_dance_" + (i < 10 ? ("0" + i) : i) + ".png";
frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
this._sprite1.runAction(cc.animate(animation).repeatForever());
// to test issue #732, uncomment the following line
this._sprite1.flippedX = false;
this._sprite1.flippedY = false;
//
// Animation using standard Sprite
//
this._sprite2 = new cc.Sprite("#grossini_dance_01.png");
this._sprite2.x = winSize.width / 2 + 80;
this._sprite2.y = winSize.height / 2;
this.addChild(this._sprite2);
var moreFrames = [];
for (i = 1; i < 15; i++) {
str = "grossini_dance_gray_" + (i < 10 ? ("0" + i) : i) + ".png";
frame = spriteFrameCache.getSpriteFrame(str);
moreFrames.push(frame);
}
for (i = 1; i < 5; i++) {
str = "grossini_blue_0" + i + ".png";
frame = spriteFrameCache.getSpriteFrame(str);
moreFrames.push(frame);
}
// append frames from another batch
moreFrames = moreFrames.concat(animFrames);
var animMixed = new cc.Animation(moreFrames, 0.3);
this._sprite2.runAction(cc.animate(animMixed).repeatForever());
// to test issue #732, uncomment the following line
this._sprite2.flippedX = false;
this._sprite2.flippedY = false;
this.schedule(this.onStartIn05Secs, 0.5);
this._counter = 0;
//----end2----
},
onExit:function () {
//----start2----onExit
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossiniPlist);
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_grayPlist);
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_bluePlist);
//----end2----
},
onStartIn05Secs:function () {
//----start2----onStartIn05Secs
this.unschedule(this.onStartIn05Secs);
this.schedule(this.onFlipSprites, 1.0);
//----end2----
},
onFlipSprites:function (dt) {
//----start2----onFlipSprites
this._counter++;
var fx = false;
var fy = false;
var i = this._counter % 4;
switch (i) {
case 0:
fx = false;
fy = false;
break;
case 1:
fx = true;
fy = false;
break;
case 2:
fx = false;
fy = true;
break;
case 3:
fx = true;
fy = true;
break;
}
this._sprite1.flippedX = fx;
this._sprite1.flippedY = fy;
this._sprite2.flippedX = fx;
this._sprite2.flippedY = fy;
//----end2----
},
//
// Automation
//
testDuration:3.1,
pixel1:{"0":255, "1":204, "2":153, "3":255},
pixel2:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 - 50, winSize.height / 2 + 8, 5, 5);
var ret2 = this.readPixels(winSize.width / 2 - 80, winSize.height / 2 - 42, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteFrameAliasNameTest
//
//------------------------------------------------------------------
var SpriteFrameAliasNameTest = SpriteTestDemo.extend({
_title:"SpriteFrame Alias Name",
_subtitle:"SpriteFrames are obtained using the alias name",
onEnter:function (){
//----start3----onEnter
this._super();
// IMPORTANT:
// The sprite frames will be cached AND RETAINED, and they won't be released unless you call
//
// cc.SpriteFrameCache is a cache of cc.SpriteFrames
// cc.SpriteFrames each contain a texture id and a rect (frame).
spriteFrameCache.addSpriteFrames(s_grossini_aliasesPlist, s_grossini_aliases);
//
// Animation using Sprite batch
//
// A cc.SpriteBatchNode can reference one and only one texture (one .png file)
// Sprites that are contained in that texture can be instantiated as cc.Sprites and then added to the cc.SpriteBatchNode
// All cc.Sprites added to a cc.SpriteBatchNode are drawn in one OpenGL ES draw call
// If the cc.Sprites are not added to a cc.SpriteBatchNode then an OpenGL ES draw call will be needed for each one, which is less efficient
//
// When you animate a sprite, CCAnimation changes the frame of the sprite using setDisplayFrame: (this is why the animation must be in the same texture)
// When setDisplayFrame: is used in the CCAnimation it changes the frame to one specified by the cc.SpriteFrames that were added to the animation,
// but texture id is still the same and so the sprite is still a child of the cc.SpriteBatchNode,
// and therefore all the animation sprites are also drawn as part of the cc.SpriteBatchNode
//
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
var spriteBatch = new cc.SpriteBatchNode(s_grossini_aliases);
spriteBatch.addChild(sprite);
this.addChild(spriteBatch);
var animFrames = [];
var str = "";
for (var i = 1; i < 15; i++) {
// Obtain frames by alias name
str = "dance_" + (i < 10 ? ("0" + i) : i);
var frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
// 14 frames * 1sec = 14 seconds
sprite.runAction(cc.animate(animation).repeatForever());
this.testSprite = sprite;
//----end3----
},
onExit:function () {
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_aliasesPlist);
},
//
// Automation
//
testDuration:0.5,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 - 32, winSize.height / 2 - 10, 5, 5);
var ret = {"pixel":this.containsPixel(ret1, this.pixel, false) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteOffsetAnchorRotation
//
//------------------------------------------------------------------
var SpriteOffsetAnchorRotation = SpriteTestDemo.extend({
_title:"Sprite offset + anchor + rot",
ctor:function () {
//----start6----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite BatchNode
//
var sprite = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 1);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var str = "";
for (var j = 1; j < 15; j++) {
str = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
sprite.runAction(cc.rotateBy(10, 360).repeatForever());
this.addChild(sprite, 0);
}
//----end6----
},
onExit:function () {
//----start6----onExit
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossiniPlist);
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_grayPlist);
//----end6----
},
//
// Automation
//
testDuration:5,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 - 13, winSize.height / 2 - 50, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 + 29, winSize.height / 2 + 11, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 + 71, winSize.height / 2 + 71, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeOffsetAnchorRotation
//
//------------------------------------------------------------------
var SpriteBatchNodeOffsetAnchorRotation = SpriteTestDemo.extend({
_title:"SpriteBatchNode offset + anchor + rot",
ctor:function () {
//----start7----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
var spritebatch = new cc.SpriteBatchNode(s_grossini);
this.addChild(spritebatch);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite BatchNode
//
var sprite = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 200);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var str = "";
for (var k = 1; k < 15; k++) {
str = "grossini_dance_" + (k < 10 ? ("0" + k) : k) + ".png";
var frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
sprite.runAction(cc.rotateBy(10, 360).repeatForever());
spritebatch.addChild(sprite, i);
}
//----end7----
},
onExit:function () {
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossiniPlist);
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_grayPlist);
},
//
// Automation
//
testDuration:5,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 - 13, winSize.height / 2 - 50, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 + 29, winSize.height / 2 + 11, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 + 71, winSize.height / 2 + 71, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteOffsetAnchorScale
//
//------------------------------------------------------------------
var SpriteOffsetAnchorScale = SpriteTestDemo.extend({
_title:"Sprite offset + anchor + scale",
ctor:function () {
//----start8----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite BatchNode
//
var sprite = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 1);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var str = "";
for (var k = 1; k <= 14; k++) {
str = "grossini_dance_" + (k < 10 ? ("0" + k) : k) + ".png";
var frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
var scale = cc.scaleBy(2, 2);
var scale_back = scale.reverse();
var delay = cc.delayTime(0.25);
var seq_scale = cc.sequence(scale, delay, scale_back);
sprite.runAction(seq_scale.repeatForever());
this.addChild(sprite, 0);
}
//----end8----
},
onExit:function () {
//----start8----onExit
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossiniPlist);
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_grayPlist);
//----end8----
},
//
// Automation
//
testDuration:2.1,
pixel:{"0":153, "1":0, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 * 3 - 85, winSize.height / 2 - 106, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2, winSize.height / 2 + 13, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 + 82, winSize.height / 2 + 133, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeOffsetAnchorScale
//
//------------------------------------------------------------------
var SpriteBatchNodeOffsetAnchorScale = SpriteTestDemo.extend({
_title:"SpriteBatchNode offset + anchor + scale",
ctor:function () {
this._super();
//----start9----ctor
var batch = new cc.SpriteBatchNode(s_grossini);
this.addChild(batch);
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite BatchNode
//
var sprite = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 200);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var str = "";
for (var k = 1; k <= 14; k++) {
str = "grossini_dance_" + (k < 10 ? ("0" + k) : k) + ".png";
var frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
var scale = cc.scaleBy(2, 2);
var scale_back = scale.reverse();
var seq_scale = cc.sequence(scale, scale_back);
sprite.runAction(seq_scale.repeatForever());
batch.addChild(sprite, i);
}
//----end9----
},
onExit:function () {
//----start9----onExit
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossiniPlist);
spriteFrameCache.removeSpriteFramesFromFile(s_grossini_grayPlist);
//----end9----
},
//
// Automation
//
testDuration:2.1,
pixel:{"0":153, "1":0, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 * 3 - 85, winSize.height / 2 - 106, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2, winSize.height / 2 + 13, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 + 82, winSize.height / 2 + 133, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//
// SpriteOffsetAnchorSkew
//
var SpriteOffsetAnchorSkew = SpriteTestDemo.extend({
_title:"Sprite offset + anchor + skew",
ctor:function () {
//----start41----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite batch
//
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 1);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var tmp = "";
for (var j = 1; j <= 14; j++) {
tmp = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(tmp);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
var skewX = cc.skewBy(2, 45, 0);
var skewX_back = skewX.reverse();
var skewY = cc.skewBy(2, 0, 45);
var skewY_back = skewY.reverse();
var seq_skew = cc.sequence(skewX, skewX_back, skewY, skewY_back);
sprite.runAction(seq_skew.repeatForever());
this.addChild(sprite, 0);
}
//----end41----
},
//
// Automation
//
testDuration:2,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 142, winSize.height / 2 + 98, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 + 50, winSize.height / 2 + 43, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//
// SpriteBatchNodeOffsetAnchorSkew
//
var SpriteBatchNodeOffsetAnchorSkew = SpriteTestDemo.extend({
_title:"SpriteBatchNode offset + anchor + skew",
ctor:function () {
//----start42----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
var spritebatch = new cc.SpriteBatchNode(s_grossini);
this.addChild(spritebatch);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite batch
//
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 200);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var tmp = "";
for (var j = 1; j <= 14; j++) {
tmp = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(tmp);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
animFrames = null;
var skewX = cc.skewBy(2, 45, 0);
var skewX_back = skewX.reverse();
var skewY = cc.skewBy(2, 0, 45);
var skewY_back = skewY.reverse();
var seq_skew = cc.sequence(skewX, skewX_back, skewY, skewY_back);
sprite.runAction(seq_skew.repeatForever());
spritebatch.addChild(sprite, i);
}
//----end42----
},
//
// Automation
//
testDuration:2,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 142, winSize.height / 2 + 98, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 + 50, winSize.height / 2 + 43, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//
// SpriteOffsetAnchorSkewScale
//
var SpriteOffsetAnchorSkewScale = SpriteTestDemo.extend({
_title:"Sprite anchor + skew + scale",
ctor:function () {
//----start43----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite batch
//
var sprite = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 1);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var tmp = "";
for (var j = 1; j <= 14; j++) {
tmp = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(tmp);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
animFrames = null;
// Skew
var skewX = cc.skewBy(2, 45, 0);
var skewX_back = skewX.reverse();
var skewY = cc.skewBy(2, 0, 45);
var skewY_back = skewY.reverse();
var seq_skew = cc.sequence(skewX, skewX_back, skewY, skewY_back);
sprite.runAction(seq_skew.repeatForever());
// Scale
var scale = cc.scaleBy(2, 2);
var scale_back = scale.reverse();
var seq_scale = cc.sequence(scale, scale_back);
sprite.runAction(seq_scale.repeatForever());
this.addChild(sprite, 0);
}
//----end43----
},
//
// Automation
//
testDuration:2,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 121, winSize.height / 2 + 99, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 - 83, winSize.height / 2 - 21, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 - 286, winSize.height / 2 - 140, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//
// SpriteBatchNodeOffsetAnchorSkewScale
//
var SpriteBatchNodeOffsetAnchorSkewScale = SpriteTestDemo.extend({
_title:"SpriteBatchNode anchor + skew + scale",
ctor:function () {
//----start44----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
var spritebatch = new cc.SpriteBatchNode(s_grossini);
this.addChild(spritebatch);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite batch
//
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 200);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var tmp = "";
for (var j = 1; j <= 14; j++) {
tmp = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(tmp);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
animFrames = null;
// skew
var skewX = cc.skewBy(2, 45, 0);
var skewX_back = skewX.reverse();
var skewY = cc.skewBy(2, 0, 45);
var skewY_back = skewY.reverse();
var seq_skew = cc.sequence(skewX, skewX_back, skewY, skewY_back);
sprite.runAction(seq_skew.repeatForever());
// scale
var scale = cc.scaleBy(2, 2);
var scale_back = scale.reverse();
var seq_scale = cc.sequence(scale, scale_back);
sprite.runAction(seq_scale.repeatForever());
spritebatch.addChild(sprite, i);
}
//----end44----
},
//
// Automation
//
testDuration:2,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 121, winSize.height / 2 + 99, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2 - 83, winSize.height / 2 - 21, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 - 286, winSize.height / 2 - 140, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//
// SpriteOffsetAnchorFlip
//
var SpriteOffsetAnchorFlip = SpriteTestDemo.extend({
_title:"Sprite offset + anchor + flip",
_subtitle:"issue #1078",
ctor:function () {
//----start45----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite batch
//
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 1);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var tmp = "";
for (var j = 1; j <= 14; j++) {
tmp = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(tmp);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
animFrames = null;
var flip = cc.flipY(true);
var flip_back = cc.flipY(false);
var delay = cc.delayTime(1);
var delay1 = cc.delayTime(1);
var seq = cc.sequence(delay, flip, delay1, flip_back);
sprite.runAction(seq.repeatForever());
this.addChild(sprite, 0);
}
//----end45----
},
//
// Automation
//
testDuration:1.5,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 40, winSize.height / 2 + 18, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2, winSize.height / 2 - 44, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 - 45, winSize.height / 2 - 105, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//
// SpriteBatchNodeOffsetAnchorFlip
//
var SpriteBatchNodeOffsetAnchorFlip = SpriteTestDemo.extend({
_title:"SpriteBatchNode offset + anchor + flip",
_subtitle:"issue #1078",
ctor:function () {
//----start46----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
var spritebatch = new cc.SpriteBatchNode(s_grossini);
this.addChild(spritebatch);
for (var i = 0; i < 3; i++) {
//
// Animation using Sprite batch
//
var sprite = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite.x;
point.y = sprite.y;
this.addChild(point, 200);
switch (i) {
case 0:
sprite.anchorX = 0;
sprite.anchorY = 0;
break;
case 1:
sprite.anchorX = 0.5;
sprite.anchorY = 0.5;
break;
case 2:
sprite.anchorX = 1;
sprite.anchorY = 1;
break;
}
point.x = sprite.x;
point.y = sprite.y;
var animFrames = [];
var tmp = "";
for (var j = 1; j <= 14; j++) {
tmp = "grossini_dance_" + (j < 10 ? ("0" + j) : j) + ".png";
var frame = spriteFrameCache.getSpriteFrame(tmp);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.3);
sprite.runAction(cc.animate(animation).repeatForever());
animFrames = null;
var flip = cc.flipY(true);
var flip_back = cc.flipY(false);
var delay = cc.delayTime(1);
var seq = cc.sequence(delay, flip, delay.clone(), flip_back);
sprite.runAction(seq.repeatForever());
spritebatch.addChild(sprite, i);
}
//----end46----
},
//
// Automation
//
testDuration:1.5,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 40, winSize.height / 2 + 18, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 2, winSize.height / 2 - 44, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 * 3 - 45, winSize.height / 2 - 105, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteAnimationSplit
//
//------------------------------------------------------------------
var SpriteAnimationSplit = SpriteTestDemo.extend({
_title:"Sprite: Animation + flip",
ctor:function () {
//----start10----ctor
this._super();
var texture = cc.textureCache.addImage(s_dragon_animation);
// manually add frames to the frame cache
var frame0 = new cc.SpriteFrame(texture, cc.rect(132 * 0, 132 * 0, 132, 132));
var frame1 = new cc.SpriteFrame(texture, cc.rect(132 * 1, 132 * 0, 132, 132));
var frame2 = new cc.SpriteFrame(texture, cc.rect(132 * 2, 132 * 0, 132, 132));
var frame3 = new cc.SpriteFrame(texture, cc.rect(132 * 3, 132 * 0, 132, 132));
var frame4 = new cc.SpriteFrame(texture, cc.rect(132 * 0, 132 * 1, 132, 132));
var frame5 = new cc.SpriteFrame(texture, cc.rect(132 * 1, 132 * 1, 132, 132));
//
// Animation using Sprite BatchNode
//
var sprite = new cc.Sprite(frame0);
sprite.x = winSize.width / 2;
sprite.y = winSize.height / 2;
this.addChild(sprite);
var animFrames = [];
animFrames.push(frame0);
animFrames.push(frame1);
animFrames.push(frame2);
animFrames.push(frame3);
animFrames.push(frame4);
animFrames.push(frame5);
var animation = new cc.Animation(animFrames, 0.2);
var animate = cc.animate(animation);
var delay = cc.delayTime(0.5);
var seq = cc.sequence(animate,
cc.flipX(true),
animate.clone(),
delay,
cc.flipX(false));
sprite.runAction(seq.repeatForever());
//----end10----
},
onExit:function () {
this._super();
},
//
// Automation
//
testDuration:2.8,
pixel1:{"0":208, "1":208, "2":208, "3":255},
pixel2:{"0":0, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 + 52, winSize.height / 2 - 29, 5, 5);
var ret2 = this.readPixels(winSize.width / 2, winSize.height / 2 - 22, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1, true, 3) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2, false) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteHybrid
//
//------------------------------------------------------------------
var SpriteHybrid = SpriteTestDemo.extend({
_usingSpriteBatchNode:false,
_title:"Hybrid.Sprite* sprite Test",
ctor:function () {
//----start28----ctor
this._super();
// parents
var parent1 = new cc.Node();
var parent2 = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(parent1, 0, TAG_NODE);
this.addChild(parent2, 0, TAG_SPRITE_BATCH_NODE);
// IMPORTANT:
// The sprite frames will be cached AND RETAINED, and they won't be released unless you call
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
// create 250 sprites
// only show 80% of them
for (var i = 1; i <= 250; i++) {
var spriteIdx = Math.round(Math.random() * 14);
if (spriteIdx === 0)
spriteIdx = 1;
var str = "grossini_dance_" + (spriteIdx < 10 ? ("0" + spriteIdx) : spriteIdx) + ".png";
var frame = spriteFrameCache.getSpriteFrame(str);
var sprite = new cc.Sprite(frame);
parent1.addChild(sprite, i, i);
var x = -1000;
var y = -1000;
if (Math.random() < 0.2) {
x = Math.random() * winSize.width;
y = Math.random() * winSize.height;
}
sprite.x = x;
sprite.y = y;
var action = cc.rotateBy(4, 360);
sprite.runAction(action.repeatForever());
}
this._usingSpriteBatchNode = false;
this.schedule(this.reparentSprite, 2);
//----end28----
},
onExit:function () {
//----start28----onExit
this._super();
spriteFrameCache.removeSpriteFramesFromFile(s_grossiniPlist);
//----end28----
},
reparentSprite:function () {
//----start28----reparentSprite
var p1 = this.getChildByTag(TAG_NODE);
var p2 = this.getChildByTag(TAG_SPRITE_BATCH_NODE);
var retArray = [];
var node;
if (this._usingSpriteBatchNode) {
var tempNode = p2;
p2 = p1;
p1 = tempNode;
}
////----UXLog("New parent is: %x", p2);
var children = p1.children;
for (var i = 0; i < children.length; i++) {
node = children[i];
if (!node)
break;
retArray.push(node);
}
p1.removeAllChildren(false);
for (i = 0; i < retArray.length; i++) {
node = retArray[i];
if (!node)
break;
p2.addChild(node, i, i);
}
this._usingSpriteBatchNode = !this._usingSpriteBatchNode;
//----end28----
},
//
// Automation
//
testDuration:2.5,
pixel:{"0":51, "1":0, "2":51, "3":255},
firstPixel1:false,
firstPixel2:false,
setupAutomation:function () {
this.scheduleOnce(this.addTestSprite, 1);
this.scheduleOnce(this.checkFirstPixel, 1.5);
},
addTestSprite:function () {
var p = this.getChildByTag(TAG_NODE);
var frame = spriteFrameCache.getSpriteFrame("grossini_dance_01.png");
var sprite1 = new cc.Sprite(frame);
sprite1.retain();
p.addChild(sprite1, 1000);
sprite1.x = winSize.width / 4;
sprite1.y = winSize.height / 2;
var sprite2 = new cc.Sprite(frame);
sprite2.retain();
p.addChild(sprite2, 1000);
sprite2.x = winSize.width / 2;
sprite2.y = winSize.height / 2;
},
checkFirstPixel:function () {
var ret1 = this.readPixels(winSize.width / 4, winSize.height / 2, 5, 5);
var ret2 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
this.firstPixel1 = this.containsPixel(ret1, this.pixel);
this.firstPixel2 = this.containsPixel(ret2, this.pixel);
},
getExpectedResult:function () {
var ret = {"firstPixel1":true, "firstPixel2":true, "secondPixel1":true, "pixel2":true};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var pixel1 = this.readPixels(winSize.width / 4, winSize.height / 2, 5, 5);
var pixel2 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
var secondPixel1 = this.containsPixel(pixel1, this.pixel);
var secondPixel2 = this.containsPixel(pixel2, this.pixel);
var ret = {"firstPixel1":this.firstPixel1, "firstPixel2":this.firstPixel2, "secondPixel1":secondPixel1, "pixel2":secondPixel2};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeChildren
//
//------------------------------------------------------------------
var SpriteBatchNodeChildren = SpriteTestDemo.extend({
_title:"SpriteBatchNode Grand Children",
ctor:function () {
//----start29----ctor
this._super();
// parents
var batch = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
var sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = winSize.width / 3;
sprite1.y = winSize.height / 2;
var sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 50;
sprite2.y = 50;
var sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -50;
sprite3.y = -50;
batch.addChild(sprite1);
sprite1.addChild(sprite2);
sprite1.addChild(sprite3);
// BEGIN NEW CODE
var animFrames = [];
var str = "";
for (var i = 1; i < 15; i++) {
str = "grossini_dance_" + (i < 10 ? ("0" + i) : i) + ".png";
var frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.2);
sprite1.runAction(cc.animate(animation).repeatForever());
// END NEW CODE
var action = cc.moveBy(2, cc.p(200, 0));
var action_back = action.reverse();
var action_rot = cc.rotateBy(2, 360);
var action_s = cc.scaleBy(2, 2);
var action_s_back = action_s.reverse();
var seq2 = action_rot.reverse();
sprite2.runAction(seq2.repeatForever());
sprite1.runAction(action_rot.repeatForever());
sprite1.runAction(cc.sequence(action, action_back).repeatForever());
sprite1.runAction(cc.sequence(action_s, action_s_back).repeatForever());
//----end29----
},
//
// Automation
//
testDuration:0.5,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 3 - 47, winSize.height / 2 + 107, 5, 5);
var ret2 = this.readPixels(winSize.width / 3 + 95, winSize.height / 2 - 5, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeChildrenZ
//
//------------------------------------------------------------------
var SpriteBatchNodeChildrenZ = SpriteTestDemo.extend({
_title:"SpriteBatchNode Children Z",
ctor:function () {
//----start30----ctor
this._super();
// parents
var batch;
var sprite1, sprite2, sprite3;
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
// test 1
batch = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = winSize.width / 3;
sprite1.y = winSize.height / 2;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
batch.addChild(sprite1);
sprite1.addChild(sprite2, 2);
sprite1.addChild(sprite3, -2);
// test 2
batch = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = 2 * winSize.width / 3;
sprite1.y = winSize.height / 2;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
batch.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, 2);
// test 3
batch = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = winSize.width / 2 - 90;
sprite1.y = winSize.height / 4;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = winSize.width / 2 - 60;
sprite2.y = winSize.height / 4;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = winSize.width / 2 - 30;
sprite3.y = winSize.height / 4;
batch.addChild(sprite1, 10);
batch.addChild(sprite2, -10);
batch.addChild(sprite3, -5);
// test 4
batch = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(batch, 0, TAG_SPRITE_BATCH_NODE);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = winSize.width / 2 + 30;
sprite1.y = winSize.height / 4;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = winSize.width / 2 + 60;
sprite2.y = winSize.height / 4;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = winSize.width / 2 + 90;
sprite3.y = winSize.height / 4;
batch.addChild(sprite1, -10);
batch.addChild(sprite2, -5);
batch.addChild(sprite3, -2);
//----end30----
},
//
// Automation
//
testDuration:1,
pixel1:{"0":51, "1":0, "2":51, "3":255},
pixel2:{"0":51, "1":0, "2":51, "3":255},
pixel3:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(2 * winSize.width / 3 - 20, winSize.height / 2, 5, 5);
var ret2 = this.readPixels(winSize.width / 3 - 20, winSize.height / 2 + 115, 5, 5);
var ret3 = this.readPixels(winSize.width / 2 + 30, winSize.height / 4 - 10, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":!this.containsPixel(ret2, this.pixel2) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel3) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteChildrenVisibility
//
//------------------------------------------------------------------
var SpriteChildrenVisibility = SpriteTestDemo.extend({
_title:"Sprite & SpriteBatchNode Visibility",
ctor:function () {
//----start31----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
//
// SpriteBatchNode
//
// parents
var aParent = new cc.SpriteBatchNode(s_grossini, 50);
aParent.x = winSize.width / 3;
aParent.y = winSize.height / 2;
this.addChild(aParent, 0);
var sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = 0;
sprite1.y = 0;
var sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
var sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, 2);
sprite1.runAction(cc.blink(5, 10));
//
// Sprite
//
aParent = new cc.Node();
aParent.x = 2 * winSize.width / 3;
aParent.y = winSize.height / 2;
this.addChild(aParent, 0);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = 0;
sprite1.y = 0;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, 2);
sprite1.runAction(cc.blink(5, 10));
//----end31----
},
//
// Automation
//
testDuration:1.7,
pixel1:{"0":0, "1":0, "2":0, "3":255},
pixel2:{"0":255, "1":204, "2":153, "3":255},
visible1:null,
visible2:null,
setupAutomation:function () {
this.scheduleOnce(this.getSpriteVisible, 1.2);
},
getSpriteVisible:function () {
var ret1 = this.readPixels(winSize.width / 3, winSize.height / 2 + 38, 5, 5);
var ret2 = this.readPixels(2 * winSize.width / 3, winSize.height / 2 + 38, 5, 5);
this.visible1 = this.containsPixel(ret1, this.pixel1) ? "true" : "false";
this.visible2 = this.containsPixel(ret2, this.pixel1) ? "true" : "false";
},
getExpectedResult:function () {
var ret = {"visible1":"true", "visible2":"true", "visible3":"false", "visible4":"false"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 3, winSize.height / 2 + 38, 5, 5);
var ret2 = this.readPixels(2 * winSize.width / 3, winSize.height / 2 + 38, 5, 5);
this.visible3 = this.containsPixel(ret1, this.pixel2) ? "true" : "false";
this.visible4 = this.containsPixel(ret2, this.pixel2) ? "true" : "false";
var ret = {"visible1":this.visible1, "visible2":this.visible2, "visible3":this.visible3, "visible4":this.visible4};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteChildrenVisibilityIssue665
//
//------------------------------------------------------------------
var SpriteChildrenVisibilityIssue665 = SpriteTestDemo.extend({
_title:"Sprite & SpriteBatchNode Visibility",
_subtitle:"No sprites should be visible",
ctor:function () {
//----start32----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
//
// SpriteBatchNode
//
// parents
var aParent = new cc.SpriteBatchNode(s_grossini, 50);
aParent.x = winSize.width / 3;
aParent.y = winSize.height / 2;
this.addChild(aParent, 0);
var sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = 0;
sprite1.y = 0;
var sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
var sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
// test issue #665
sprite1.visible = false;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, 2);
//
// Sprite
//
aParent = new cc.Node();
aParent.x = 2 * winSize.width / 3;
aParent.y = winSize.height / 2;
this.addChild(aParent, 0);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_01.png"));
sprite1.x = 0;
sprite1.y = 0;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
// test issue #665
sprite1.visible = false;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, 2);
//----end32----
},
//
// Automation
//
testDuration:1,
pixel:{"0":0, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"visible1":"false", "visible2":"false"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 3, winSize.height / 2 + 38, 5, 5);
var ret2 = this.readPixels(2 * winSize.width / 3, winSize.height / 2 + 38, 5, 5);
var ret = {"visible1":this.containsPixel(ret1, this.pixel) ? "false" : "true", "visible2":this.containsPixel(ret2, this.pixel) ? "false" : "true"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteChildrenAnchorPoint
//
//------------------------------------------------------------------
var SpriteChildrenAnchorPoint = SpriteTestDemo.extend({
_title:"Sprite: children + anchor",
ctor:function () {
//----start33----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
var aParent = new cc.Node();
this.addChild(aParent, 0);
// anchor (0,0)
var sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_08.png"));
sprite1.x = winSize.width / 4;
sprite1.y = winSize.height / 2;
sprite1.anchorX = 0;
sprite1.anchorY = 0;
var sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
var sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
var sprite4 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_04.png"));
sprite4.x = 0;
sprite4.y = 0;
sprite4.scale = 0.5;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, -2);
sprite1.addChild(sprite4, 3);
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite1.x;
point.y = sprite1.y;
this.addChild(point, 10);
// anchor (0.5, 0.5)
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_08.png"));
sprite1.x = winSize.width / 2;
sprite1.y = winSize.height / 2;
sprite1.anchorX = 0.5;
sprite1.anchorY = 0.5;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
sprite4 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_04.png"));
sprite4.x = 0;
sprite4.y = 0;
sprite4.scale = 0.5;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, -2);
sprite1.addChild(sprite4, 3);
point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite1.x;
point.y = sprite1.y;
this.addChild(point, 10);
// anchor (1,1)
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_08.png"));
sprite1.x = winSize.width / 2 + winSize.width / 4;
sprite1.y = winSize.height / 2;
sprite1.anchorX = 1;
sprite1.anchorY = 1;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
sprite4 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_04.png"));
sprite4.x = 0;
sprite4.y = 0;
sprite4.scale = 0.5;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, -2);
sprite1.addChild(sprite4, 3);
point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite1.x;
point.y = sprite1.y;
this.addChild(point, 10);
//----end33----
},
//
// Automation
//
testDuration:1,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(3 * winSize.width / 4 - 87, winSize.height / 2 - 99, 5, 5);
var ret2 = this.readPixels(2 * winSize.width / 4 - 59, winSize.height / 2 - 66, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 - 15, winSize.height / 2 - 6, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeChildrenAnchorPoint
//
//------------------------------------------------------------------
var SpriteBatchNodeChildrenAnchorPoint = SpriteTestDemo.extend({
_title:"SpriteBatchNode: children + anchor",
ctor:function () {
//----start34----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
//
// SpriteBatchNode
//
// parents
var aParent = new cc.SpriteBatchNode(s_grossini, 50);
this.addChild(aParent, 0);
// anchor (0,0)
var sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_08.png"));
sprite1.x = winSize.width / 4;
sprite1.y = winSize.height / 2;
sprite1.anchorX = 0;
sprite1.anchorY = 0;
var sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
var sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
var sprite4 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_04.png"));
sprite4.x = 0;
sprite4.y = 0;
sprite4.scale = 0.5;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, -2);
sprite1.addChild(sprite4, 3);
var point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite1.x;
point.y = sprite1.y;
this.addChild(point, 10);
// anchor (0.5, 0.5)
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_08.png"));
sprite1.x = winSize.width / 2;
sprite1.y = winSize.height / 2;
sprite1.anchorX = 0.5;
sprite1.anchorY = 0.5;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
sprite4 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_04.png"));
sprite4.x = 0;
sprite4.y = 0;
sprite4.scale = 0.5;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, -2);
sprite1.addChild(sprite4, 3);
point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite1.x;
point.y = sprite1.y;
this.addChild(point, 10);
// anchor (1,1)
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_08.png"));
sprite1.x = winSize.width / 2 + winSize.width / 4;
sprite1.y = winSize.height / 2;
sprite1.anchorX = 1;
sprite1.anchorY = 1;
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_02.png"));
sprite2.x = 20;
sprite2.y = 30;
sprite3 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_03.png"));
sprite3.x = -20;
sprite3.y = 30;
sprite4 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossini_dance_04.png"));
sprite4.x = 0;
sprite4.y = 0;
sprite4.scale = 0.5;
aParent.addChild(sprite1);
sprite1.addChild(sprite2, -2);
sprite1.addChild(sprite3, -2);
sprite1.addChild(sprite4, 3);
point = new cc.Sprite(s_pathR1);
point.scale = 0.25;
point.x = sprite1.x;
point.y = sprite1.y;
this.addChild(point, 10);
//----end34----
},
//
// Automation
//
testDuration:1,
pixel:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(3 * winSize.width / 4 - 87, winSize.height / 2 - 99, 5, 5);
var ret2 = this.readPixels(2 * winSize.width / 4 - 59, winSize.height / 2 - 66, 5, 5);
var ret3 = this.readPixels(winSize.width / 4 - 15, winSize.height / 2 - 6, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no", "pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeChildrenScale
//
//------------------------------------------------------------------
var SpriteBatchNodeChildrenScale = SpriteTestDemo.extend({
_title:"Sprite/BatchNode + child + scale + rot",
ctor:function () {
//----start35----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossini_familyPlist);
var rot = cc.rotateBy(10, 360);
var seq = rot.repeatForever();
//
// Children + Scale using Sprite
// Test 1
//
var aParent = new cc.Node();
var sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister1.png"));
sprite1.x = winSize.width / 4;
sprite1.y = winSize.height / 4;
sprite1.scaleX = 0.5;
sprite1.scaleY = 2.0;
sprite1.runAction(seq);
var sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister2.png"));
sprite2.x = 50;
sprite2.y = 0;
this.addChild(aParent);
aParent.addChild(sprite1);
sprite1.addChild(sprite2);
rot = cc.rotateBy(10, 360);
seq = rot.repeatForever();
//
// Children + Scale using SpriteBatchNode
// Test 2
//
aParent = new cc.SpriteBatchNode(s_grossini_family);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister1.png"));
sprite1.x = 3 * winSize.width / 4;
sprite1.y = winSize.height / 4;
sprite1.scaleX = 0.5;
sprite1.scaleY = 2.0;
sprite1.runAction(seq);
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister2.png"));
sprite2.x = 50;
sprite2.y = 0;
this.addChild(aParent);
aParent.addChild(sprite1);
sprite1.addChild(sprite2);
rot = cc.rotateBy(10, 360);
seq = rot.repeatForever();
//
// Children + Scale using Sprite
// Test 3
//
aParent = new cc.Node();
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister1.png"));
sprite1.x = winSize.width / 4;
sprite1.y = 2 * winSize.height / 3;
sprite1.scaleX = 1.5;
sprite1.scaleY = 0.5;
sprite1.runAction(seq);
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister2.png"));
sprite2.x = 50;
sprite2.y = 0;
this.addChild(aParent);
aParent.addChild(sprite1);
sprite1.addChild(sprite2);
rot = cc.rotateBy(10, 360);
seq = rot.repeatForever();
//
// Children + Scale using Sprite
// Test 4
//
aParent = new cc.SpriteBatchNode(s_grossini_family);
sprite1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister1.png"));
sprite1.x = 3 * winSize.width / 4;
sprite1.y = 2 * winSize.height / 3;
sprite1.scaleX = 1.5;
sprite1.scaleY = 0.5;
sprite1.runAction(seq);
sprite2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("grossinis_sister2.png"));
sprite2.x = 50;
sprite2.y = 0;
this.addChild(aParent);
aParent.addChild(sprite1);
sprite1.addChild(sprite2);
//----end35----
},
//
// Automation
//
testDuration:2.5,
pixel1:{"0":56, "1":116, "2":142, "3":255},
pixel2:{"0":0, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 - 31, 2 * winSize.height / 3 + 16, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 - 38, 2 * winSize.height / 3 + 16, 3, 3);
var ret3 = this.readPixels(3 * winSize.width / 4 - 31, 2 * winSize.height / 3 + 16, 5, 5);
var ret4 = this.readPixels(3 * winSize.width / 4 - 38, 2 * winSize.height / 3 + 16, 3, 3);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel1) ? "yes" : "no",
"pixel4":this.containsPixel(ret4, this.pixel2) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteChildrenChildren
//
//------------------------------------------------------------------
var SpriteChildrenChildren = SpriteTestDemo.extend({
_title:"Sprite multiple levels of children",
ctor:function () {
//----start36----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_ghostsPlist);
var rot = cc.rotateBy(10, 360);
var seq = rot.repeatForever();
var rot_back = rot.reverse();
var rot_back_fe = rot_back.repeatForever();
//
// SpriteBatchNode: 3 levels of children
//
var aParent = new cc.Node();
this.addChild(aParent);
// parent
var l1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("father.gif"));
l1.x = winSize.width / 2;
l1.y = winSize.height / 2;
l1.runAction(seq.clone());
aParent.addChild(l1);
var l1W = l1.width, l1H = l1.height;
// child left
var l2a = new cc.Sprite(spriteFrameCache.getSpriteFrame("sister1.gif"));
l2a.x = -50 + l1W / 2;
l2a.y = 0 + l1H / 2;
l2a.runAction(rot_back_fe.clone());
l1.addChild(l2a);
var l2aW = l2a.width, l2aH = l2a.height;
// child right
var l2b = new cc.Sprite(spriteFrameCache.getSpriteFrame("sister2.gif"));
l2b.x = +50 + l1W / 2;
l2b.y = 0 + l1H / 2;
l2b.runAction(rot_back_fe.clone());
l1.addChild(l2b);
var l2bW = l2b.width, l2bH = l2b.height;
// child left bottom
var l3a1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3a1.scale = 0.45;
l3a1.x = 0 + l2aW / 2;
l3a1.y = -100 + l2aH / 2;
l2a.addChild(l3a1);
// child left top
var l3a2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3a2.scale = 0.45;
l3a2.x = 0 + l2aW / 2;
l3a2.y = +100 + l2aH / 2;
l2a.addChild(l3a2);
// child right bottom
var l3b1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3b1.scale = 0.45;
l3b1.setFlippedY(true);
l3b1.x = 0 + l2bW / 2;
l3b1.y = -100 + l2bH / 2;
l2b.addChild(l3b1);
// child right top
var l3b2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3b2.scale = 0.45;
l3b2.setFlippedY(true);
l3b2.x = 0 + l2bW / 2;
l3b2.y = +100 + l2bH / 2;
l2b.addChild(l3b2);
//----end36----
},
//
// Automation
//
testDuration:4,
pixel:{"0":153, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 + 42, winSize.height / 2 + 145, 5, 5);
var ret2 = this.readPixels(winSize.width / 2 - 39, winSize.height / 2 + 55, 5, 5);
var ret3 = this.readPixels(winSize.width / 2 - 39, winSize.height / 2 - 146, 5, 5);
var ret4 = this.readPixels(winSize.width / 2 + 42, winSize.height / 2 - 56, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no",
"pixel4":this.containsPixel(ret4, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteBatchNodeChildrenChildren
//
//------------------------------------------------------------------
var SpriteBatchNodeChildrenChildren = SpriteTestDemo.extend({
_title:"SpriteBatchNode multiple levels of children",
ctor:function () {
//----start37----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_ghostsPlist);
var rot = cc.rotateBy(10, 360);
var seq = rot.repeatForever();
var rot_back = rot.reverse();
var rot_back_fe = rot_back.repeatForever();
//
// SpriteBatchNode: 3 levels of children
//
var aParent = new cc.SpriteBatchNode(s_ghosts);
if ("opengl" in cc.sys.capabilities && cc._renderType === cc.game.RENDER_TYPE_WEBGL)
aParent.texture.generateMipmap();
this.addChild(aParent);
// parent
var l1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("father.gif"));
l1.x = winSize.width / 2;
l1.y = winSize.height / 2;
l1.runAction(seq.clone());
aParent.addChild(l1);
var l1W = l1.width, l1H = l1.height;
// child left
var l2a = new cc.Sprite(spriteFrameCache.getSpriteFrame("sister1.gif"));
l2a.x = -50 + l1W / 2;
l2a.y = 0 + l1H / 2;
l2a.runAction(rot_back_fe.clone());
l1.addChild(l2a);
var l2aW = l2a.width, l2aH = l2a.height;
// child right
var l2b = new cc.Sprite(spriteFrameCache.getSpriteFrame("sister2.gif"));
l2b.x = 50 + l1W / 2;
l2b.y = 0 + l1H / 2;
l2b.runAction(rot_back_fe.clone());
l1.addChild(l2b);
var l2bW = l2b.width, l2bH = l2b.height;
// child left bottom
var l3a1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3a1.scale = 0.45;
l3a1.x = 0 + l2aW / 2;
l3a1.y = -100 + l2aH / 2;
l2a.addChild(l3a1);
// child left top
var l3a2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3a2.scale = 0.45;
l3a2.x = 0 + l2aW / 2;
l3a2.y = +100 + l2aH / 2;
l2a.addChild(l3a2);
// child right bottom
var l3b1 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3b1.scale = 0.45;
l3b1.setFlippedY(true);
l3b1.x = 0 + l2bW / 2;
l3b1.y = -100 + l2bH / 2;
l2b.addChild(l3b1);
// child right top
var l3b2 = new cc.Sprite(spriteFrameCache.getSpriteFrame("child1.gif"));
l3b2.scale = 0.45;
l3b2.setFlippedY(true);
l3b2.x = 0 + l2bW / 2;
l3b2.y = +100 + l2bH / 2;
l2b.addChild(l3b2);
//----end37----
},
//
// Automation
//
testDuration:4,
pixel:{"0":153, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes", "pixel4":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 + 42, winSize.height / 2 + 145, 5, 5);
var ret2 = this.readPixels(winSize.width / 2 - 39, winSize.height / 2 + 55, 5, 5);
var ret3 = this.readPixels(winSize.width / 2 - 39, winSize.height / 2 - 146, 5, 5);
var ret4 = this.readPixels(winSize.width / 2 + 42, winSize.height / 2 - 56, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel) ? "yes" : "no",
"pixel4":this.containsPixel(ret4, this.pixel) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// SpriteSubclass
//
//------------------------------------------------------------------
var MySprite1 = cc.Sprite.extend({
_ivar:0,
ctor: function(spriteFrameName) {
this._super(spriteFrameName);
}
});
var MySprite2 = cc.Sprite.extend({
_ivar:0,
ctor: function(name) {
this._super(name);
}
});
var SpriteSubclass = SpriteTestDemo.extend({
_title:"Sprite subclass",
_subtitle:"Testing initWithTexture:rect method",
ctor:function () {
//----start39----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_ghostsPlist);
var aParent = new cc.SpriteBatchNode(s_ghosts);
// MySprite1
var sprite = new MySprite1("#father.gif");
sprite.x = winSize.width / 4;
sprite.y = winSize.height / 2;
aParent.addChild(sprite);
this.addChild(aParent);
// MySprite2
var sprite2 = new MySprite2(s_pathGrossini);
this.addChild(sprite2);
sprite2.x = winSize.width / 4 * 3;
sprite2.y = winSize.height / 2;
//----end39----
},
//
// Automation
//
testDuration:1,
pixel1:{"0":249, "1":30, "2":20, "3":255},
pixel2:{"0":255, "1":204, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4, winSize.height / 2 - 15, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 * 3, winSize.height / 2 + 44, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no", "pixel2":this.containsPixel(ret2, this.pixel2) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
//------------------------------------------------------------------
//
// AnimationCache
//
//------------------------------------------------------------------
var AnimationCacheTest = SpriteTestDemo.extend({
_title:"AnimationCache",
_subtitle:"Sprite should be animated",
ctor:function () {
//----start40----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_grossiniPlist);
spriteFrameCache.addSpriteFrames(s_grossini_grayPlist);
spriteFrameCache.addSpriteFrames(s_grossini_bluePlist);
//
// create animation "dance"
//
var animFrames = [];
var frame, animFrame;
var str = "";
for (var i = 1; i < 15; i++) {
str = "grossini_dance_" + (i < 10 ? ("0" + i) : i) + ".png";
frame = spriteFrameCache.getSpriteFrame(str);
animFrame = new cc.AnimationFrame(frame, 1);
animFrames.push(animFrame);
}
var animation = new cc.Animation(animFrames, 0.2);
// Add an animation to the Cache
cc.animationCache.addAnimation(animation, "dance");
//
// create animation "dance gray"
//
animFrames = [];
for (i = 1; i < 15; i++) {
str = "grossini_dance_gray_" + (i < 10 ? ("0" + i) : i) + ".png";
frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
animation = new cc.Animation(animFrames, 0.2);
// Add an animation to the Cache
cc.animationCache.addAnimation(animation, "dance_gray");
//
// create animation "dance blue"
//
animFrames = [];
for (i = 1; i < 4; i++) {
str = "grossini_blue_0" + i + ".png";
frame = spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
animation = new cc.Animation(animFrames, 0.2);
// Add an animation to the Cache
cc.animationCache.addAnimation(animation, "dance_blue");
var animCache = cc.animationCache;
var normal = animCache.getAnimation("dance");
normal.setRestoreOriginalFrame(true);
var dance_grey = animCache.getAnimation("dance_gray");
dance_grey.setRestoreOriginalFrame(true);
var dance_blue = animCache.getAnimation("dance_blue");
dance_blue.setRestoreOriginalFrame(true);
var animN = cc.animate(normal);
var animG = cc.animate(dance_grey);
var animB = cc.animate(dance_blue);
var seq = cc.sequence(animN, animG, animB);
frame = spriteFrameCache.getSpriteFrame("grossini_dance_01.png");
var grossini = new cc.Sprite(frame);
grossini.x = winSize.width / 2;
grossini.y = winSize.height / 2;
this.addChild(grossini);
// run the animation
grossini.runAction(seq);
//----end40----
},
//
// Automation
//
testDuration:6.5,
ePixel1:{"0":51, "1":0, "2":51, "3":255},
ePixel2:{"0":15, "1":15, "2":15, "3":255},
ePixel3:{"0":0, "1":38, "2":0, "3":255},
cPixel1:null,
cPixel2:null,
cPixel3:null,
setupAutomation:function () {
//----start40----setupAutomation
var fun1 = function () {
this.cPixel1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
}
this.scheduleOnce(fun1, 0.4);
var fun2 = function () {
this.cPixel2 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
}
this.scheduleOnce(fun2, 3.2);
var fun3 = function () {
this.cPixel3 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
}
this.scheduleOnce(fun3, 6);
//----end40----
},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret = {"pixel1":this.containsPixel(this.cPixel1, this.ePixel1) ? "yes" : "no", "pixel2":this.containsPixel(this.cPixel2, this.ePixel2) ? "yes" : "no", "pixel3":this.containsPixel(this.cPixel3, this.ePixel3, true, 5) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var NodeSort = SpriteTestDemo.extend({
_node:null,
_sprite1:null,
_sprite2:null,
_sprite3:null,
_sprite4:null,
_sprite5:null,
_title:"node sort same index",
_subtitle:"tag order in console should be 2,1,3,4,5",
ctor:function () {
//----start49----ctor
this._super();
this._node = new cc.Node();
this.addChild(this._node, 0, 0);
this._sprite1 = new cc.Sprite(s_piece, cc.rect(128, 0, 64, 64));
this._sprite1.x = 100;
this._sprite1.y = 160;
this._node.addChild(this._sprite1, -6, 1);
this._sprite2 = new cc.Sprite(s_piece, cc.rect(128, 0, 64, 64));
this._sprite2.x = 164;
this._sprite2.y = 160;
this._node.addChild(this._sprite2, -6, 2);
this._sprite4 = new cc.Sprite(s_piece, cc.rect(128, 0, 64, 64));
this._sprite4.x = 292;
this._sprite4.y = 160;
this._node.addChild(this._sprite4, -3, 4);
this._sprite3 = new cc.Sprite(s_piece, cc.rect(128, 0, 64, 64));
this._sprite3.x = 228;
this._sprite3.y = 160;
this._node.addChild(this._sprite3, -4, 3);
this._sprite5 = new cc.Sprite(s_piece, cc.rect(128, 0, 64, 64));
this._sprite5.x = 356;
this._sprite5.y = 160;
this._node.addChild(this._sprite5, -3, 5);
this.schedule(this.reorderSprite);
//----end49----
},
reorderSprite:function (dt) {
//----start49----reorderSprite
this.unschedule(this.reorderSprite);
cc.log("Before reorder--");
var i = 0;
var child;
var nodeChildren = this._node.children;
for (i = 0; i < nodeChildren.length; i++) {
child = nodeChildren[i];
cc.log("tag:" + child.tag + " z: " + child.zIndex);
}
//z-4
this._node.reorderChild(this._node.children[0], -6);
this._node.sortAllChildren();
cc.log("After reorder--");
nodeChildren = this._node.children;
for (i = 0; i < nodeChildren.length; i++) {
child = nodeChildren[i];
cc.log("tag:" + child.tag + " z: " +
child.zIndex);
this.testOrders.push(child.tag);
}
//----end49----
},
//
// Automation
//
testDuration:1,
testOrders:[],
getExpectedResult:function () {
return JSON.stringify([2, 1, 3, 4, 5]);
},
getCurrentResult:function () {
return JSON.stringify(this.testOrders);
}
});
var SpriteBatchNodeReorderOneChild = SpriteTestDemo.extend({
_batchNode:null,
_reoderSprite:null,
_title:"SpriteBatchNode reorder 1 child",
ctor:function () {
//----start48----ctor
this._super();
spriteFrameCache.addSpriteFrames(s_ghostsPlist);
//
// SpriteBatchNode: 3 levels of children
//
var aParent = new cc.SpriteBatchNode(s_ghosts);
this._batchNode = aParent;
//[[aParent texture] generateMipmap];
if ("opengl" in cc.sys.capabilities && cc._renderType === cc.game.RENDER_TYPE_WEBGL)
aParent.texture.generateMipmap();
this.addChild(aParent);
// parent
var l1 = new cc.Sprite("#father.gif");
l1.x = winSize.width / 2;
l1.y = winSize.height / 2;
aParent.addChild(l1);
var l1W = l1.width, l1H = l1.height;
// child left
var l2a = new cc.Sprite("#sister1.gif");
l2a.x = -10 + l1W / 2;
l2a.y = 0 + l1H / 2;
l1.addChild(l2a, 1);
var l2aW = l2a.width, l2aH = l2a.height;
// child right
var l2b = new cc.Sprite("#sister2.gif");
l2b.x = +50 + l1W / 2;
l2b.y = 0 + l1H / 2;
l1.addChild(l2b, 2);
var l2bW = l2b.width, l2bH = l2b.height;
// child left bottom
var l3a1 = new cc.Sprite("#child1.gif");
l3a1.scale = 0.45;
l3a1.x = 0 + l2aW / 2;
l3a1.y = -50 + l2aH / 2;
l2a.addChild(l3a1, 1);
// child left top
var l3a2 = new cc.Sprite("#child1.gif");
l3a2.scale = 0.45;
l3a2.x = 0 + l2aW / 2;
l3a2.y = +50 + l2aH / 2;
l2a.addChild(l3a2, 2);
this._reoderSprite = l2a;
// child right bottom
var l3b1 = new cc.Sprite("#child1.gif");
l3b1.scale = 0.45;
l3b1.setFlippedY(true);
l3b1.x = 0 + l2bW / 2;
l3b1.y = -50 + l2bH / 2;
l2b.addChild(l3b1);
// child right top
var l3b2 = new cc.Sprite("#child1.gif");
l3b2.scale = 0.45;
l3b2.setFlippedY(true);
l3b2.x = 0 + l2bW / 2;
l3b2.y = 50 + l2bH / 2;
l2b.addChild(l3b2);
this.scheduleOnce(this.reorderSprite, 2.0);
//----end48----
},
reorderSprite:function (dt) {
this._reoderSprite.parent.reorderChild(this._reoderSprite, -1);
this._batchNode.sortAllChildren();
//cc.Sprite* child;
//CCARRAY_FOREACH(batchNode.descendants,child) NSLog(@"tag %i",child.tag);
},
//
// Automation
//
testDuration:2.5,
pixel:{"0":0, "1":102, "2":255, "3":255},
getExpectedResult:function () {
var ret = {"pixel":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 - 11, winSize.height / 2 + 33, 3, 3);
var ret = {"pixel":this.containsPixel(ret1, this.pixel, false) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var SpriteBatchNodeSkewNegativeScaleChildren = SpriteTestDemo.extend({
_title:"SpriteBatchNode + children + skew",
_subtitle:"SpriteBatchNode skew + negative scale with children",
ctor:function () {
//----start51----ctor
this._super();
var cache = spriteFrameCache;
cache.addSpriteFrames(s_grossiniPlist);
cache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
var spritebatch = new cc.SpriteBatchNode(s_grossini);
this.addChild(spritebatch);
for (var i = 0; i < 2; i++) {
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
// Skew
var skewX = cc.skewBy(2, 45, 0);
var skewX_back = skewX.reverse();
var skewY = cc.skewBy(2, 0, 45);
var skewY_back = skewY.reverse();
if (i === 1)
sprite.scale = -1.0;
var seq_skew = cc.sequence(skewX, skewX_back, skewY, skewY_back);
sprite.runAction(seq_skew.repeatForever());
var child1 = new cc.Sprite("#grossini_dance_01.png");
child1.x = sprite.width / 2.0;
child1.y = sprite.height / 2.0;
child1.scale = 0.8;
sprite.addChild(child1);
spritebatch.addChild(sprite, i);
}
//----end51----
},
//
// Automation
//
testDuration:6,
pixel1:{"0":51, "1":0, "2":51, "3":255},
pixel2:{"0":0, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 21, winSize.height / 2 + 22, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 + 11, winSize.height / 2 + 14, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1) ? "yes" : "no",
"pixel2":!this.containsPixel(ret2, this.pixel2) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var SpriteSkewNegativeScaleChildren = SpriteTestDemo.extend({
_title:"Sprite + children + skew",
_subtitle:"Sprite skew + negative scale with children",
ctor:function () {
//----start50----ctor
this._super();
var cache = spriteFrameCache;
cache.addSpriteFrames(s_grossiniPlist);
cache.addSpriteFrames(s_grossini_grayPlist, s_grossini_gray);
var parent = new cc.Node();
this.addChild(parent);
for (var i = 0; i < 2; i++) {
var sprite = new cc.Sprite("#grossini_dance_01.png");
sprite.x = winSize.width / 4 * (i + 1);
sprite.y = winSize.height / 2;
// Skew
var skewX = cc.skewBy(2, 45, 0);
var skewX_back = skewX.reverse();
var skewY = cc.skewBy(2, 0, 45);
var skewY_back = skewY.reverse();
if (i === 1)
sprite.scale = -1.0;
var seq_skew = cc.sequence(skewX, skewX_back, skewY, skewY_back);
sprite.runAction(seq_skew.repeatForever());
var child1 = new cc.Sprite("#grossini_dance_01.png");
child1.x = sprite.width / 2.0;
child1.y = sprite.height / 2.0;
sprite.addChild(child1);
child1.scale = 0.8;
parent.addChild(sprite, i);
}
//----end50----
},
//
// Automation
//
testDuration:6,
pixel1:{"0":51, "1":0, "2":51, "3":255},
pixel2:{"0":0, "1":0, "2":0, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 4 + 21, winSize.height / 2 + 22, 5, 5);
var ret2 = this.readPixels(winSize.width / 4 + 11, winSize.height / 2 + 14, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1, false) ? "yes" : "no",
"pixel2":!this.containsPixel(ret2, this.pixel2, false) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var DoubleSprite = cc.Sprite.extend({
HD:false,
ctor:function (fileName) {
this._super(fileName);
//var resolutionType = texture.getResolutionType();
//this.HD = ( resolutionType == cc.kCCResolutioniPhoneRetinaDisplay || resolutionType == kCCResolutioniPadRetinaDisplay );
},
setContentSize:function (size) {
var newSize = cc.size(size.width, size.height);
// If Retina Display and Texture is in HD then scale the vertex rect
if (cc.contentScaleFactor() == 2 && !this.HD) {
newSize.width *= 2;
newSize.height *= 2;
}
this._super(newSize);
},
_setWidth:function (value) {
// If Retina Display and Texture is in HD then scale the vertex rect
if (cc.contentScaleFactor() == 2 && !this.HD) {
value *= 2;
}
this._super(value);
},
_setHeight:function (value) {
// If Retina Display and Texture is in HD then scale the vertex rect
if (cc.contentScaleFactor() == 2 && !this.HD) {
value *= 2;
}
this._super(value);
},
setVertexRect:function (rect) {
// If Retina Display and Texture is in HD then scale the vertex rect
if (cc.contentScaleFactor() == 2 && !this.HD) {
rect.width *= 2;
rect.height *= 2;
}
this._super(rect);
}
});
cc.defineGetterSetter(DoubleSprite.prototype, "width", DoubleSprite.prototype._getWidth, DoubleSprite.prototype._setWidth);
cc.defineGetterSetter(DoubleSprite.prototype, "height", DoubleSprite.prototype._getHeight, DoubleSprite.prototype._setHeight);
var SpriteDoubleResolution = SpriteTestDemo.extend({
_title:"Sprite Double resolution",
_subtitle:"Retina Display. SD (left) should be equal to HD (right)",
ctor:function () {
//----start52----ctor
this._super();
//
// LEFT: SD sprite
//
// there is no HD resolution file of grossini_dance_08.
var spriteSD = new DoubleSprite(s_grossiniDance08);
this.addChild(spriteSD);
spriteSD.x = winSize.width / 4;
spriteSD.y = winSize.height / 2;
var child1_left = new DoubleSprite(s_grossiniDance08);
spriteSD.addChild(child1_left);
child1_left.x = -30;
child1_left.y = 0;
var child1_right = new cc.Sprite(s_pathGrossini);
spriteSD.addChild(child1_right);
child1_left.x = spriteSD.height;
child1_left.y = 0;
//
// RIGHT: HD sprite
//
// there is an HD version of grossini.png
var spriteHD = new cc.Sprite(s_pathGrossini);
this.addChild(spriteHD);
spriteHD.x = winSize.width / 4 * 3;
spriteHD.y = winSize.height / 2;
var child2_left = new DoubleSprite(s_grossiniDance08);
spriteHD.addChild(child2_left);
child2_left.x = -30;
child2_left.y = 0;
var child2_right = new cc.Sprite(s_pathGrossini);
spriteHD.addChild(child2_right);
child2_left.x = spriteHD.height;
child2_left.y = 0;
// Actions
var scale = cc.scaleBy(2, 0.5);
var scale_back = scale.reverse();
var seq = cc.sequence(scale, scale_back);
var seq_copy = seq.clone();
spriteSD.runAction(seq);
spriteHD.runAction(seq_copy);
//----end52----
}
});
var AnimationCacheFile = SpriteTestDemo.extend({
_title:"AnimationCache - Load file",
_subtitle:"Sprite should be animated",
ctor:function () {
//----start54----ctor
this._super();
var frameCache = spriteFrameCache;
frameCache.addSpriteFrames(s_grossiniPlist);
frameCache.addSpriteFrames(s_grossini_grayPlist);
frameCache.addSpriteFrames(s_grossini_bluePlist);
// Purge previously loaded animation
if(cc.animationCache._clear)
cc.animationCache._clear();
var animCache = cc.animationCache;
// Add an animation to the Cache
// XXX API-FIX XXX
// renamed from addAnimationsWithFile to addAnimations
animCache.addAnimations(s_animationsPlist);
var normal = animCache.getAnimation("dance_1");
normal.setRestoreOriginalFrame(true);
var dance_grey = animCache.getAnimation("dance_2");
dance_grey.setRestoreOriginalFrame(true);
var dance_blue = animCache.getAnimation("dance_3");
dance_blue.setRestoreOriginalFrame(true);
var animN = cc.animate(normal);
var animG = cc.animate(dance_grey);
var animB = cc.animate(dance_blue);
var seq = cc.sequence(animN, animG, animB);
// create an sprite with frame name
// texture-less sprites are not supported
var grossini = new cc.Sprite("#grossini_dance_01.png");
grossini.x = winSize.width / 2;
grossini.y = winSize.height / 2;
this.addChild(grossini);
// run the animation
grossini.runAction(seq);
//----end54----
},
//
// Automation
//
testDuration:6.5,
ePixel1:{"0":51, "1":0, "2":51, "3":255},
ePixel2:{"0":15, "1":15, "2":15, "3":255},
ePixel3:{"0":0, "1":38, "2":0, "3":255},
cPixel1:null,
cPixel2:null,
cPixel3:null,
setupAutomation:function () {
this.scheduleOnce(this.getPixel1, 0.4);
this.scheduleOnce(this.getPixel2, 3.2);
this.scheduleOnce(this.getPixel3, 6);
},
getPixel1:function () {
this.cPixel1 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
},
getPixel2:function () {
this.cPixel2 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
},
getPixel3:function () {
this.cPixel3 = this.readPixels(winSize.width / 2, winSize.height / 2, 5, 5);
},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret = {"pixel1":this.containsPixel(this.cPixel1, this.ePixel1) ? "yes" : "no", "pixel2":this.containsPixel(this.cPixel2, this.ePixel2) ? "yes" : "no", "pixel3":this.containsPixel(this.cPixel3, this.ePixel3, true, 5) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var SpriteBatchBug1217 = SpriteTestDemo.extend({
_title:"SpriteBatch - Bug 1217",
_subtitle:"Adding big family to spritebatch. You shall see 3 heads",
ctor:function () {
//----start53----ctor
this._super();
var bn = new cc.SpriteBatchNode(s_grossini_dance_atlas, 15);
var s1 = new cc.Sprite(bn.texture, cc.rect(0, 0, 57, 57));
var s2 = new cc.Sprite(bn.texture, cc.rect(0, 0, 57, 57));
var s3 = new cc.Sprite(bn.texture, cc.rect(0, 0, 57, 57));
s1.color = cc.color(255, 0, 0);
s2.color = cc.color(0, 255, 0);
s3.color = cc.color(0, 0, 255);
s1.x = 20;
s1.y = 200;
s2.x = 100;
s2.y = 0;
s3.x = 100;
s3.y = 0;
bn.x = 0;
bn.y = 0;
//!!!!!
s1.addChild(s2);
s2.addChild(s3);
bn.addChild(s1);
this.addChild(bn);
//----end53----
},
// Automation
testDuration:2.1,
pixel1:{"0":51, "1":0, "2":0, "3":255},
pixel2:{"0":0, "1":0, "2":0, "3":255},
pixel3:{"0":0, "1":0, "2":51, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes", "pixel3":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(20, 174, 3, 3);
var ret2 = this.readPixels(90, 145, 3, 3);
var ret3 = this.readPixels(163, 116, 3, 3);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1, false) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2, false) ? "yes" : "no",
"pixel3":this.containsPixel(ret3, this.pixel3, false) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var TextureColorCacheIssue = SpriteTestDemo.extend({
_title:"Texture Color Cache Issue Test",
_subtitle:"You should see two different sprites colored green and blue",
ctor:function () {
//----start55----ctor
this._super();
var spriteFrameCache = cc.spriteFrameCache;
spriteFrameCache.addSpriteFrames(s_tcc_issue_1_plist, s_tcc_issue_1);
spriteFrameCache.addSpriteFrames(s_tcc_issue_2_plist, s_tcc_issue_2);
var grossini = new cc.Sprite('#tcc_grossini_dance_01.png');
grossini.x = winSize.width / 3;
grossini.y = winSize.height / 2;
var sister = new cc.Sprite('#tcc_grossinis_sister1.png');
sister.x = winSize.width / 3 * 2;
sister.y = winSize.height / 2;
this.addChild(grossini);
this.addChild(sister);
grossini.color = cc.color(1, 255, 1);
sister.color = cc.color(1, 1, 255);
//----end55----
},
onExit:function () {
//----start55----onExit
spriteFrameCache.removeSpriteFramesFromFile(s_tcc_issue_1_plist);
spriteFrameCache.removeSpriteFramesFromFile(s_tcc_issue_2_plist);
this._super();
//----end55----
},
// Automation
pixel1:{"0":0, "1":204, "2":0, "3":255},
pixel2:{"0":0, "1":0, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 3, winSize.height / 2 + 43, 5, 5);
var ret2 = this.readPixels(winSize.width / 3 * 2, winSize.height / 2 - 6, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1, true, 3) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2, true, 3) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var TextureColorCacheIssue2 = SpriteTestDemo.extend({
_title:"Texture Color Cache Issue Test #2",
_subtitle:"You should see two different sprites magenta and yellow",
ctor:function () {
//----start56----ctor
this._super();
var spriteFrameCache = cc.spriteFrameCache;
spriteFrameCache.addSpriteFrames(s_tcc_issue_1_plist, s_tcc_issue_1);
spriteFrameCache.addSpriteFrames(s_tcc_issue_2_plist, s_tcc_issue_2);
var grossini = new cc.Sprite('#tcc_grossini_dance_01.png');
grossini.x = winSize.width / 3;
grossini.y = winSize.height / 2;
var sister = new cc.Sprite('#tcc_grossinis_sister1.png');
sister.x = winSize.width / 3 * 2;
sister.y = winSize.height / 2;
this.addChild(grossini);
this.addChild(sister);
grossini.color = cc.color(255, 255, 0);
sister.color = cc.color(255, 0, 255);
//----end56----
},
onExit:function () {
//----start56----onExit
spriteFrameCache.removeSpriteFramesFromFile(s_tcc_issue_1_plist);
spriteFrameCache.removeSpriteFramesFromFile(s_tcc_issue_2_plist);
this._super();
//----end56----
},
// Automation
pixel1:{"0":255, "1":204, "2":0, "3":255},
pixel2:{"0":255, "1":0, "2":153, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 3, winSize.height / 2 + 43, 5, 5);
var ret2 = this.readPixels(winSize.width / 3 * 2, winSize.height / 2 - 3, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1, true, 5) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2, true, 5) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var TextureRotatedSpriteFrame = SpriteTestDemo.extend({
_title:"Sub Sprite (rotated source)",
_subtitle:"createWithSpriteFrameName(); sub sprite",
ctor:function () {
//----start57----ctor
this._super();
cc.spriteFrameCache.addSpriteFrames(s_s9s_blocks9_plist);
var block = new cc.Sprite('#blocks9r.png');
var x = winSize.width / 2;
var y = 0 + (winSize.height / 2);
block.setTextureRect(cc.rect(32, 32, 32, 32), true, cc.rect(32, 32, 32, 32));
block.x = x;
block.y = y;
this.addChild(block);
//----end57----
},
// Automation
pixel1:{"0":255, "1":204, "2":153, "3":255},
pixel2:{"0":51, "1":0, "2":51, "3":255},
getExpectedResult:function () {
var ret = {"pixel1":"yes", "pixel2":"yes"};
return JSON.stringify(ret);
},
getCurrentResult:function () {
var ret1 = this.readPixels(winSize.width / 2 - 14, winSize.height / 2 - 8, 5, 5);
var ret2 = this.readPixels(winSize.width / 2 + 12, winSize.height / 2, 5, 5);
var ret = {"pixel1":this.containsPixel(ret1, this.pixel1, true, 5) ? "yes" : "no",
"pixel2":this.containsPixel(ret2, this.pixel2, true, 5) ? "yes" : "no"};
return JSON.stringify(ret);
}
});
var SpriteWithRepeatingTexture = SpriteTestDemo.extend({
_title:"Sprite with Repeating texture",
_subtitle:"aTexture.setTexParameters(cc.LINEAR, cc.LINEAR, cc.REPEAT, cc.REPEAT);",
ctor:function () {
//----start58----ctor
this._super();
var block = new cc.Sprite(s_pathBlock);
var x = winSize.width / 2;
var y = (winSize.height / 2);
block.setTextureRect(cc.rect(0,0, 320,240));
block.setPosition(x, y);
block.getTexture().setTexParameters(cc.LINEAR, cc.LINEAR, cc.REPEAT, cc.REPEAT);
this.addChild(block);
//----end58----
}
});
var SpriteBlendFuncTest = SpriteTestDemo.extend({
//webgl only
_title: "", //Sprite BlendFunc test
_subtitle: "",
ctor: function(){
//----start59----ctor
this._super();
var destFactors = [cc.ZERO, cc.ONE, cc.DST_COLOR, cc.ONE_MINUS_DST_COLOR, cc.DST_ALPHA, cc.ONE_MINUS_DST_ALPHA],
srcFactors = [cc.ZERO, cc.ONE, cc.SRC_COLOR, cc.ONE_MINUS_SRC_COLOR, cc.SRC_ALPHA, cc.ONE_MINUS_SRC_ALPHA];
var destTitles = ["ZERO", "ONE", "DST_COLOR", "ONE_MINUS_DST_COLOR", "DST_ALPHA", "ONE_MINUS_DST_ALPHA"],
srcTitles = ["ZERO", "ONE", "SRC_COLOR", "ONE_MINUS_SRC_COLOR", "SRC_ALPHA", "ONE_MINUS_SRC_ALPHA"];
var sourceImg = "Images/dot.png", destImg = "Images/wood.jpg";
var sourceTexture = cc.textureCache.addImage(sourceImg);
sourceTexture.handleLoadedTexture(true);
var sourceSprite = new cc.Sprite(sourceImg);
var destSprite = new cc.Sprite(destImg);
sourceSprite.setScale(0.8);
destSprite.setScale(0.8);
sourceSprite.setPosition(60,400);
destSprite.setPosition(120,400);
this.addChild(sourceSprite);
this.addChild(destSprite);
if(cc._renderType === cc._RENDER_TYPE_CANVAS){
var info = new cc.LabelTTF("support is not complete on canvas", "Arial", 18);
info.x = 680;
info.y = 250;
info.setDimensions(cc.size(200, 200));
this.addChild(info);
}
var i, j, title, fontSize, titleLabel;
for(i = 0; i < destTitles.length; i++){
title = destTitles[i];
fontSize = (title.length > 10) ? 14 : 18;
titleLabel = new cc.LabelTTF(title, "Arial", fontSize);
titleLabel.setAnchorPoint(0, 0.5);
titleLabel.setPosition(0, 355 - 60 * i);
this.addChild(titleLabel);
}
for(i = 0; i < srcTitles.length; i++){
title = srcTitles[i];
fontSize = (title.length > 10) ? 14 : 18;
titleLabel = new cc.LabelTTF(title, "Arial", fontSize);
titleLabel.setAnchorPoint(0, 0.5);
titleLabel.setPosition(220 + i * 60, 390);
titleLabel.setRotation(-20);
this.addChild(titleLabel);
}
//j = 0;
for(i = 0; i < srcFactors.length; i++){
for(j = 0; j < destFactors.length; j++){
sourceSprite = new cc.Sprite(sourceImg);
//sourceSprite.setScale(0.8);
sourceSprite.setPosition( 220 + i * 60, 355 - j * 60);
sourceSprite.setBlendFunc(srcFactors[i], destFactors[j]);
destSprite = new cc.Sprite(destImg);
//destSprite.setScale(0.8);
destSprite.setPosition( 220 + i * 60, 355 - j * 60);
// destSprite.setBlendFunc(srcFactors[j], destFactors[i]);
this.addChild(destSprite,1);
this.addChild(sourceSprite,2);
}
}
//----end59----
}
});
var SpriteTestScene = TestScene.extend({
runThisTest:function (num) {
spriteTestIdx = (num || num == 0) ? (num - 1) : -1;
var layer = nextSpriteTest();
this.addChild(layer);
director.runScene(this);
}
});
//
// Flow control
//
var arrayOfSpriteTest = [
Sprite1,
SpriteBatchNode1,
SpriteFrameTest,
SpriteFrameAliasNameTest,
SpriteAnchorPoint,
SpriteBatchNodeAnchorPoint,
SpriteOffsetAnchorRotation,
SpriteBatchNodeOffsetAnchorRotation,
SpriteOffsetAnchorScale,
SpriteBatchNodeOffsetAnchorScale,
SpriteAnimationSplit,
SpriteColorOpacity,
SpriteBatchNodeColorOpacity,
SpriteZOrder,
SpriteBatchNodeZOrder,
SpriteBatchNodeReorderIssue744,
SpriteBatchNodeReorderIssue766,
SpriteBatchNodeReorderIssue767,
Sprite6,
SpriteFlip,
SpriteBatchNodeFlip,
SpriteAliased,
SpriteBatchNodeAliased,
SpriteNewTexture,
SpriteBatchNodeNewTexture,
SpriteHybrid,
SpriteBatchNodeChildren,
SpriteBatchNodeChildrenZ,
SpriteChildrenVisibility,
SpriteChildrenVisibilityIssue665,
SpriteChildrenAnchorPoint,
SpriteBatchNodeChildrenAnchorPoint,
SpriteBatchNodeChildrenScale,
SpriteChildrenChildren,
SpriteBatchNodeChildrenChildren,
SpriteSubclass,
AnimationCacheTest,
SpriteOffsetAnchorSkew,
SpriteBatchNodeOffsetAnchorSkew,
SpriteOffsetAnchorSkewScale,
SpriteBatchNodeOffsetAnchorSkewScale,
SpriteOffsetAnchorFlip,
SpriteBatchNodeOffsetAnchorFlip,
SpriteBatchNodeReorderOneChild,
NodeSort,
SpriteSkewNegativeScaleChildren,
SpriteBatchNodeSkewNegativeScaleChildren,
SpriteDoubleResolution,
SpriteBatchBug1217,
AnimationCacheFile,
TextureColorCacheIssue,
TextureColorCacheIssue2,
TextureRotatedSpriteFrame,
SpriteWithRepeatingTexture,
SpriteBlendFuncTest
];
var nextSpriteTest = function () {
spriteTestIdx++;
spriteTestIdx = spriteTestIdx % arrayOfSpriteTest.length;
if(window.sideIndexBar){
spriteTestIdx = window.sideIndexBar.changeTest(spriteTestIdx, 36);
}
return new arrayOfSpriteTest[spriteTestIdx ]();
};
var previousSpriteTest = function () {
spriteTestIdx--;
if (spriteTestIdx < 0)
spriteTestIdx += arrayOfSpriteTest.length;
if(window.sideIndexBar){
spriteTestIdx = window.sideIndexBar.changeTest(spriteTestIdx, 36);
}
return new arrayOfSpriteTest[spriteTestIdx ]();
};
var restartSpriteTest = function () {
return new arrayOfSpriteTest[spriteTestIdx ]();
};