28#include "../testResource.h"
30#include "ui/CocosGUI.h"
32#include "renderer/CCRenderer.h"
33#include "renderer/CCCustomCommand.h"
34#include "renderer/CCGroupCommand.h"
37using namespace cocos2d::ui;
39ActionsTests::ActionsTests()
102 return "ActionsTest";
139 auto s = Director::getInstance()->getWinSize();
141 if( numberOfSprites == 0 )
147 else if ( numberOfSprites == 1 )
151 _grossini->setPosition(s.width/2, s.height/2);
153 else if( numberOfSprites == 2 )
155 _kathia->setPosition(s.width/3, s.height/2);
156 _tamara->setPosition(2*s.width/3, s.height/2);
159 else if( numberOfSprites == 3 )
161 _grossini->setPosition(s.width/2, s.height/2);
162 _tamara->setPosition(s.width/4, s.height/2);
163 _kathia->setPosition(3 * s.width/4, s.height/2);
169 auto s = Director::getInstance()->getWinSize();
171 if( numberOfSprites == 1 )
177 else if( numberOfSprites == 2 )
179 _kathia->setPosition(60, s.height/3);
180 _tamara->setPosition(60, 2*s.height/3);
183 else if( numberOfSprites == 3 )
186 _tamara->setPosition(60, 2*s.height/3);
187 _kathia->setPosition(60, s.height/3);
202 auto s = Director::getInstance()->getWinSize();
204 auto actionTo = MoveTo::create(2, Vec2(s.width-40, s.height-40));
205 auto actionBy = MoveBy::create(2, Vec2(80.0f,80.0f));
206 auto actionByBack = actionBy->reverse();
209 _grossini->runAction( Sequence::create(actionBy, actionByBack,
nullptr));
210 _kathia->runAction(MoveTo::create(1, Vec2(40.0f,40.0f)));
215 return "MoveTo / MoveBy";
229 auto s = Director::getInstance()->getWinSize();
231 _tamara->setPosition3D(Vec3(s.width-40, s.height-40, 0.0f));
232 _kathia->setPosition3D(Vec3(40.0f, 40.0f, 0.0f));
234 auto actionTo = MoveTo::create(2, Vec3(s.width-40, s.height-40, -100.0f));
235 auto actionBy = MoveBy::create(2, Vec3(80.0f, 80.0f, -100.0f));
236 auto actionByBack = actionBy->reverse();
239 _grossini->runAction(Sequence::create(actionBy, actionByBack,
nullptr));
240 _kathia->runAction(MoveTo::create(1, Vec3(40.0f, 40.0f, -100.0f)));
245 return "MoveTo / MoveBy 3D";
259 auto actionTo = ScaleTo::create(2.0f, 0.5f);
260 auto actionBy = ScaleBy::create(2.0f, 1.0f, 10.0f);
261 auto actionBy2 = ScaleBy::create(2.0f, 5.0f, 1.0f);
264 _tamara->runAction( Sequence::create(actionBy, actionBy->reverse(),
nullptr));
265 _kathia->runAction( Sequence::create(actionBy2, actionBy2->reverse(),
nullptr));
270 return "ScaleTo / ScaleBy";
284 auto actionTo = SkewTo::create(2, 37.2f, -37.2f);
285 auto actionToBack = SkewTo::create(2, 0, 0);
286 auto actionBy = SkewBy::create(2, 0.0f, -90.0f);
287 auto actionBy2 = SkewBy::create(2, 45.0f, 45.0f);
288 auto actionByBack = actionBy->reverse();
290 _tamara->runAction(Sequence::create(actionTo, actionToBack,
nullptr));
291 _grossini->runAction(Sequence::create(actionBy, actionByBack,
nullptr));
293 _kathia->runAction(Sequence::create(actionBy2, actionBy2->reverse(),
nullptr));
298 return "SkewTo / SkewBy";
308 auto actionTo = RotateTo::create(2, 180, 180);
309 auto actionToBack = RotateTo::create(2, 0, 0);
310 auto actionBy = RotateBy::create(2, 0.0f, 360);
311 auto actionByBack = actionBy->reverse();
313 auto actionBy2 = RotateBy::create(2, 360, 0);
314 auto actionBy2Back = actionBy2->reverse();
316 _tamara->runAction( Sequence::create(actionBy, actionByBack,
nullptr) );
317 _grossini->runAction( Sequence::create(actionTo, actionToBack,
nullptr) );
318 _kathia->runAction( Sequence::create(actionBy2, actionBy2Back,
nullptr) );
323 return "RotationalSkewTo / RotationalSkewBy";
333 _tamara->removeFromParentAndCleanup(
true);
334 _grossini->removeFromParentAndCleanup(
true);
335 _kathia->removeFromParentAndCleanup(
true);
337 auto s = Director::getInstance()->getWinSize();
339 Size boxSize(100.0f, 100.0f);
341 auto box = LayerColor::create(Color4B(255,255,0,255));
342 box->setAnchorPoint(Vec2(0.5f,0.5f));
343 box->setContentSize( boxSize );
344 box->setIgnoreAnchorPointForPosition(
false);
345 box->setPosition(s.width/2, s.height - 100 - box->getContentSize().height/2);
348 auto label = Label::createWithTTF(
"Standard cocos2d Skew",
"fonts/Marker Felt.ttf", 16.0f);
349 label->setPosition(s.width/2, s.height - 100 + label->getContentSize().height);
350 this->addChild(label);
352 auto actionTo = SkewBy::create(2, 360, 0);
353 auto actionToBack = SkewBy::create(2, -360, 0);
355 box->runAction(Sequence::create(actionTo, actionToBack,
nullptr));
357 box = LayerColor::create(Color4B(255,255,0,255));
358 box->setAnchorPoint(Vec2(0.5f,0.5f));
359 box->setContentSize(boxSize);
360 box->setIgnoreAnchorPointForPosition(
false);
361 box->setPosition(s.width/2, s.height - 250 - box->getContentSize().height/2);
364 label = Label::createWithTTF(
"Rotational Skew",
"fonts/Marker Felt.ttf", 16.0f);
365 label->setPosition(s.width/2, s.height - 250 + label->getContentSize().height/2);
366 this->addChild(label);
367 auto actionTo2 = RotateBy::create(2, 360, 0);
368 auto actionToBack2 = RotateBy::create(2, -360, 0);
369 box->runAction(Sequence::create(actionTo2, actionToBack2,
nullptr));
373 return "Skew Comparison";
381 _tamara->removeFromParentAndCleanup(
true);
382 _grossini->removeFromParentAndCleanup(
true);
383 _kathia->removeFromParentAndCleanup(
true);
385 Size boxSize(100.0f, 100.0f);
387 auto box = LayerColor::create(Color4B(255, 255, 0, 255));
388 box->setAnchorPoint(Vec2(0.0f, 0.0f));
389 box->setPosition(190, 110);
390 box->setContentSize(boxSize);
392 static float markrside = 10.0f;
393 auto uL = LayerColor::create(Color4B(255, 0, 0, 255));
395 uL->setContentSize(Size(markrside, markrside));
396 uL->setPosition(0.f, boxSize.height - markrside);
397 uL->setAnchorPoint(Vec2(0.0f, 0.0f));
399 auto uR = LayerColor::create(Color4B(0, 0, 255, 255));
401 uR->setContentSize(Size(markrside, markrside));
402 uR->setPosition(boxSize.width - markrside, boxSize.height - markrside);
403 uR->setAnchorPoint(Vec2(0.0f, 0.0f));
406 auto actionTo = SkewTo::create(2, 0.f, 2.f);
407 auto rotateTo = RotateTo::create(2, 61.0f);
408 auto actionScaleTo = ScaleTo::create(2, -0.44f, 0.47f);
410 auto actionScaleToBack = ScaleTo::create(2, 1.0f, 1.0f);
411 auto rotateToBack = RotateTo::create(2, 0);
412 auto actionToBack = SkewTo::create(2, 0, 0);
414 box->runAction(Sequence::create(actionTo, actionToBack,
nullptr));
415 box->runAction(Sequence::create(rotateTo, rotateToBack,
nullptr));
416 box->runAction(Sequence::create(actionScaleTo, actionScaleToBack,
nullptr));
421 return "Skew + Rotate + Scale";
435 auto actionTo = RotateTo::create( 2, 45);
436 auto actionTo2 = RotateTo::create( 2, -45);
437 auto actionTo0 = RotateTo::create(2 , 0);
438 _tamara->runAction( Sequence::create(actionTo, actionTo0,
nullptr));
440 auto actionBy = RotateBy::create(2 , 360);
441 auto actionByBack = actionBy->reverse();
442 _grossini->runAction( Sequence::create(actionBy, actionByBack,
nullptr));
444 _kathia->runAction( Sequence::create(actionTo2, actionTo0->clone(),
nullptr));
449 return "RotateTo / RotateBy";
463 auto actionBy1 = RotateBy::create(4, Vec3(360.0f, 0.0f, 0.0f));
464 auto actionBy2 = RotateBy::create(4, Vec3(0.0f, 360.0f, 0.0f));
465 auto actionBy3 = RotateBy::create(4 ,Vec3(0.0f, 0.0f, 360.0f));
467 _tamara->runAction( Sequence::create(actionBy1, actionBy1->reverse(),
nullptr));
468 _grossini->runAction( Sequence::create(actionBy2, actionBy2->reverse(),
nullptr));
469 _kathia->runAction( Sequence::create(actionBy3, actionBy3->reverse(),
nullptr));
474 return "RotateBy in 3D";
488 auto actionTo = JumpTo::create(2, Vec2(300,300), 50, 4);
489 auto actionBy = JumpBy::create(2, Vec2(300,0), 50, 4);
490 auto actionUp = JumpBy::create(2, Vec2(0,0), 80, 4);
491 auto actionByBack = actionBy->reverse();
494 _grossini->runAction( Sequence::create(actionBy, actionByBack,
nullptr));
495 _kathia->runAction( RepeatForever::create(actionUp));
499 return "JumpTo / JumpBy";
511 auto s = Director::getInstance()->getWinSize();
521 ccBezierConfig bezier;
522 bezier.controlPoint_1 = Vec2(0.0f, s.height/2);
523 bezier.controlPoint_2 = Vec2(300.0f, -s.height/2);
524 bezier.endPosition = Vec2(300.0f,100.0f);
526 auto bezierForward = BezierBy::create(3, bezier);
527 auto bezierBack = bezierForward->reverse();
528 auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack,
nullptr));
533 ccBezierConfig bezier2;
534 bezier2.controlPoint_1 = Vec2(100.0f, s.height/2);
535 bezier2.controlPoint_2 = Vec2(200.0f, -s.height/2);
536 bezier2.endPosition = Vec2(240.0f,160.0f);
538 auto bezierTo1 = BezierTo::create(2, bezier2);
542 auto bezierTo2 = BezierTo::create(2, bezier2);
552 return "BezierBy / BezierTo";
566 auto action1 = Blink::create(2, 10);
567 auto action2 = Blink::create(2, 5);
590 auto action1 = FadeIn::create(1.0f);
591 auto action1Back = action1->reverse();
593 auto action2 = FadeOut::create(1.0f);
594 auto action2Back = action2->reverse();
595 auto action2BackReverse = action2Back->reverse();
596 auto action2BackReverseReverse = action2BackReverse->reverse();
599 _tamara->runAction( Sequence::create( action1, action1Back,
nullptr));
601 _kathia->runAction( Sequence::create( action2, action2Back,action2BackReverse,action2BackReverseReverse,
nullptr));
606 return "FadeIn / FadeOut";
621 auto action1 = TintTo::create(2, 255, 0, 255);
622 auto action2 = TintBy::create(2, -127, -255, -127);
623 auto action2Back = action2->reverse();
626 _kathia->runAction( Sequence::create( action2, action2Back,
nullptr));
631 return "TintTo / TintBy";
648 auto animation = Animation::create();
649 for(
int i=1;i<15;i++)
651 char szName[100] = {0};
652 sprintf(szName,
"Images/grossini_dance_%02d.png", i);
653 animation->addSpriteFrameWithFile(szName);
656 animation->setDelayPerUnit(2.8f / 14.0f);
657 animation->setRestoreOriginalFrame(
true);
659 auto action = Animate::create(animation);
660 _grossini->runAction(Sequence::create(action, action->reverse(),
nullptr));
666 auto cache = AnimationCache::getInstance();
667 cache->addAnimationsWithFile(
"animations/animations-2.plist");
668 auto animation2 = cache->getAnimation(
"dance_1");
670 auto action2 = Animate::create(animation2);
671 _tamara->runAction(Sequence::create(action2, action2->reverse(),
nullptr));
673 _frameDisplayedListener = EventListenerCustom::create(AnimationFrameDisplayedNotification, [](EventCustom * event){
674 auto userData =
static_cast<AnimationFrame::DisplayedEventInfo*
>(
event->getUserData());
676 log(
"target %p with data %s", userData->target, Value(userData->userInfo).getDescription().c_str());
685 auto animation3 = animation2->clone();
686 animation3->setLoops(4);
689 auto action3 = Animate::create(animation3);
706 return "Center: Manual animation. Border: using file format animation";
720 auto action = Sequence::create(
721 MoveBy::create( 2, Vec2(240.0f,0.0f)),
722 RotateBy::create( 2, 540),
730 return "Sequence: Move + Rotate";
746 auto action = Sequence::create(
747 Place::create(Vec2(200.0f,200.0f)),
749 MoveBy::create(1, Vec2(100.0f,0.0f)),
760 auto s = Director::getInstance()->getWinSize();
761 auto label = Label::createWithTTF(
"callback 1 called",
"fonts/Marker Felt.ttf", 16.0f);
762 label->setPosition(s.width/4*1,s.height/2);
769 auto s = Director::getInstance()->getWinSize();
770 auto label = Label::createWithTTF(
"callback 2 called",
"fonts/Marker Felt.ttf", 16.0f);
771 label->setPosition(s.width/4*2,s.height/2);
778 auto s = Director::getInstance()->getWinSize();
779 auto label = Label::createWithTTF(
"callback 3 called",
"fonts/Marker Felt.ttf", 16.0f);
780 label->setPosition(s.width/4*3,s.height/2);
787 return "Sequence of InstantActions";
802 auto action1 = MoveBy::create(2, Vec2(240.0f,0.0f));
803 auto action2 = RotateBy::create(2, 540);
804 auto action3 = action1->reverse();
805 auto action4 = action2->reverse();
807 Vector<FiniteTimeAction*> array;
808 array.pushBack(action1);
809 array.pushBack(action2);
810 array.pushBack(action3);
811 array.pushBack(action4);
812 auto action = Sequence::create(array);
818 return "Sequence: Using Array API";
832 auto action = Sequence::create(
833 MoveBy::create(2.0f, Vec2(150.0f,0.0f)),
847 return "Grossini should jump after moving";
852 auto a = JumpBy::create(5, Vec2(0,0), 100, 5);
853 sender->runAction(a);
867 auto action = Sequence::create(
868 MoveBy::create(2.0f, Vec2(200.0f,0.0f)),
877 return "CallFuncND + auto remove";
882 return "simulates CallFuncND with std::bind()";
887 _grossini->removeFromParentAndCleanup(cleanup);
902 auto action1 = Sequence::create(
903 MoveBy::create(2, Vec2(200.0f,0.0f)),
908 auto s = Director::getInstance()->getWinSize();
909 auto label = Label::createWithTTF(
"called:lambda callback",
"fonts/Marker Felt.ttf", 16.0f);
910 label->setPosition(s.width/4*1,s.height/2-40);
911 this->addChild(label);
915 auto action2 = Sequence::create(
916 ScaleBy::create(2 , 2),
921 auto action3 = Sequence::create(
922 RotateBy::create(3 , 360),
935 auto s = Director::getInstance()->getWinSize();
936 auto label = Label::createWithTTF(
"callback 1 called",
"fonts/Marker Felt.ttf", 16.0f);
937 label->setPosition(s.width/4*1,s.height/2);
944 auto s = Director::getInstance()->getWinSize();
945 auto label = Label::createWithTTF(
"callback 2 called",
"fonts/Marker Felt.ttf", 16.0f);
946 label->setPosition(s.width/4*2,s.height/2);
950 CCLOG(
"sender is: %p", sender);
955 auto s = Director::getInstance()->getWinSize();
956 auto label = Label::createWithTTF(
"callback 3 called",
"fonts/Marker Felt.ttf", 16.0f);
957 label->setPosition(s.width/4*3,s.height/2);
960 CCLOG(
"target is: %p, data is: %ld", sender, data);
965 return "Callbacks: CallFunc with std::function()";
979 auto action = Spawn::create(
980 JumpBy::create(2, Vec2(300,0), 50, 4),
981 RotateBy::create( 2, 720),
989 return "Spawn: Jump + Rotate";
1004 auto action1 = JumpBy::create(2, Vec2(300,0), 50, 4);
1005 auto action2 = RotateBy::create( 2, 720);
1007 Vector<FiniteTimeAction*> array;
1008 array.pushBack(action1);
1009 array.pushBack(action2);
1011 auto action = Spawn::create(array);
1017 return "Spawn: using the Array API";
1031 auto action = Sequence::create(
1032 DelayTime::create(1),
1041 auto repeat = RepeatForever::create( RotateBy::create(1.0f, 360) );
1043 sender->runAction(repeat);
1048 return "CallFuncN + RepeatForever";
1063 auto act1 = RotateTo::create(1, 90);
1064 auto act2 = RotateTo::create(1, 0);
1065 auto seq = Sequence::create(act1, act2,
nullptr);
1066 auto rep1 = RepeatForever::create(seq);
1067 auto rep2 = Repeat::create( seq->clone(), 10);
1075 return "Repeat/RepeatForever + RotateTo";
1089 auto jump = JumpBy::create(2, Vec2(300,0), 50, 4);
1090 auto action = Sequence::create( jump, jump->reverse(),
nullptr);
1097 return "Reverse an action";
1112 auto move = MoveBy::create(1, Vec2(150.0f,0.0f));
1113 auto action = Sequence::create( move, DelayTime::create(2), move,
nullptr);
1120 return "DelayTime: m + delay + m";
1135 auto move1 = MoveBy::create(1, Vec2(250.0f,0.0f));
1136 auto move2 = MoveBy::create(1, Vec2(0.0f,50.0f));
1137 auto seq = Sequence::create( move1, move2, move1->reverse(),
nullptr);
1138 auto action = Sequence::create( seq, seq->reverse(),
nullptr);
1145 return "Reverse a sequence";
1163 auto move1 = MoveBy::create(1, Vec2(250.0f,0.0f));
1164 auto move2 = MoveBy::create(1, Vec2(0.0f,50.0f));
1165 auto tog1 = ToggleVisibility::create();
1166 auto tog2 = ToggleVisibility::create();
1167 auto seq = Sequence::create( move1, tog1, move2, tog2, move1->reverse(),
nullptr);
1168 auto action = Repeat::create(Sequence::create( seq, seq->reverse(),
nullptr), 3);
1175 auto move_tamara = MoveBy::create(1, Vec2(100.0f,0.0f));
1176 auto move_tamara2 = MoveBy::create(1, Vec2(50.0f,0.0f));
1177 auto hide = Hide::create();
1178 auto seq_tamara = Sequence::create( move_tamara, hide, move_tamara2,
nullptr);
1179 auto seq_back = seq_tamara->reverse();
1180 _tamara->runAction( Sequence::create( seq_tamara, seq_back,
nullptr));
1184 return "Reverse sequence 2";
1199 auto a1 = MoveBy::create(1, Vec2(150.0f,0.0f));
1200 auto action1 = Repeat::create(
1201 Sequence::create( Place::create(Vec2(60.0f,60.0f)), a1,
nullptr) ,
1203 auto action2 = RepeatForever::create(
1204 Sequence::create(a1->clone(), a1->reverse(),
nullptr)
1213 return "Repeat / RepeatForever actions";
1225 Director::getInstance()->setProjection(Director::Projection::_2D);
1228 auto orbit1 = OrbitCamera::create(2,1, 0, 0, 180, 0, 0);
1229 auto action1 = Sequence::create(
1234 auto orbit2 = OrbitCamera::create(2,1, 0, 0, 180, -45, 0);
1235 auto action2 = Sequence::create(
1240 auto orbit3 = OrbitCamera::create(2,1, 0, 0, 180, 90, 0);
1241 auto action3 = Sequence::create(
1246 _kathia->runAction(RepeatForever::create(action1));
1247 _tamara->runAction(RepeatForever::create(action2));
1248 _grossini->runAction(RepeatForever::create(action3));
1250 auto move = MoveBy::create(3, Vec2(100.0f,-100.0f));
1251 auto move_back = move->reverse();
1252 auto seq = Sequence::create(move, move_back,
nullptr);
1253 auto rfe = RepeatForever::create(seq);
1255 _tamara->runAction(rfe->clone() );
1263 Director::getInstance()->setProjection(Director::Projection::DEFAULT);
1268 return "OrbitCamera action";
1281 auto s = Director::getInstance()->getWinSize();
1283 DrawNode* drawNode = DrawNode::create();
1284 float x = s.width*2 - 100;
1287 Vec2 vertices[] = { Vec2(5.0f,5.0f), Vec2(x-5,5.0f), Vec2(x-5,y-5), Vec2(5.0f,y-5) };
1288 drawNode->drawPoly(vertices, 4,
true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
1290 this->addChild(drawNode);
1292 _grossini->setPosition(-200.0f, s.height / 2);
1293 auto move = MoveBy::create(2, Vec2(s.width * 3, 0.0f));
1294 auto move_back = move->reverse();
1295 auto seq = Sequence::create(move, move_back,
nullptr);
1296 auto rep = RepeatForever::create(seq);
1300 this->runAction(Follow::create(
_grossini, Rect(0.0f, 0.0f, s.width * 2 - 100, s.height)));
1305 return "Follow action";
1318 auto s = Director::getInstance()->getWinSize();
1320 DrawNode* drawNode = DrawNode::create();
1321 float x = s.width*2 - 100;
1324 Vec2 vertices[] = { Vec2(5.0f,5.0f), Vec2(x-5,5.0f), Vec2(x-5,y-5), Vec2(5.0f,y-5) };
1325 drawNode->drawPoly(vertices, 4,
true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
1327 this->addChild(drawNode);
1329 _grossini->setPosition(-200, s.height / 2);
1330 auto move = MoveBy::create(2, Vec2(s.width * 3, 1.0f));
1331 auto move_back = move->reverse();
1332 auto seq = Sequence::create(move, move_back,
nullptr);
1333 auto rep = RepeatForever::create(seq);
1338 float verticalOffset = -900;
1339 float horizontalOffset = 200;
1340 this->runAction(Follow::createWithOffset(
_grossini, horizontalOffset,verticalOffset,Rect(0.0f, 0.0f, s.width * 2 - 100, s.height)));
1345 return "Follow action with horizontal and vertical offset";
1355 auto jump1 = JumpBy::create(2,Vec2::ZERO,100,3);
1356 auto jump2 = jump1->clone();
1357 auto rot1 = RotateBy::create(1, 360);
1358 auto rot2 = rot1->clone();
1360 auto t1 = TargetedAction::create(
_kathia, jump2);
1361 auto t2 = TargetedAction::create(
_kathia, rot2);
1363 auto seq = Sequence::create(jump1, t1, rot1, t2,
nullptr);
1364 auto always = RepeatForever::create(seq);
1371 return "ActionTargeted";
1376 return "Action that runs on another target. Useful for sequences";
1386 auto jump1 = JumpBy::create(2,Vec2::ZERO,100,3);
1387 auto jump2 = jump1->clone();
1388 auto rot1 = RotateBy::create(1, 360);
1389 auto rot2 = rot1->clone();
1391 auto t1 = TargetedAction::create(
_kathia, jump2);
1392 auto t2 = TargetedAction::create(
_kathia, rot2);
1394 auto seq = Sequence::create(jump1, t1->reverse(), rot1, t2->reverse(),
nullptr);
1395 auto always = RepeatForever::create(seq);
1402 return "ActionTargetedReverse";
1407 return "Action that runs reversely on another target. Useful for sequences";
1418 auto listener = EventListenerTouchAllAtOnce::create();
1420 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
1422 auto s = Director::getInstance()->getWinSize();
1428 int idx =
static_cast<int>(CCRANDOM_0_1() * 1400 / 100);
1431 float x = (idx%5) * w;
1432 float y = (idx/5) * h;
1434 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(x,y,w,h));
1436 sprite->setPosition(p);
1437 this->addChild(sprite);
1449 for (
auto &touch: touches ) {
1450 auto location = touch->getLocation();
1457 return "Override me";
1462 return "Tap screen";
1471 RepeatForever::create(
1473 MoveBy::create(0.05f, Vec2(10.0f,10.0f)),
1474 MoveBy::create(0.05f, Vec2(-10.0f,-10.0f)),
1477 auto action = MoveBy::create(2.0f, Vec2(400.0f,0.0f));
1478 auto action_back = action->reverse();
1481 RepeatForever::create(
1482 Sequence::create(action, action_back,
nullptr)
1489 return "Stacked MoveBy/To actions";
1497 RepeatForever::create(
1499 MoveBy::create(0.05f, Vec2(10,2)),
1500 MoveBy::create(0.05f, Vec2(-10,-2)),
1503 auto jump = JumpBy::create(2.0f, Vec2(400,0), 100, 5);
1504 auto jump_back = jump->reverse();
1507 RepeatForever::create(
1508 Sequence::create(jump, jump_back,
nullptr)
1514 return "tacked Move + Jump actions";
1521 auto s = Director::getInstance()->getWinSize();
1524 ccBezierConfig bezier;
1525 bezier.controlPoint_1 = Vec2(0.0f, s.height/2);
1526 bezier.controlPoint_2 = Vec2(300.0f, -s.height/2);
1527 bezier.endPosition = Vec2(300.0f,100.0f);
1529 auto bezierForward = BezierBy::create(3, bezier);
1530 auto bezierBack = bezierForward->reverse();
1531 auto seq = Sequence::create(bezierForward, bezierBack,
nullptr);
1532 auto rep = RepeatForever::create(seq);
1533 sprite->runAction(rep);
1536 RepeatForever::create(
1538 MoveBy::create(0.05f, Vec2(10.0f,0.0f)),
1539 MoveBy::create(0.05f, Vec2(-10.0f,0.0f)),
1545 return "Stacked Move + Bezier actions";
1557 auto s = Director::getInstance()->getWinSize();
1568 auto array = PointArray::create(20);
1570 array->addControlPoint(Vec2(0.0f,0.0f));
1571 array->addControlPoint(Vec2(80.0f,80.0f));
1572 array->addControlPoint(Vec2(s.width-80,80.0f));
1573 array->addControlPoint(Vec2(s.width-80,s.height-80.0f));
1574 array->addControlPoint(Vec2(80.0f,s.height-80.0f));
1575 array->addControlPoint(Vec2(80.0f,80.0f));
1576 array->addControlPoint(Vec2(s.width/2, s.height/2));
1578 auto action = CatmullRomBy::create(3, array);
1579 auto reverse = action->reverse();
1581 auto seq = Sequence::create(action, reverse,
nullptr);
1586 RepeatForever::create(
1588 MoveBy::create(0.05f, Vec2(10.0f,0.0f)),
1589 MoveBy::create(0.05f, Vec2(-10.0f,0.0f)),
1592 auto drawNode1 = DrawNode::create();
1593 drawNode1->setPosition(Vec2(50.0f,50.0f));
1594 drawNode1->drawCatmullRom(array, 50, Color4F(1.0f, 1.0f, 0.0f, 0.5f));
1595 this->addChild(drawNode1);
1604 auto array2 = PointArray::create(20);
1606 array2->addControlPoint(Vec2(s.width/2, 30.0f));
1607 array2->addControlPoint(Vec2(s.width-80,30.0f));
1608 array2->addControlPoint(Vec2(s.width-80.0f,s.height-80.0f));
1609 array2->addControlPoint(Vec2(s.width/2,s.height-80.0f));
1610 array2->addControlPoint(Vec2(s.width/2, 30.0f));
1612 auto action2 = CatmullRomTo::create(3, array2);
1613 auto reverse2 = action2->reverse();
1615 auto seq2 = Sequence::create(action2, reverse2,
nullptr);
1620 RepeatForever::create(
1622 MoveBy::create(0.05f, Vec2(10.0f,0.0f)),
1623 MoveBy::create(0.05f, Vec2(-10.0f,0.0f)),
1626 auto drawNode2 = DrawNode::create();
1627 drawNode2->drawCatmullRom(array2, 50, Color4F(1.0, 0.0, 0.0, 0.5));
1628 this->addChild(drawNode2);
1637 return "Stacked MoveBy + CatmullRom actions";
1642 return "MoveBy + CatmullRom at the same time in the same sprite";
1654 auto s = Director::getInstance()->getWinSize();
1656 auto array = PointArray::create(20);
1658 array->addControlPoint(Vec2(0.0f, 0.0f));
1659 array->addControlPoint(Vec2(s.width/2-30,0.0f));
1660 array->addControlPoint(Vec2(s.width/2-30,s.height-80.0f));
1661 array->addControlPoint(Vec2(0.0f, s.height-80.0f));
1662 array->addControlPoint(Vec2(0.0f, 0.0f));
1671 auto action = CardinalSplineBy::create(3, array, 0);
1672 auto reverse = action->reverse();
1674 auto seq = Sequence::create(action, reverse,
nullptr);
1680 RepeatForever::create(
1682 MoveBy::create(0.05f, Vec2(10.0f,0.0f)),
1683 MoveBy::create(0.05f, Vec2(-10.0f,0.0f)),
1686 auto drawNode1 = DrawNode::create();
1687 drawNode1->setPosition(Vec2(50.0f,50.0f));
1688 drawNode1->drawCardinalSpline(array, 0, 100, Color4F(1.0f, 0.0f, 1.0f, 1.0f));
1689 this->addChild(drawNode1);
1697 auto *action2 = CardinalSplineBy::create(3, array, 1);
1698 auto reverse2 = action2->reverse();
1700 auto seq2 = Sequence::create(action2, reverse2,
nullptr);
1702 _kathia->setPosition(s.width/2,50);
1707 RepeatForever::create(
1709 MoveBy::create(0.05f, Vec2(10.0f,0.0f)),
1710 MoveBy::create(0.05f, Vec2(-10.0f,0.0f)),
1713 auto drawNode2 = DrawNode::create();
1714 drawNode2->setPosition(Vec2(s.width/2,50.0f));
1715 drawNode2->drawCardinalSpline(array, 1, 100, Color4F(0.0f, 0.0f, 1.0f, 1.0f));
1716 this->addChild(drawNode2);
1725 return "Stacked MoveBy + CardinalSpline actions";
1730 return "CCMoveBy + CardinalSplineBy/To at the same time";
1739 _spriteTmp = Sprite::create(
"Images/grossini.png");
1743 scheduleOnce([&](
float dt) {
1752 cocos2d::log(
"This message SHALL ONLY appear when the sprite is added to the scene, NOT BEFORE");
1764 return "Issue 1305";
1769 return "In two seconds you should see a message on the console. NOT BEFORE.";
1777 auto spr = Sprite::create(
"Images/grossini.png");
1778 spr->setPosition(200,200);
1781 auto act1 = MoveBy::create(2 ,Vec2(0.0f, 100.0f));
1801 auto act3 = MoveBy::create(2, Vec2(0.0f, -100.0f));
1803 auto act5 = MoveBy::create(2, Vec2(100.0f, -100.0f));
1805 auto act7 = MoveBy::create(2, Vec2(-100.0f, 0.0f));
1808 auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8,
nullptr);
1811 Director::getInstance()->getActionManager()->addAction(actF ,spr,
false);
1837 return "Issue 1305 #2";
1842 return "See console. You should only see one message for each block";
1850 auto spr = Sprite::create(
"Images/grossini.png");
1851 spr->setPosition(100, 100);
1854 auto act1 = MoveBy::create(0.5, Vec2(100.0f, 0.0f));
1855 auto act2 = act1->reverse();
1856 auto act3 = Sequence::create(act1, act2,
nullptr);
1857 auto act4 = Repeat::create(act3, 2);
1859 spr->runAction(act4);
1864 return "Issue 1288";
1869 return "Sprite should end at the position where it started.";
1877 auto spr = Sprite::create(
"Images/grossini.png");
1878 spr->setPosition(100, 100);
1881 auto act1 = MoveBy::create(0.5, Vec2(100.0f, 0.0f));
1882 spr->runAction(Repeat::create(act1, 1));
1887 return "Issue 1288 #2";
1892 return "Sprite should move 100 pixels, and stay there";
1901 auto spr = Sprite::create(
"Images/grossini.png");
1902 spr->setPosition(100, 100);
1906 auto act2 = RotateBy::create(0.25, 45);
1908 auto act4 = RotateBy::create(0.25, 45);
1910 auto act6 = RotateBy::create(0.25, 45);
1912 auto act8 = RotateBy::create(0.25, 45);
1915 auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, act9,
nullptr);
1916 spr->runAction(actF);
1921 return "Issue 1327";
1926 return "See console: You should see: 0, 45, 90, 135, 180";
1931 log(
"%f", sender->getRotation());
1965 log(
"%s", (
char*)data);
1970 return "See console: You should see an 8";
1975 return "Issue 1398";
1984 log(
"before: count = %d",
_count);
1986 log(
"start count up 50 times using Repeat action");
1987 auto delay = 1.0f / 50;
1988 auto repeatAction = Repeat::create(
1989 Sequence::createWithTwoActions(
1990 CallFunc::create([&](){ this->
_count++; }),
1991 DelayTime::create(delay)),
1994 Sequence::createWithTwoActions(
1996 CallFunc::create([&]() { log(
"after: count = %d", this->
_count); })
2002 return "See console: You should see '50'";
2007 return "Issue 2599";
2018 auto s = Director::getInstance()->getWinSize();
2029 auto array = PointArray::create(20);
2031 array->addControlPoint(Vec2(0.0f, 0.0f));
2032 array->addControlPoint(Vec2(80.0f, 80.0f));
2033 array->addControlPoint(Vec2(s.width - 80, 80.0f));
2034 array->addControlPoint(Vec2(s.width - 80, s.height - 80));
2035 array->addControlPoint(Vec2(80.0f, s.height - 80.0f));
2036 array->addControlPoint(Vec2(80.0f, 80.0f));
2037 array->addControlPoint(Vec2(s.width / 2, s.height / 2));
2039 auto action = CatmullRomBy::create(3, array);
2040 auto reverse = action->reverse();
2042 auto seq = Sequence::create(action, reverse,
nullptr);
2046 auto drawNode1 = DrawNode::create();
2047 drawNode1->setPosition(Vec2(50.0f,50.0f));
2048 drawNode1->drawCatmullRom(array, 50, Color4F(1.0f, 0.0f, 1.0f, 1.0f));
2049 this->addChild(drawNode1);
2058 auto array2 = PointArray::create(20);
2060 array2->addControlPoint(Vec2(s.width / 2, 30.0f));
2061 array2->addControlPoint(Vec2(s.width -80, 30.0f));
2062 array2->addControlPoint(Vec2(s.width - 80, s.height - 80));
2063 array2->addControlPoint(Vec2(s.width / 2, s.height - 80));
2064 array2->addControlPoint(Vec2(s.width / 2, 30.0f));
2066 auto action2 = CatmullRomTo::create(3, array2);
2067 auto reverse2 = action2->reverse();
2069 auto seq2 = Sequence::create(action2, reverse2,
nullptr);
2073 auto drawNode2 = DrawNode::create();
2074 drawNode2->drawCatmullRom(array2, 50, Color4F(0.0f, 1.0f, 1.0f, 1.0f));
2075 this->addChild(drawNode2);
2084 return "CatmullRomBy / CatmullRomTo";
2089 return "Catmull Rom spline paths. Testing reverse too";
2100 auto s = Director::getInstance()->getWinSize();
2102 auto array = PointArray::create(20);
2104 array->addControlPoint(Vec2(0.0f, 0.0f));
2105 array->addControlPoint(Vec2(s.width/2-30, 0.0f));
2106 array->addControlPoint(Vec2(s.width/2-30, s.height-80));
2107 array->addControlPoint(Vec2(0.0f, s.height-80));
2108 array->addControlPoint(Vec2(0.0f, 0.0f));
2116 auto action = CardinalSplineBy::create(3, array, 0);
2117 auto reverse = action->reverse();
2119 auto seq = Sequence::create(action, reverse,
nullptr);
2124 auto drawNode1 = DrawNode::create();
2125 drawNode1->setPosition(Vec2(50.0f,50.0f));
2126 drawNode1->drawCardinalSpline(array, 0, 100, Color4F(1.0f, 0.0f, 1.0f, 1.0f));
2127 this->addChild(drawNode1);
2135 auto action2 = CardinalSplineBy::create(3, array, 1);
2136 auto reverse2 = action2->reverse();
2138 auto seq2 = Sequence::create(action2, reverse2,
nullptr);
2140 _kathia->setPosition(s.width/2, 50);
2143 auto drawNode2 = DrawNode::create();
2144 drawNode2->setPosition(Vec2(s.width/2, 50.0f));
2145 drawNode2->drawCardinalSpline(array, 1, 100, Color4F(1.0f, 0.0f, 1.0f, 1.0f));
2146 this->addChild(drawNode2);
2155 return "CardinalSplineBy / CardinalSplineTo";
2160 return "Cardinal Spline paths. Testing different tensions for one array";
2182 _tamara->runAction(RepeatForever::create(RotateBy::create(3.0f, 360.0f)));
2183 _grossini->runAction(RepeatForever::create(RotateBy::create(3.0f, -360.0f)));
2184 _kathia->runAction(RepeatForever::create(RotateBy::create(3.0f, 360.0f)));
2186 this->schedule([&](
float dt){
2188 auto director = Director::getInstance();
2190 _pausedTargets = director->getActionManager()->pauseAllRunningActions();
2192 ,3 ,false ,0 ,
"pause_key");
2194 this->schedule([&](
float dt) {
2196 auto director = Director::getInstance();
2200 ,5 ,false ,0,
"resume_key");
2205 return "PauseResumeActions";
2210 return "All actions pause at 3s and resume at 5s";
2228 Size widgetSize = getContentSize();
2230 Text* alert = Text::create(
"ImageView Content ResizeTo ResizeBy action. \nTop: ResizeTo/ResizeBy on a 9-slice ImageView \nBottom: ScaleTo/ScaleBy on a 9-slice ImageView (for comparison)",
"fonts/Marker Felt.ttf", 14);
2231 alert->setColor(Color3B(159, 168, 176));
2232 alert->setPosition(Vec2(widgetSize.width / 2.0f,
2233 widgetSize.height / 2.0f - alert->getContentSize().height * 1.125f));
2238 Vec2 offset(0.0f, 50.0f);
2239 ImageView* imageViewResize = ImageView::create(
"cocosui/buttonHighlighted.png");
2240 imageViewResize->setScale9Enabled(
true);
2241 imageViewResize->setContentSize(Size(50.0f, 40.0f));
2242 imageViewResize->setPosition(Vec2((widgetSize.width / 2.0f) + offset.x,
2243 (widgetSize.height / 2.0f) + offset.y));
2245 auto resizeDown = cocos2d::ResizeTo::create(2.8f, Size(50.0f, 40.0f));
2246 auto resizeUp = cocos2d::ResizeTo::create(2.8f, Size(300.0f, 40.0f));
2248 auto resizeByDown = cocos2d::ResizeBy::create(1.8f, Size(0.0f, -30.0f));
2249 auto resizeByUp = cocos2d::ResizeBy::create(1.8f, Size(0.0f, 30.0f));
2250 addChild(imageViewResize);
2251 auto rep = RepeatForever::create(Sequence::create(resizeUp, resizeDown, resizeByDown, resizeByUp,
nullptr));
2252 imageViewResize->runAction(rep);
2255 ImageView* imageViewScale = ImageView::create(
"cocosui/buttonHighlighted.png");
2256 imageViewScale->setScale9Enabled(
true);
2257 imageViewScale->setContentSize(Size(50.0f, 40.0f));
2258 imageViewScale->setPosition(Vec2(widgetSize.width / 2.0f,
2259 widgetSize.height / 2.0f));
2261 auto scaleDownScale = cocos2d::ScaleTo::create(2.8f, 1.0f);
2262 auto scaleUpScale = cocos2d::ScaleTo::create(2.8f, 6.0f, 1.0f);
2264 auto scaleByDownScale = cocos2d::ScaleBy::create(1.8f, 1.0f, 0.25f);
2265 auto scaleByUpScale = cocos2d::ScaleBy::create(1.8f, 1.0f, 4.0f);
2266 addChild(imageViewScale);
2267 auto rep2 = RepeatForever::create(Sequence::create(scaleUpScale, scaleDownScale, scaleByDownScale, scaleByUpScale,
nullptr));
2268 imageViewScale->runAction(rep2);
2273 return "ResizeTo / ResizeBy";
2287 auto action = Sequence::create(
2288 MoveBy::create( 2, Vec2(240.0f,0.0f)),
2289 RotateBy::create( 2, 540),
2290 ScaleTo::create(1,0.1f),
2291 RemoveSelf::create(),
2299 return "Sequence: Move + Rotate + Scale + RemoveSelf";
2313 auto s = Director::getInstance()->getWinSize();
2316 auto actionFloat = ActionFloat::create(2.f, 0, 3, [
this](
float value) {
2320 float grossiniY =
_grossini->getPositionY();
2322 auto actionFloat1 = ActionFloat::create(3.f, grossiniY, grossiniY + 50, [
this](
float value) {
2326 auto actionFloat2 = ActionFloat::create(3.f, 3, 1, [
this] (
float value) {
2330 _tamara->runAction(actionFloat);
2332 _kathia->runAction(actionFloat2);
2339 auto origin = cocos2d::Director::getInstance()->getVisibleOrigin();
2340 auto visibleSize = cocos2d::Director::getInstance()->getVisibleSize();
2344 auto counterLabel = Label::createWithTTF(
"0",
"fonts/Marker Felt.ttf", 16.0f);
2345 counterLabel->setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2);
2346 addChild(counterLabel);
2348 auto func = CallFunc::create([
this, counterLabel]{
2350 std::ostringstream os;
2352 counterLabel->setString(os.str());
2355 runAction(Spawn::create(func, func,
nullptr));
2359 return "Counter should be equal 2";
2366 auto origin = cocos2d::Director::getInstance()->getVisibleOrigin();
2367 auto visibleSize = cocos2d::Director::getInstance()->getVisibleSize();
2370 auto counterLabel = Label::createWithTTF(
"0",
"fonts/Marker Felt.ttf", 16.0f);
2371 counterLabel->setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2);
2372 addChild(counterLabel);
2374 auto func = CallFunc::create([
this, counterLabel] {
2376 std::ostringstream os;
2378 counterLabel->setString(os.str());
2381 runAction(Sequence::create(TargetedAction::create(
this, func), DelayTime::create(0.2f),
nullptr));
2385 return "Counter should be equal 1";
2389 return "Issue 14936 - Sequence";
2393 return "Issue 14936 - Action Interval";
2398 return "ActionFloat";
2412 _manager =
new cocos2d::ActionManager();
2414 _target = cocos2d::Node::create();
2419 bool called(
false );
2421 ( [ &called ]() ->
void
2423 cocos2d::log(
"Callback called.");
2428 cocos2d::Sequence::create
2429 (cocos2d::DelayTime::create(0.05f),
2430 cocos2d::CallFunc::create(f),
2435 _manager->update(0.05f - FLT_EPSILON);
2437 if ( action->isDone() && !called )
2442 if ( action->isDone() && !called )
2456 return "Instant action should not crash";
2484 auto action = Sequence::create(CallFunc::create(f),
2485 DelayTime::create(1),
2492 assert(action->isDone());
2497 action = Sequence::create(CallFunc::create(f),
2498 CallFunc::create(f),
2503 assert(action->isDone());
2507 action = Sequence::create(DelayTime::create(1),
2508 CallFunc::create(f),
2513 assert(action->isDone());
2517 action = Sequence::create(DelayTime::create(1), DelayTime::create(1),
nullptr);
2521 assert(action->isDone());
2535 return "issue18003: should not crash";
#define ADD_TEST_CASE(__className__)
virtual void onExit() override
virtual std::string title() const override
virtual std::string subtitle() const override
cocos2d::EventListenerCustom * _frameDisplayedListener
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
void doRemoveFromParentAndCleanup(Node *sender, bool cleanup)
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
void callback(Node *sender)
void callback3(Node *pTarget, long data)
void callback2(Node *pTarget)
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual ~ActionCardinalSplineStacked()
virtual void onEnter() override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual ~ActionCatmullRomStacked()
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void runActionsInSprite(cocos2d::Sprite *sprite) override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void runActionsInSprite(cocos2d::Sprite *sprite) override
virtual std::string title() const override
virtual std::string title() const override
virtual void runActionsInSprite(cocos2d::Sprite *sprite) override
virtual std::string subtitle() const override
virtual void onExit() override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
void repeatForever(Node *pTarget)
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
void callback2(Node *sender)
void callback3(Node *sender, long data)
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void addNewSpriteWithCoords(cocos2d::Vec2 p)
virtual void onEnter() override
virtual void runActionsInSprite(cocos2d::Sprite *sprite)
virtual std::string title() const override
virtual std::string subtitle() const override
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
void centerSprites(unsigned int numberOfSprites)
cocos2d::Sprite * _grossini
virtual void onEnter() override
cocos2d::Sprite * _tamara
void alignSpritesLeft(unsigned int numberOfSprites)
cocos2d::Sprite * _kathia
virtual std::string title() const override
virtual void onExit() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onExit() override
cocos2d::Sprite * _spriteTmp
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
void logSprRotation(cocos2d::Sprite *sender)
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
void incrementIntegerCallback(void *data)
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
cocos2d::ActionManager * _manager
virtual void onEnter() override
virtual void onExit() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual ~PauseResumeActions()
cocos2d::Vector< Node * > _pausedTargets
virtual std::string title() const override
virtual void onExit() override
virtual std::string subtitle() const override
virtual void onEnter() override
cocos2d::ActionManager * _manager
virtual void onEnter() override
static cocos2d::Rect getVisibleRect()
static cocos2d::Vec2 center()
static cocos2d::Vec2 bottom()
static const char s_pathSister1[]
static const char s_pathSister2[]
static const char s_pathGrossini[]