2015-04-16 18:07:35 +08:00
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Copyright ( c ) 2008 - 2010 Ricardo Quesada
Copyright ( c ) 2011 - 2012 cocos2d - x . org
2017-02-14 14:36:57 +08:00
Copyright ( c ) 2013 - 2017 Chukong Technologies Inc .
2015-04-16 18:07:35 +08:00
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
//
2015-12-24 16:33:46 +08:00
if ( ! cc . sys . isNative && ! ( "opengl" in cc . sys . capabilities && cc . _renderType === cc . game . RENDER _TYPE _WEBGL ) ) {
2015-04-16 18:07:35 +08:00
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
2015-12-24 16:33:46 +08:00
if ( cc . sys . isNative || ( "opengl" in cc . sys . capabilities && cc . _renderType === cc . game . RENDER _TYPE _WEBGL ) ) {
2015-04-16 18:07:35 +08:00
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
//
2015-12-24 16:33:46 +08:00
if ( ! cc . sys . isNative && ! ( "opengl" in cc . sys . capabilities && cc . _renderType === cc . game . RENDER _TYPE _WEBGL ) ) {
2015-04-16 18:07:35 +08:00
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
2015-12-24 16:33:46 +08:00
if ( cc . sys . isNative || ( "opengl" in cc . sys . capabilities && cc . _renderType === cc . game . RENDER _TYPE _WEBGL ) ) {
2015-04-16 18:07:35 +08:00
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)
2017-02-27 11:12:29 +08:00
// Sprites that are contained in that texture can be instantiated as cc.Sprites and then added to the cc.SpriteBatchNode
2015-04-16 18:07:35 +08:00
// 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 ) ;
2015-12-24 16:33:46 +08:00
if ( "opengl" in cc . sys . capabilities && cc . _renderType === cc . game . RENDER _TYPE _WEBGL )
2015-04-16 18:07:35 +08:00
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];
2015-12-24 16:33:46 +08:00
if ( "opengl" in cc . sys . capabilities && cc . _renderType === cc . game . RENDER _TYPE _WEBGL )
2015-04-16 18:07:35 +08:00
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 ( ) ;
2015-06-23 18:54:18 +08:00
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" ] ;
2015-04-16 18:07:35 +08:00
2015-05-25 17:02:26 +08:00
var sourceImg = "Images/dot.png" , destImg = "Images/wood.jpg" ;
2015-04-16 18:07:35 +08:00
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 ) ;
2015-06-23 18:54:18 +08:00
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 ) ;
}
2015-04-16 18:07:35 +08:00
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]);
2015-06-23 18:54:18 +08:00
2015-04-16 18:07:35 +08:00
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 ] ( ) ;
} ;