2012-03-21 13:36:24 +08:00
# include "NodeTest.h"
# include "../testResource.h"
2010-08-26 15:09:02 +08:00
enum
{
2012-04-19 14:35:52 +08:00
kTagSprite1 = 1 ,
kTagSprite2 = 2 ,
kTagSprite3 = 3 ,
kTagSlider ,
2012-03-21 13:36:24 +08:00
} ;
2011-07-08 15:57:46 +08:00
2013-06-20 14:17:10 +08:00
Layer * nextCocosNodeAction ( ) ;
Layer * backCocosNodeAction ( ) ;
Layer * restartCocosNodeAction ( ) ;
2012-03-21 13:36:24 +08:00
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// TestCocosNodeDemo
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
static int sceneIdx = - 1 ;
2012-04-19 14:35:52 +08:00
# define MAX_LAYER 14
2010-08-26 15:09:02 +08:00
2013-06-20 14:17:10 +08:00
Layer * createCocosNodeLayer ( int nIndex )
2010-08-26 15:09:02 +08:00
{
2012-04-19 14:35:52 +08:00
switch ( nIndex )
{
case 0 : return new CameraCenterTest ( ) ;
case 1 : return new Test2 ( ) ;
case 2 : return new Test4 ( ) ;
case 3 : return new Test5 ( ) ;
case 4 : return new Test6 ( ) ;
case 5 : return new StressTest1 ( ) ;
case 6 : return new StressTest2 ( ) ;
case 7 : return new NodeToWorld ( ) ;
case 8 : return new SchedulerTest1 ( ) ;
case 9 : return new CameraOrbitTest ( ) ;
case 10 : return new CameraZoomTest ( ) ;
case 11 : return new ConvertToNode ( ) ;
case 12 : return new NodeOpaqueTest ( ) ;
case 13 : return new NodeNonOpaqueTest ( ) ;
}
return NULL ;
2010-08-26 15:09:02 +08:00
}
2013-06-20 14:17:10 +08:00
Layer * nextCocosNodeAction ( )
2010-08-26 15:09:02 +08:00
{
2012-04-19 14:35:52 +08:00
sceneIdx + + ;
sceneIdx = sceneIdx % MAX_LAYER ;
2010-08-26 15:09:02 +08:00
2013-08-16 16:05:27 +08:00
auto layer = createCocosNodeLayer ( sceneIdx ) ;
2013-07-23 08:25:44 +08:00
layer - > autorelease ( ) ;
2010-08-26 15:09:02 +08:00
2013-07-23 08:25:44 +08:00
return layer ;
2010-08-26 15:09:02 +08:00
}
2013-06-20 14:17:10 +08:00
Layer * backCocosNodeAction ( )
2010-08-26 15:09:02 +08:00
{
2012-04-19 14:35:52 +08:00
sceneIdx - - ;
int total = MAX_LAYER ;
if ( sceneIdx < 0 )
sceneIdx + = total ;
2013-08-16 16:05:27 +08:00
auto layer = createCocosNodeLayer ( sceneIdx ) ;
2013-07-23 08:25:44 +08:00
layer - > autorelease ( ) ;
2010-08-26 15:09:02 +08:00
2013-07-23 08:25:44 +08:00
return layer ;
2010-08-26 15:09:02 +08:00
}
2013-06-20 14:17:10 +08:00
Layer * restartCocosNodeAction ( )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto layer = createCocosNodeLayer ( sceneIdx ) ;
2013-07-23 08:25:44 +08:00
layer - > autorelease ( ) ;
2010-08-26 15:09:02 +08:00
2013-07-23 08:25:44 +08:00
return layer ;
2012-03-21 13:36:24 +08:00
}
TestCocosNodeDemo : : TestCocosNodeDemo ( void )
{
}
TestCocosNodeDemo : : ~ TestCocosNodeDemo ( void )
{
}
2010-08-26 15:09:02 +08:00
std : : string TestCocosNodeDemo : : title ( )
{
2012-04-19 14:35:52 +08:00
return " No title " ;
2010-08-26 15:09:02 +08:00
}
std : : string TestCocosNodeDemo : : subtitle ( )
{
2012-04-19 14:35:52 +08:00
return " " ;
2010-08-26 15:09:02 +08:00
}
void TestCocosNodeDemo : : onEnter ( )
{
2013-06-07 08:12:28 +08:00
BaseTest : : onEnter ( ) ;
2010-08-26 15:09:02 +08:00
}
2013-07-26 06:53:24 +08:00
void TestCocosNodeDemo : : restartCallback ( Object * sender )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto s = new CocosNodeTestScene ( ) ; //CCScene::create();
2012-04-19 14:35:52 +08:00
s - > addChild ( restartCocosNodeAction ( ) ) ;
2010-08-26 15:09:02 +08:00
2013-07-12 06:24:23 +08:00
Director : : getInstance ( ) - > replaceScene ( s ) ;
2010-09-13 17:19:49 +08:00
s - > release ( ) ;
2010-08-26 15:09:02 +08:00
}
2013-07-26 06:53:24 +08:00
void TestCocosNodeDemo : : nextCallback ( Object * sender )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto s = new CocosNodeTestScene ( ) ; //CCScene::create();
2012-04-19 14:35:52 +08:00
s - > addChild ( nextCocosNodeAction ( ) ) ;
2013-07-12 06:24:23 +08:00
Director : : getInstance ( ) - > replaceScene ( s ) ;
2010-09-13 17:19:49 +08:00
s - > release ( ) ;
2010-08-26 15:09:02 +08:00
}
2013-07-26 06:53:24 +08:00
void TestCocosNodeDemo : : backCallback ( Object * sender )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto s = new CocosNodeTestScene ( ) ; //CCScene::create();
2012-04-19 14:35:52 +08:00
s - > addChild ( backCocosNodeAction ( ) ) ;
2013-07-12 06:24:23 +08:00
Director : : getInstance ( ) - > replaceScene ( s ) ;
2010-09-13 17:19:49 +08:00
s - > release ( ) ;
2010-08-26 15:09:02 +08:00
}
2012-03-21 13:36:24 +08:00
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// Test2
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
void Test2 : : onEnter ( )
{
2012-04-19 14:35:52 +08:00
TestCocosNodeDemo : : onEnter ( ) ;
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto sp1 = Sprite : : create ( s_pathSister1 ) ;
auto sp2 = Sprite : : create ( s_pathSister2 ) ;
auto sp3 = Sprite : : create ( s_pathSister1 ) ;
auto sp4 = Sprite : : create ( s_pathSister2 ) ;
2012-04-19 14:35:52 +08:00
2013-07-12 14:11:55 +08:00
sp1 - > setPosition ( Point ( 100 , s . height / 2 ) ) ;
sp2 - > setPosition ( Point ( 380 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
addChild ( sp1 ) ;
addChild ( sp2 ) ;
sp3 - > setScale ( 0.25f ) ;
sp4 - > setScale ( 0.25f ) ;
sp1 - > addChild ( sp3 ) ;
sp2 - > addChild ( sp4 ) ;
2013-08-16 16:05:27 +08:00
auto a1 = RotateBy : : create ( 2 , 360 ) ;
auto a2 = ScaleBy : : create ( 2 , 2 ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto action1 = RepeatForever : : create ( Sequence : : create ( a1 , a2 , a2 - > reverse ( ) , NULL ) ) ;
auto action2 = RepeatForever : : create ( Sequence : : create (
2013-06-19 07:12:28 +08:00
a1 - > clone ( ) ,
a2 - > clone ( ) ,
a2 - > reverse ( ) ,
NULL )
) ;
2012-04-19 14:35:52 +08:00
2013-07-12 14:11:55 +08:00
sp2 - > setAnchorPoint ( Point ( 0 , 0 ) ) ;
2012-04-19 14:35:52 +08:00
sp1 - > runAction ( action1 ) ;
sp2 - > runAction ( action2 ) ;
2010-08-26 15:09:02 +08:00
}
std : : string Test2 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " anchorPoint and children " ;
2010-08-26 15:09:02 +08:00
}
2012-03-21 13:36:24 +08:00
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// Test4
//
//------------------------------------------------------------------
2012-04-19 14:35:52 +08:00
# define SID_DELAY2 1
# define SID_DELAY4 2
2010-08-26 15:09:02 +08:00
2012-03-21 13:36:24 +08:00
Test4 : : Test4 ( )
{
2013-08-16 16:05:27 +08:00
auto sp1 = Sprite : : create ( s_pathSister1 ) ;
auto sp2 = Sprite : : create ( s_pathSister2 ) ;
2012-04-19 14:35:52 +08:00
2013-07-12 14:11:55 +08:00
sp1 - > setPosition ( Point ( 100 , 160 ) ) ;
sp2 - > setPosition ( Point ( 380 , 160 ) ) ;
2012-04-19 14:35:52 +08:00
addChild ( sp1 , 0 , 2 ) ;
addChild ( sp2 , 0 , 3 ) ;
schedule ( schedule_selector ( Test4 : : delay2 ) , 2.0f ) ;
schedule ( schedule_selector ( Test4 : : delay4 ) , 4.0f ) ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
2012-06-08 13:55:28 +08:00
void Test4 : : delay2 ( float dt )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto node = static_cast < Sprite * > ( getChildByTag ( 2 ) ) ;
auto action1 = RotateBy : : create ( 1 , 360 ) ;
2012-04-19 14:35:52 +08:00
node - > runAction ( action1 ) ;
2010-08-26 15:09:02 +08:00
}
2012-06-08 13:55:28 +08:00
void Test4 : : delay4 ( float dt )
2010-08-26 15:09:02 +08:00
{
2012-04-19 14:35:52 +08:00
unschedule ( schedule_selector ( Test4 : : delay4 ) ) ;
removeChildByTag ( 3 , false ) ;
2010-08-26 15:09:02 +08:00
}
std : : string Test4 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " tags " ;
2010-08-26 15:09:02 +08:00
}
2012-03-21 13:36:24 +08:00
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// Test5
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
Test5 : : Test5 ( )
{
2013-08-16 16:05:27 +08:00
auto sp1 = Sprite : : create ( s_pathSister1 ) ;
auto sp2 = Sprite : : create ( s_pathSister2 ) ;
2012-04-19 14:35:52 +08:00
2013-07-12 14:11:55 +08:00
sp1 - > setPosition ( Point ( 100 , 160 ) ) ;
sp2 - > setPosition ( Point ( 380 , 160 ) ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto rot = RotateBy : : create ( 2 , 360 ) ;
auto rot_back = rot - > reverse ( ) ;
auto forever = RepeatForever : : create ( Sequence : : create ( rot , rot_back , NULL ) ) ;
auto forever2 = forever - > clone ( ) ;
2012-04-19 14:35:52 +08:00
forever - > setTag ( 101 ) ;
forever2 - > setTag ( 102 ) ;
addChild ( sp1 , 0 , kTagSprite1 ) ;
addChild ( sp2 , 0 , kTagSprite2 ) ;
sp1 - > runAction ( forever ) ;
sp2 - > runAction ( forever2 ) ;
schedule ( schedule_selector ( Test5 : : addAndRemove ) , 2.0f ) ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
2012-06-08 13:55:28 +08:00
void Test5 : : addAndRemove ( float dt )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto sp1 = getChildByTag ( kTagSprite1 ) ;
auto sp2 = getChildByTag ( kTagSprite2 ) ;
2010-08-26 15:09:02 +08:00
2012-04-19 14:35:52 +08:00
sp1 - > retain ( ) ;
sp2 - > retain ( ) ;
removeChild ( sp1 , false ) ;
removeChild ( sp2 , true ) ;
addChild ( sp1 , 0 , kTagSprite1 ) ;
addChild ( sp2 , 0 , kTagSprite2 ) ;
sp1 - > release ( ) ;
sp2 - > release ( ) ;
2010-08-26 15:09:02 +08:00
}
std : : string Test5 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " remove and cleanup " ;
2010-08-26 15:09:02 +08:00
}
2012-03-21 13:36:24 +08:00
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// Test6
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
Test6 : : Test6 ( )
{
2013-08-16 16:05:27 +08:00
auto sp1 = Sprite : : create ( s_pathSister1 ) ;
auto sp11 = Sprite : : create ( s_pathSister1 ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto sp2 = Sprite : : create ( s_pathSister2 ) ;
auto sp21 = Sprite : : create ( s_pathSister2 ) ;
2012-04-19 14:35:52 +08:00
2013-07-12 14:11:55 +08:00
sp1 - > setPosition ( Point ( 100 , 160 ) ) ;
sp2 - > setPosition ( Point ( 380 , 160 ) ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto rot = RotateBy : : create ( 2 , 360 ) ;
auto rot_back = rot - > reverse ( ) ;
auto forever1 = RepeatForever : : create ( Sequence : : create ( rot , rot_back , NULL ) ) ;
auto forever11 = forever1 - > clone ( ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto forever2 = forever1 - > clone ( ) ;
auto forever21 = forever1 - > clone ( ) ;
2012-04-19 14:35:52 +08:00
addChild ( sp1 , 0 , kTagSprite1 ) ;
sp1 - > addChild ( sp11 ) ;
addChild ( sp2 , 0 , kTagSprite2 ) ;
sp2 - > addChild ( sp21 ) ;
sp1 - > runAction ( forever1 ) ;
sp11 - > runAction ( forever11 ) ;
sp2 - > runAction ( forever2 ) ;
sp21 - > runAction ( forever21 ) ;
schedule ( schedule_selector ( Test6 : : addAndRemove ) , 2.0f ) ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
2012-06-08 13:55:28 +08:00
void Test6 : : addAndRemove ( float dt )
2010-08-26 15:09:02 +08:00
{
2013-08-16 16:05:27 +08:00
auto sp1 = getChildByTag ( kTagSprite1 ) ;
auto sp2 = getChildByTag ( kTagSprite2 ) ;
2010-08-26 15:09:02 +08:00
2012-04-19 14:35:52 +08:00
sp1 - > retain ( ) ;
sp2 - > retain ( ) ;
removeChild ( sp1 , false ) ;
removeChild ( sp2 , true ) ;
addChild ( sp1 , 0 , kTagSprite1 ) ;
addChild ( sp2 , 0 , kTagSprite2 ) ;
sp1 - > release ( ) ;
sp2 - > release ( ) ;
2010-08-26 15:09:02 +08:00
}
std : : string Test6 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " remove/cleanup with children " ;
2010-08-26 15:09:02 +08:00
}
//------------------------------------------------------------------
//
// StressTest1
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
StressTest1 : : StressTest1 ( )
{
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2010-08-26 15:09:02 +08:00
2013-08-16 16:05:27 +08:00
auto sp1 = Sprite : : create ( s_pathSister1 ) ;
2012-04-19 14:35:52 +08:00
addChild ( sp1 , 0 , kTagSprite1 ) ;
2013-07-12 14:11:55 +08:00
sp1 - > setPosition ( Point ( s . width / 2 , s . height / 2 ) ) ;
2010-08-26 15:09:02 +08:00
2012-04-19 14:35:52 +08:00
schedule ( schedule_selector ( StressTest1 : : shouldNotCrash ) , 1.0f ) ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
2012-06-08 13:55:28 +08:00
void StressTest1 : : shouldNotCrash ( float dt )
2010-08-26 15:09:02 +08:00
{
2012-04-19 14:35:52 +08:00
unschedule ( schedule_selector ( StressTest1 : : shouldNotCrash ) ) ;
2010-08-26 15:09:02 +08:00
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2010-08-26 15:09:02 +08:00
2012-04-19 14:35:52 +08:00
// if the node has timers, it crashes
2013-08-16 16:05:27 +08:00
auto explosion = ParticleSun : : create ( ) ;
2013-07-12 06:24:23 +08:00
explosion - > setTexture ( TextureCache : : getInstance ( ) - > addImage ( " Images/fire.png " ) ) ;
2012-04-19 14:35:52 +08:00
// if it doesn't, it works Ok.
2013-08-16 16:05:27 +08:00
// auto explosion = [Sprite create:@"grossinis_sister2.png");
2010-08-26 15:09:02 +08:00
2013-07-12 14:11:55 +08:00
explosion - > setPosition ( Point ( s . width / 2 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
2013-06-20 14:17:10 +08:00
runAction ( Sequence : : create (
RotateBy : : create ( 2 , 360 ) ,
2013-07-16 03:43:22 +08:00
CallFuncN : : create ( CC_CALLBACK_1 ( StressTest1 : : removeMe , this ) ) ,
2012-04-19 14:35:52 +08:00
NULL ) ) ;
addChild ( explosion ) ;
2010-08-26 15:09:02 +08:00
}
// remove
2013-06-20 14:17:10 +08:00
void StressTest1 : : removeMe ( Node * node )
2012-04-19 14:35:52 +08:00
{
2013-02-28 16:41:39 +08:00
getParent ( ) - > removeChild ( node , true ) ;
2012-04-19 14:35:52 +08:00
nextCallback ( this ) ;
2010-08-26 15:09:02 +08:00
}
std : : string StressTest1 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " stress test #1: no crashes " ;
2010-08-26 15:09:02 +08:00
}
//------------------------------------------------------------------
//
// StressTest2
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
StressTest2 : : StressTest2 ( )
{
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto sublayer = Layer : : create ( ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto sp1 = Sprite : : create ( s_pathSister1 ) ;
2013-07-12 14:11:55 +08:00
sp1 - > setPosition ( Point ( 80 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto move = MoveBy : : create ( 3 , Point ( 350 , 0 ) ) ;
auto move_ease_inout3 = EaseInOut : : create ( move - > clone ( ) , 2.0f ) ;
auto move_ease_inout_back3 = move_ease_inout3 - > reverse ( ) ;
auto seq3 = Sequence : : create ( move_ease_inout3 , move_ease_inout_back3 , NULL ) ;
2013-06-20 14:17:10 +08:00
sp1 - > runAction ( RepeatForever : : create ( seq3 ) ) ;
2012-04-19 14:35:52 +08:00
sublayer - > addChild ( sp1 , 1 ) ;
2013-08-16 16:05:27 +08:00
auto fire = ParticleFire : : create ( ) ;
2013-07-12 06:24:23 +08:00
fire - > setTexture ( TextureCache : : getInstance ( ) - > addImage ( " Images/fire.png " ) ) ;
2013-07-12 14:11:55 +08:00
fire - > setPosition ( Point ( 80 , s . height / 2 - 50 ) ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto copy_seq3 = seq3 - > clone ( ) ;
2012-04-19 14:35:52 +08:00
2013-06-20 14:17:10 +08:00
fire - > runAction ( RepeatForever : : create ( copy_seq3 ) ) ;
2012-04-19 14:35:52 +08:00
sublayer - > addChild ( fire , 2 ) ;
schedule ( schedule_selector ( StressTest2 : : shouldNotLeak ) , 6.0f ) ;
addChild ( sublayer , 0 , kTagSprite1 ) ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
2012-06-08 13:55:28 +08:00
void StressTest2 : : shouldNotLeak ( float dt )
2010-08-26 15:09:02 +08:00
{
2012-04-19 14:35:52 +08:00
unschedule ( schedule_selector ( StressTest2 : : shouldNotLeak ) ) ;
2013-08-16 16:05:27 +08:00
auto sublayer = static_cast < Layer * > ( getChildByTag ( kTagSprite1 ) ) ;
2012-04-19 14:35:52 +08:00
sublayer - > removeAllChildrenWithCleanup ( true ) ;
2010-08-26 15:09:02 +08:00
}
std : : string StressTest2 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " stress test #2: no leaks " ;
2010-08-26 15:09:02 +08:00
}
//------------------------------------------------------------------
//
// SchedulerTest1
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
SchedulerTest1 : : SchedulerTest1 ( )
{
2013-08-16 16:05:27 +08:00
auto layer = Layer : : create ( ) ;
2013-03-03 10:32:09 +08:00
//CCLOG("retain count after init is %d", layer->retainCount()); // 1
2012-04-19 14:35:52 +08:00
addChild ( layer , 0 ) ;
2013-03-03 10:32:09 +08:00
//CCLOG("retain count after addChild is %d", layer->retainCount()); // 2
2012-04-19 14:35:52 +08:00
layer - > schedule ( schedule_selector ( SchedulerTest1 : : doSomething ) ) ;
2013-06-20 14:17:10 +08:00
//CCLOG("retain count after schedule is %d", layer->retainCount()); // 3 : (object-c viersion), but win32 version is still 2, because Timer class don't save target.
2012-04-19 14:35:52 +08:00
layer - > unschedule ( schedule_selector ( SchedulerTest1 : : doSomething ) ) ;
2013-03-03 10:32:09 +08:00
//CCLOG("retain count after unschedule is %d", layer->retainCount()); // STILL 3! (win32 is '2')
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
2012-06-08 13:55:28 +08:00
void SchedulerTest1 : : doSomething ( float dt )
2010-08-26 15:09:02 +08:00
{
}
std : : string SchedulerTest1 : : title ( )
{
2012-04-19 14:35:52 +08:00
return " cocosnode scheduler test #1 " ;
2010-08-26 15:09:02 +08:00
}
//------------------------------------------------------------------
//
// NodeToWorld
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
NodeToWorld : : NodeToWorld ( )
{
2012-04-19 14:35:52 +08:00
//
// This code tests that nodeToParent works OK:
// - It tests different anchor Points
// - It tests different children anchor points
2013-08-16 16:05:27 +08:00
auto back = Sprite : : create ( s_back3 ) ;
2012-04-19 14:35:52 +08:00
addChild ( back , - 10 ) ;
2013-07-12 14:11:55 +08:00
back - > setAnchorPoint ( Point ( 0 , 0 ) ) ;
2013-08-16 16:05:27 +08:00
auto backSize = back - > getContentSize ( ) ;
2012-04-19 14:35:52 +08:00
2013-08-16 16:05:27 +08:00
auto item = MenuItemImage : : create ( s_PlayNormal , s_PlaySelect ) ;
auto menu = Menu : : create ( item , NULL ) ;
2012-04-19 14:35:52 +08:00
menu - > alignItemsVertically ( ) ;
2013-07-12 14:11:55 +08:00
menu - > setPosition ( Point ( backSize . width / 2 , backSize . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
back - > addChild ( menu ) ;
2013-08-16 16:05:27 +08:00
auto rot = RotateBy : : create ( 5 , 360 ) ;
auto fe = RepeatForever : : create ( rot ) ;
2012-04-19 14:35:52 +08:00
item - > runAction ( fe ) ;
2013-08-16 16:05:27 +08:00
auto move = MoveBy : : create ( 3 , Point ( 200 , 0 ) ) ;
auto move_back = move - > reverse ( ) ;
auto seq = Sequence : : create ( move , move_back , NULL ) ;
auto fe2 = RepeatForever : : create ( seq ) ;
2012-04-19 14:35:52 +08:00
back - > runAction ( fe2 ) ;
2012-03-21 13:36:24 +08:00
}
std : : string NodeToWorld : : title ( )
{
2012-04-19 14:35:52 +08:00
return " nodeToParent transform " ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// CameraOrbitTest
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
void CameraOrbitTest : : onEnter ( )
{
2012-04-19 14:35:52 +08:00
TestCocosNodeDemo : : onEnter ( ) ;
2013-07-26 04:36:19 +08:00
Director : : getInstance ( ) - > setProjection ( Director : : Projection : : _3D ) ;
2012-03-21 13:36:24 +08:00
}
void CameraOrbitTest : : onExit ( )
{
2013-07-26 04:36:19 +08:00
Director : : getInstance ( ) - > setProjection ( Director : : Projection : : _2D ) ;
2012-04-19 14:35:52 +08:00
TestCocosNodeDemo : : onExit ( ) ;
2012-03-21 13:36:24 +08:00
}
CameraOrbitTest : : CameraOrbitTest ( )
{
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2012-03-21 13:36:24 +08:00
2013-08-16 16:05:27 +08:00
auto p = Sprite : : create ( s_back3 ) ;
2012-04-19 14:35:52 +08:00
addChild ( p , 0 ) ;
2013-07-12 14:11:55 +08:00
p - > setPosition ( Point ( s . width / 2 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
p - > setOpacity ( 128 ) ;
2013-06-20 14:17:10 +08:00
Sprite * sprite ;
OrbitCamera * orbit ;
Size ss ;
2012-04-19 14:35:52 +08:00
// LEFT
2012-03-21 13:36:24 +08:00
s = p - > getContentSize ( ) ;
2013-07-24 06:20:22 +08:00
sprite = Sprite : : create ( s_pathGrossini ) ;
2012-04-19 14:35:52 +08:00
sprite - > setScale ( 0.5f ) ;
p - > addChild ( sprite , 0 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * 1 , s . height / 2 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 2 , 1 , 0 , 0 , 360 , 0 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
// CENTER
2013-07-24 06:20:22 +08:00
sprite = Sprite : : create ( s_pathGrossini ) ;
2012-04-19 14:35:52 +08:00
sprite - > setScale ( 1.0f ) ;
p - > addChild ( sprite , 0 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * 2 , s . height / 2 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 2 , 1 , 0 , 0 , 360 , 45 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
// RIGHT
2013-07-24 06:20:22 +08:00
sprite = Sprite : : create ( s_pathGrossini ) ;
2012-04-19 14:35:52 +08:00
sprite - > setScale ( 2.0f ) ;
p - > addChild ( sprite , 0 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * 3 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
ss = sprite - > getContentSize ( ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 2 , 1 , 0 , 0 , 360 , 90 , - 45 ) ,
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
// PARENT
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 10 , 1 , 0 , 0 , 360 , 0 , 90 ) ;
p - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
setScale ( 1 ) ;
2012-03-21 13:36:24 +08:00
}
std : : string CameraOrbitTest : : title ( )
{
2012-04-19 14:35:52 +08:00
return " Camera Orbit test " ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// CameraZoomTest
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
void CameraZoomTest : : onEnter ( )
{
2012-04-19 14:35:52 +08:00
TestCocosNodeDemo : : onEnter ( ) ;
2013-07-26 04:36:19 +08:00
Director : : getInstance ( ) - > setProjection ( Director : : Projection : : _3D ) ;
2012-03-21 13:36:24 +08:00
}
void CameraZoomTest : : onExit ( )
{
2013-07-26 04:36:19 +08:00
Director : : getInstance ( ) - > setProjection ( Director : : Projection : : _2D ) ;
2012-04-19 14:35:52 +08:00
TestCocosNodeDemo : : onExit ( ) ;
2012-03-21 13:36:24 +08:00
}
CameraZoomTest : : CameraZoomTest ( )
{
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2012-04-19 14:35:52 +08:00
2013-06-20 14:17:10 +08:00
Sprite * sprite ;
Camera * cam ;
2012-04-19 14:35:52 +08:00
// LEFT
2013-07-24 06:20:22 +08:00
sprite = Sprite : : create ( s_pathGrossini ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * 1 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
cam = sprite - > getCamera ( ) ;
2013-09-16 20:38:03 +08:00
cam - > setEye ( 0 , 0 , 415 / 2 ) ;
cam - > setCenter ( 0 , 0 , 0 ) ;
2012-04-19 14:35:52 +08:00
// CENTER
2013-07-24 06:20:22 +08:00
sprite = Sprite : : create ( s_pathGrossini ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 , 40 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * 2 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
// RIGHT
2013-07-24 06:20:22 +08:00
sprite = Sprite : : create ( s_pathGrossini ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 , 20 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * 3 , s . height / 2 ) ) ;
2012-04-19 14:35:52 +08:00
2013-06-15 14:03:30 +08:00
_z = 0 ;
2012-04-19 14:35:52 +08:00
scheduleUpdate ( ) ;
2012-03-21 13:36:24 +08:00
}
2012-06-08 13:55:28 +08:00
void CameraZoomTest : : update ( float dt )
2012-03-21 13:36:24 +08:00
{
2013-06-20 14:17:10 +08:00
Node * sprite ;
Camera * cam ;
2012-04-19 14:35:52 +08:00
2013-06-15 14:03:30 +08:00
_z + = dt * 100 ;
2012-04-19 14:35:52 +08:00
sprite = getChildByTag ( 20 ) ;
cam = sprite - > getCamera ( ) ;
2013-09-16 20:38:03 +08:00
cam - > setEye ( 0 , 0 , _z ) ;
2012-04-19 14:35:52 +08:00
sprite = getChildByTag ( 40 ) ;
cam = sprite - > getCamera ( ) ;
2013-09-16 20:38:03 +08:00
cam - > setEye ( 0 , 0 , - _z ) ;
2012-03-21 13:36:24 +08:00
}
std : : string CameraZoomTest : : title ( )
{
2012-04-19 14:35:52 +08:00
return " Camera Zoom test " ;
2012-03-21 13:36:24 +08:00
}
2010-08-26 15:09:02 +08:00
//------------------------------------------------------------------
//
// CameraCenterTest
//
//------------------------------------------------------------------
2012-03-21 13:36:24 +08:00
CameraCenterTest : : CameraCenterTest ( )
{
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2012-04-19 14:35:52 +08:00
2013-06-20 14:17:10 +08:00
Sprite * sprite ;
OrbitCamera * orbit ;
2012-04-19 14:35:52 +08:00
// LEFT-TOP
2013-06-20 14:17:10 +08:00
sprite = Sprite : : create ( " Images/white-512x512.png " ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 5 * 1 , s . height / 5 * 1 ) ) ;
2013-07-08 18:11:32 +08:00
sprite - > setColor ( Color3B : : RED ) ;
2013-07-12 14:30:26 +08:00
sprite - > setTextureRect ( Rect ( 0 , 0 , 120 , 50 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 10 , 1 , 0 , 0 , 360 , 0 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2013-07-12 18:04:32 +08:00
// [sprite setAnchorPoint: Point(0,1));
2012-04-19 14:35:52 +08:00
// LEFT-BOTTOM
2013-06-20 14:17:10 +08:00
sprite = Sprite : : create ( " Images/white-512x512.png " ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 , 40 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 5 * 1 , s . height / 5 * 4 ) ) ;
2013-07-08 18:11:32 +08:00
sprite - > setColor ( Color3B : : BLUE ) ;
2013-07-12 14:30:26 +08:00
sprite - > setTextureRect ( Rect ( 0 , 0 , 120 , 50 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 10 , 1 , 0 , 0 , 360 , 0 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
// RIGHT-TOP
2013-06-20 14:17:10 +08:00
sprite = Sprite : : create ( " Images/white-512x512.png " ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 5 * 4 , s . height / 5 * 1 ) ) ;
2013-07-08 18:11:32 +08:00
sprite - > setColor ( Color3B : : YELLOW ) ;
2013-07-12 14:30:26 +08:00
sprite - > setTextureRect ( Rect ( 0 , 0 , 120 , 50 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 10 , 1 , 0 , 0 , 360 , 0 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
// RIGHT-BOTTOM
2013-06-20 14:17:10 +08:00
sprite = Sprite : : create ( " Images/white-512x512.png " ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 , 40 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 5 * 4 , s . height / 5 * 4 ) ) ;
2013-07-08 18:11:32 +08:00
sprite - > setColor ( Color3B : : GREEN ) ;
2013-07-12 14:30:26 +08:00
sprite - > setTextureRect ( Rect ( 0 , 0 , 120 , 50 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 10 , 1 , 0 , 0 , 360 , 0 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-04-19 14:35:52 +08:00
// CENTER
2013-06-20 14:17:10 +08:00
sprite = Sprite : : create ( " Images/white-512x512.png " ) ;
2012-04-19 14:35:52 +08:00
addChild ( sprite , 0 , 40 ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 2 , s . height / 2 ) ) ;
2013-07-08 18:11:32 +08:00
sprite - > setColor ( Color3B : : WHITE ) ;
2013-07-12 14:30:26 +08:00
sprite - > setTextureRect ( Rect ( 0 , 0 , 120 , 50 ) ) ;
2013-06-20 14:17:10 +08:00
orbit = OrbitCamera : : create ( 10 , 1 , 0 , 0 , 360 , 0 , 0 ) ;
sprite - > runAction ( RepeatForever : : create ( orbit ) ) ;
2012-03-21 13:36:24 +08:00
}
std : : string CameraCenterTest : : title ( )
{
2012-04-19 14:35:52 +08:00
return " Camera Center test " ;
2012-03-21 13:36:24 +08:00
}
std : : string CameraCenterTest : : subtitle ( )
{
2012-04-19 14:35:52 +08:00
return " Sprites should rotate at the same speed " ;
2012-03-21 13:36:24 +08:00
}
2011-02-23 16:47:25 +08:00
//------------------------------------------------------------------
//
// ConvertToNode
//
2012-03-21 13:36:24 +08:00
//------------------------------------------------------------------
ConvertToNode : : ConvertToNode ( )
{
2013-10-23 16:14:03 +08:00
auto listener = EventListenerTouchAllAtOnce : : create ( ) ;
listener - > onTouchesEnded = CC_CALLBACK_2 ( ConvertToNode : : onTouchesEnded , this ) ;
EventDispatcher : : getInstance ( ) - > addEventListenerWithSceneGraphPriority ( listener , this ) ;
2013-08-16 16:05:27 +08:00
auto s = Director : : getInstance ( ) - > getWinSize ( ) ;
2012-03-21 13:36:24 +08:00
2013-08-16 16:05:27 +08:00
auto rotate = RotateBy : : create ( 10 , 360 ) ;
auto action = RepeatForever : : create ( rotate ) ;
2012-03-21 13:36:24 +08:00
for ( int i = 0 ; i < 3 ; i + + )
{
2013-08-16 16:05:27 +08:00
auto sprite = Sprite : : create ( " Images/grossini.png " ) ;
2013-07-12 14:11:55 +08:00
sprite - > setPosition ( Point ( s . width / 4 * ( i + 1 ) , s . height / 2 ) ) ;
2012-03-21 13:36:24 +08:00
2013-08-16 16:05:27 +08:00
auto point = Sprite : : create ( " Images/r1.png " ) ;
2012-03-21 13:36:24 +08:00
point - > setScale ( 0.25f ) ;
point - > setPosition ( sprite - > getPosition ( ) ) ;
addChild ( point , 10 , 100 + i ) ;
switch ( i )
{
case 0 :
2013-07-12 14:47:36 +08:00
sprite - > setAnchorPoint ( Point : : ZERO ) ;
2012-03-21 13:36:24 +08:00
break ;
case 1 :
2013-07-12 14:11:55 +08:00
sprite - > setAnchorPoint ( Point ( 0.5f , 0.5f ) ) ;
2012-03-21 13:36:24 +08:00
break ;
case 2 :
2013-07-12 14:11:55 +08:00
sprite - > setAnchorPoint ( Point ( 1 , 1 ) ) ;
2012-03-21 13:36:24 +08:00
break ;
}
point - > setPosition ( sprite - > getPosition ( ) ) ;
2013-07-09 05:38:14 +08:00
sprite - > runAction ( action - > clone ( ) ) ;
2012-03-21 13:36:24 +08:00
addChild ( sprite , i ) ;
}
}
2013-09-03 18:22:03 +08:00
void ConvertToNode : : onTouchesEnded ( const std : : vector < Touch * > & touches , Event * event )
2012-03-21 13:36:24 +08:00
{
2013-09-03 18:22:03 +08:00
for ( auto & touch : touches )
2012-03-21 13:36:24 +08:00
{
2013-08-16 16:05:27 +08:00
auto location = touch - > getLocation ( ) ;
2012-03-21 13:36:24 +08:00
for ( int i = 0 ; i < 3 ; i + + )
{
2013-08-16 16:05:27 +08:00
auto node = getChildByTag ( 100 + i ) ;
2013-06-20 14:17:10 +08:00
Point p1 , p2 ;
2012-03-21 13:36:24 +08:00
p1 = node - > convertToNodeSpaceAR ( location ) ;
p2 = node - > convertToNodeSpace ( location ) ;
CCLOG ( " AR: x=%.2f, y=%.2f -- Not AR: x=%.2f, y=%.2f " , p1 . x , p1 . y , p2 . x , p2 . y ) ;
}
2012-04-19 14:35:52 +08:00
}
2012-03-21 13:36:24 +08:00
}
std : : string ConvertToNode : : title ( )
{
return " Convert To Node Space " ;
}
std : : string ConvertToNode : : subtitle ( )
{
return " testing convertToNodeSpace / AR. Touch and see console " ;
}
/// NodeOpaqueTest
NodeOpaqueTest : : NodeOpaqueTest ( )
{
2013-06-20 14:17:10 +08:00
Sprite * background = NULL ;
2012-03-21 13:36:24 +08:00
2012-04-19 14:35:52 +08:00
for ( int i = 0 ; i < 50 ; i + + )
{
2013-06-20 14:17:10 +08:00
background = Sprite : : create ( " Images/background1.png " ) ;
2013-07-26 04:36:19 +08:00
background - > setBlendFunc ( BlendFunc : : ALPHA_PREMULTIPLIED ) ;
2013-07-12 14:47:36 +08:00
background - > setAnchorPoint ( Point : : ZERO ) ;
2012-04-19 14:35:52 +08:00
addChild ( background ) ;
}
2012-03-21 13:36:24 +08:00
}
std : : string NodeOpaqueTest : : title ( )
{
2012-04-19 14:35:52 +08:00
return " Node Opaque Test " ;
2012-03-21 13:36:24 +08:00
}
std : : string NodeOpaqueTest : : subtitle ( )
{
2012-04-19 14:35:52 +08:00
return " Node rendered with GL_BLEND disabled " ;
2012-03-21 13:36:24 +08:00
}
/// NodeNonOpaqueTest
NodeNonOpaqueTest : : NodeNonOpaqueTest ( )
{
2013-06-20 14:17:10 +08:00
Sprite * background = NULL ;
2012-03-21 13:36:24 +08:00
2012-04-19 14:35:52 +08:00
for ( int i = 0 ; i < 50 ; i + + )
{
2013-06-20 14:17:10 +08:00
background = Sprite : : create ( " Images/background1.jpg " ) ;
2013-07-26 04:36:19 +08:00
background - > setBlendFunc ( BlendFunc : : DISABLE ) ;
2013-07-12 14:47:36 +08:00
background - > setAnchorPoint ( Point : : ZERO ) ;
2012-04-19 14:35:52 +08:00
addChild ( background ) ;
}
2012-03-21 13:36:24 +08:00
}
std : : string NodeNonOpaqueTest : : title ( )
{
2012-04-19 14:35:52 +08:00
return " Node Non Opaque Test " ;
2012-03-21 13:36:24 +08:00
}
std : : string NodeNonOpaqueTest : : subtitle ( )
{
2012-04-19 14:35:52 +08:00
return " Node rendered with GL_BLEND enabled " ;
2012-03-21 13:36:24 +08:00
}
void CocosNodeTestScene : : runThisTest ( )
{
2013-08-16 16:05:27 +08:00
auto layer = nextCocosNodeAction ( ) ;
2013-07-23 08:25:44 +08:00
addChild ( layer ) ;
2012-03-21 13:36:24 +08:00
2013-07-12 06:24:23 +08:00
Director : : getInstance ( ) - > replaceScene ( this ) ;
2012-03-21 13:36:24 +08:00
}