32#include "../testResource.h"
33#include "editor-support/cocostudio/CocosStudioExtension.h"
59SpriteTests::SpriteTests()
150 auto listener = EventListenerTouchAllAtOnce::create();
152 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
154 auto s = Director::getInstance()->getWinSize();
160 int idx = (int)(CCRANDOM_0_1() * 1400.0f / 100.0f);
161 int x = (idx%5) * 85;
162 int y = (idx/5) * 121;
165 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(x,y,85,121) );
168 sprite->setPosition( Vec2( p.x, p.y) );
170 ActionInterval* action;
171 float random = CCRANDOM_0_1();
174 action = ScaleBy::create(3, 2);
175 else if(random < 0.40)
176 action = RotateBy::create(3, 360);
177 else if( random < 0.60)
178 action = Blink::create(1, 3);
179 else if( random < 0.8 )
180 action = TintBy::create(2, 0, -255, -255);
182 action = FadeOut::create(2);
183 auto action_back = action->reverse();
184 auto seq = Sequence::create( action, action_back,
nullptr );
186 sprite->runAction( RepeatForever::create(seq) );
191 for (
auto touch: touches)
193 auto location = touch->getLocation();
201 return "Testing Sprite";
206 return "Tap screen to add more sprites";
217 auto listener = EventListenerTouchAllAtOnce::create();
219 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
224 if (!SpriteTestDemo::init())
227 _background = Sprite::create(
"Images/background2.png");
228 auto s = Director::getInstance()->getWinSize();
229 _background->setPosition(Vec2(s.width / 2, s.height / 2));
238 auto sprite = Sprite::create(
"Images/grossini_dance_08.png");
239 Texture2D *etcTexture = _director->getTextureCache()->addImage(
"Images/etc1-alpha.pkm");
240 sprite->setTexture(etcTexture);
244 sprite->setPosition(Vec2(p.x, p.y));
246 ActionInterval* action;
247 float random = CCRANDOM_0_1();
250 action = ScaleBy::create(3, 2);
251 else if (random < 0.40)
252 action = RotateBy::create(3, 360);
253 else if (random < 0.60)
254 action = Blink::create(1, 3);
255 else if (random < 0.8)
256 action = TintBy::create(2, 0, -255, -255);
258 action = FadeOut::create(2);
259 auto action_back = action->reverse();
260 auto seq = Sequence::create(action, action_back,
nullptr);
262 sprite->runAction(RepeatForever::create(seq));
267 for (
auto touch : touches)
269 auto location = touch->getLocation();
277 return "Testing Sprite ETC1 Alpha support";
282 return "Tap screen to add more sprites";
293 auto listener = EventListenerTouchAllAtOnce::create();
295 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
297 auto BatchNode = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 50);
300 auto s = Director::getInstance()->getWinSize();
308 int idx = CCRANDOM_0_1() * 1400 / 100;
309 int x = (idx%5) * 85;
310 int y = (idx/5) * 121;
313 auto sprite = Sprite::createWithTexture(BatchNode->getTexture(), Rect(x,y,85,121));
314 BatchNode->addChild(sprite);
316 sprite->setPosition( Vec2( p.x, p.y) );
318 ActionInterval* action;
319 float random = CCRANDOM_0_1();
322 action = ScaleBy::create(3, 2);
323 else if(random < 0.40)
324 action = RotateBy::create(3, 360);
325 else if( random < 0.60)
326 action = Blink::create(1, 3);
327 else if( random < 0.8 )
328 action = TintBy::create(2, 0, -255, -255);
330 action = FadeOut::create(2);
332 auto action_back = action->reverse();
333 auto seq = Sequence::create(action, action_back,
nullptr);
335 sprite->runAction( RepeatForever::create(seq));
340 for (
auto &touch: touches)
342 auto location = touch->getLocation();
351 return "Testing SpriteBatchNode";
356 return "SpriteBatchNode: Tap screen to add more sprites";
368 auto sprite1 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*0, 121*1, 85, 121));
369 auto sprite2 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*1, 85, 121));
370 auto sprite3 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*2, 121*1, 85, 121));
371 auto sprite4 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*3, 121*1, 85, 121));
373 auto sprite5 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*0, 121*1, 85, 121));
374 auto sprite6 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*1, 85, 121));
375 auto sprite7 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*2, 121*1, 85, 121));
376 auto sprite8 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*3, 121*1, 85, 121));
378 auto s = Director::getInstance()->getWinSize();
379 sprite1->setPosition( Vec2( (s.width/5)*1, (s.height/3)*1) );
380 sprite2->setPosition( Vec2( (s.width/5)*2, (s.height/3)*1) );
381 sprite3->setPosition( Vec2( (s.width/5)*3, (s.height/3)*1) );
382 sprite4->setPosition( Vec2( (s.width/5)*4, (s.height/3)*1) );
383 sprite5->setPosition( Vec2( (s.width/5)*1, (s.height/3)*2) );
384 sprite6->setPosition( Vec2( (s.width/5)*2, (s.height/3)*2) );
385 sprite7->setPosition( Vec2( (s.width/5)*3, (s.height/3)*2) );
386 sprite8->setPosition( Vec2( (s.width/5)*4, (s.height/3)*2) );
388 auto action = FadeIn::create(2);
389 auto action_back = action->reverse();
390 auto fade = RepeatForever::create( Sequence::create( action, action_back,
nullptr) );
392 auto tintred = TintBy::create(2, 0, -255, -255);
393 auto tintred_back = tintred->reverse();
394 auto red = RepeatForever::create( Sequence::create( tintred, tintred_back,
nullptr) );
396 auto tintgreen = TintBy::create(2, -255, 0, -255);
397 auto tintgreen_back = tintgreen->reverse();
398 auto green = RepeatForever::create( Sequence::create( tintgreen, tintgreen_back,
nullptr) );
400 auto tintblue = TintBy::create(2, -255, -255, 0);
401 auto tintblue_back = tintblue->reverse();
402 auto blue = RepeatForever::create( Sequence::create( tintblue, tintblue_back,
nullptr) );
404 sprite5->runAction(red);
405 sprite6->runAction(green);
406 sprite7->runAction(blue);
407 sprite8->runAction(fade);
426 auto sprite =
static_cast<Sprite*
>( getChildByTag(
kTagSprite5) );
429 removeChild(sprite,
false);
437 return "Testing Sprite";
442 return "Color & Opacity";
455 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 1);
458 auto sprite1 = Sprite::createWithTexture(batch->getTexture(), Rect(85*0, 121*1, 85, 121));
459 auto sprite2 = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*1, 85, 121));
460 auto sprite3 = Sprite::createWithTexture(batch->getTexture(), Rect(85*2, 121*1, 85, 121));
461 auto sprite4 = Sprite::createWithTexture(batch->getTexture(), Rect(85*3, 121*1, 85, 121));
463 auto sprite5 = Sprite::createWithTexture(batch->getTexture(), Rect(85*0, 121*1, 85, 121));
464 auto sprite6 = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*1, 85, 121));
465 auto sprite7 = Sprite::createWithTexture(batch->getTexture(), Rect(85*2, 121*1, 85, 121));
466 auto sprite8 = Sprite::createWithTexture(batch->getTexture(), Rect(85*3, 121*1, 85, 121));
469 auto s = Director::getInstance()->getWinSize();
470 sprite1->setPosition( Vec2( (s.width/5)*1, (s.height/3)*1) );
471 sprite2->setPosition( Vec2( (s.width/5)*2, (s.height/3)*1) );
472 sprite3->setPosition( Vec2( (s.width/5)*3, (s.height/3)*1) );
473 sprite4->setPosition( Vec2( (s.width/5)*4, (s.height/3)*1) );
474 sprite5->setPosition( Vec2( (s.width/5)*1, (s.height/3)*2) );
475 sprite6->setPosition( Vec2( (s.width/5)*2, (s.height/3)*2) );
476 sprite7->setPosition( Vec2( (s.width/5)*3, (s.height/3)*2) );
477 sprite8->setPosition( Vec2( (s.width/5)*4, (s.height/3)*2) );
479 auto action = FadeIn::create(2);
480 auto action_back = action->reverse();
481 auto fade = RepeatForever::create( Sequence::create( action, action_back,
nullptr) );
483 auto tintred = TintBy::create(2, 0, -255, -255);
484 auto tintred_back = tintred->reverse();
485 auto red = RepeatForever::create( Sequence::create( tintred, tintred_back,
nullptr) );
487 auto tintgreen = TintBy::create(2, -255, 0, -255);
488 auto tintgreen_back = tintgreen->reverse();
489 auto green = RepeatForever::create( Sequence::create( tintgreen, tintgreen_back,
nullptr) );
491 auto tintblue = TintBy::create(2, -255, -255, 0);
492 auto tintblue_back = tintblue->reverse();
493 auto blue = RepeatForever::create( Sequence::create( tintblue, tintblue_back,
nullptr) );
496 sprite5->runAction(red);
497 sprite6->runAction(green);
498 sprite7->runAction(blue);
499 sprite8->runAction(fade);
520 auto sprite =
static_cast<Sprite*
>( batch->getChildByTag(
kTagSprite5) );
524 batch->removeChild(sprite,
false);
532 return "Testing SpriteBatchNode";
537 return "Color & Opacity";
551 auto s = Director::getInstance()->getWinSize();
553 float step = s.width/11;
556 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*0, 121*1, 85, 121));
557 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
561 for(
int i=5;i<10;i++)
563 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*0, 85, 121));
564 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
565 addChild(sprite, 14-i);
568 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*3, 121*0, 85, 121));
570 sprite->setPosition( Vec2(s.width/2, s.height/2 - 20) );
571 sprite->setScaleX( 6 );
572 sprite->setColor(Color3B::RED);
579 auto sprite =
static_cast<Sprite*
>( getChildByTag(
kTagSprite1) );
581 int z = sprite->getLocalZOrder();
590 reorderChild(sprite, z);
596 return "Testing Sprite";
616 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 1);
619 auto s = Director::getInstance()->getWinSize();
621 float step = s.width/11;
624 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*0, 121*1, 85, 121));
625 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
626 batch->addChild(sprite, i);
629 for(
int i=5;i<10;i++)
631 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*0, 85, 121));
632 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
633 batch->addChild(sprite, 14-i);
636 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*3, 121*0, 85, 121));
638 sprite->setPosition( Vec2(s.width/2, s.height/2 - 20) );
639 sprite->setScaleX( 6 );
640 sprite->setColor(Color3B::RED);
648 auto sprite =
static_cast<Sprite*
>(batch->getChildByTag(
kTagSprite1));
650 int z = sprite->getLocalZOrder();
659 batch->reorderChild(sprite, z);
664 return "Testing SpriteBatchNode";
682 auto asmtest = SpriteBatchNode::create(
"animations/ghosts.png");
684 for(
int i=0; i<10; i++)
686 auto s1 = Sprite::createWithTexture(asmtest->getTexture(), Rect(0.0f, 0.0f, 50.0f, 50.0f));
688 asmtest->addChild(s1, 10);
691 for(
int i=0; i<10; i++)
695 asmtest->reorderChild(
static_cast<Node*
>(a.at(i)), 9 );
699 ssize_t CC_UNUSED prev = -1;
701 auto& children = asmtest->getChildren();
703 for(
const auto &obj : children) {
704 auto child =
static_cast<Sprite*
>(obj);
706 ssize_t currentIndex = child->getAtlasIndex();
707 CCASSERT( prev == currentIndex-1,
"Child order failed");
713 auto& descendants = asmtest->getDescendants();
714 for(
const auto &sprite : descendants) {
715 ssize_t currentIndex = sprite->getAtlasIndex();
716 CCASSERT( prev == currentIndex-1,
"Child order failed");
724 return "Testing SpriteBatchNode";
729 return "reorder #1. Should not crash";
740 auto s = Director::getInstance()->getWinSize();
745 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 15);
748 auto sprite = Sprite::createWithTexture(batch->getTexture(),Rect(0, 0, 85, 121));
749 sprite->setPosition( Vec2(s.width/2, s.height/2) );
750 batch->addChild(sprite, 3);
751 batch->reorderChild(sprite, 1);
756 return "Testing SpriteBatchNode";
761 return "reorder issue #744. Should not crash";
772 Rect rcw(128,0,64,64);
773 rcw = CC_RECT_PIXELS_TO_POINTS(rcw);
774 auto sprite = Sprite::createWithTexture(
batchNode->getTexture(), rcw);
775 sprite->setScale(CC_CONTENT_SCALE_FACTOR());
780 rc1 = CC_RECT_PIXELS_TO_POINTS(rc1);
781 auto spriteShadow = Sprite::createWithTexture(
batchNode->getTexture(), rc1);
782 spriteShadow->setOpacity(128);
783 sprite->setScale(CC_CONTENT_SCALE_FACTOR());
784 sprite->addChild(spriteShadow, aZ, 3);
786 Rect rc2(64,0,64,64);
787 rc2 = CC_RECT_PIXELS_TO_POINTS(rc2);
788 auto spriteTop = Sprite::createWithTexture(
batchNode->getTexture(), rc2);
789 sprite->setScale(CC_CONTENT_SCALE_FACTOR());
790 sprite->addChild(spriteTop, aZ+2, 3);
797 unschedule(
"issue_766_key");
805 batchNode = SpriteBatchNode::create(
"Images/piece.png", 15);
809 sprite1->setPosition(Vec2(200.0f,160.0f));
812 sprite2->setPosition(Vec2(264.0f,160.0f));
815 sprite3->setPosition(Vec2(328.0f,160.0f));
822 return "Testing SpriteBatchNode";
827 return "reorder issue #766. In 2 seconds 1 sprite will be reordered";
837 auto s = Director::getInstance()->getWinSize();
839 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/ghosts.plist",
"animations/ghosts.png");
841 Sprite *l1, *l2a, *l2b, *l3a1, *l3a2, *l3b1, *l3b2;
846 aParent = SpriteBatchNode::create(
"animations/ghosts.png");
850 l1 = Sprite::createWithSpriteFrameName(
"father.gif");
851 l1->setPosition(Vec2( s.width/2, s.height/2));
853 auto l1Size = l1->getContentSize();
856 l2a = Sprite::createWithSpriteFrameName(
"sister1.gif");
857 l2a->setPosition(Vec2( -25 + l1Size.width/2, 0 + l1Size.height/2));
859 auto l2aSize = l2a->getContentSize();
863 l2b = Sprite::createWithSpriteFrameName(
"sister2.gif");
864 l2b->setPosition(Vec2( +25 + l1Size.width/2, 0 + l1Size.height/2));
866 auto l2bSize = l2a->getContentSize();
870 l3a1 = Sprite::createWithSpriteFrameName(
"child1.gif");
871 l3a1->setScale(0.65f);
872 l3a1->setPosition(Vec2(0+l2aSize.width/2,-50+l2aSize.height/2));
873 l2a->addChild(l3a1, -1);
876 l3a2 = Sprite::createWithSpriteFrameName(
"child1.gif");
877 l3a2->setScale(0.65f);
878 l3a2->setPosition(Vec2(0+l2aSize.width/2,+50+l2aSize.height/2));
879 l2a->addChild(l3a2, 1);
882 l3b1 = Sprite::createWithSpriteFrameName(
"child1.gif");
883 l3b1->setScale(0.65f);
884 l3b1->setPosition(Vec2(0+l2bSize.width/2,-50+l2bSize.height/2));
885 l2b->addChild(l3b1, -1);
888 l3b2 = Sprite::createWithSpriteFrameName(
"child1.gif");
889 l3b2->setScale(0.65f);
890 l3b2->setPosition(Vec2(0+l2bSize.width/2,+50+l2bSize.height/2));
891 l2b->addChild(l3b2, 1);
898 return "Testing SpriteBatchNode";
903 return "reorder issue #767. Should not crash";
908 auto spritebatch =
static_cast<SpriteBatchNode*
>( getChildByTag(
kTagSprite1) );
909 auto father =
static_cast<Sprite*
>( spritebatch->getChildByTag(
kTagSprite2) );
910 auto left =
static_cast<Sprite*
>( father->getChildByTag(
kTagSpriteLeft) );
911 auto right =
static_cast<Sprite*
>( father->getChildByTag(
kTagSpriteRight) );
915 if( left->getLocalZOrder() == 1 )
918 father->reorderChild(left, newZLeft);
919 father->reorderChild(right, -newZLeft);
932 Director::getInstance()->setProjection(Director::Projection::_3D);
937 Director::getInstance()->setProjection(Director::Projection::DEFAULT);
938 SpriteTestDemo::onExit();
969 auto s = Director::getInstance()->getWinSize();
970 float step = s.width/12;
972 auto node = Node::create();
974 node->setContentSize( Size(s.width,s.height) );
975 node->setAnchorPoint( Vec2::ANCHOR_MIDDLE);
976 node->setPosition( Vec2(s.width/2, s.height/2));
982 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*0, 121*1, 85, 121));
983 sprite->setPosition( Vec2((i+1)*step, s.height/2) );
984 sprite->setPositionZ( 10 + i*40 );
986 node->addChild(sprite, 0);
990 for(
int i=5;i<11;i++)
992 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*0, 85, 121));
993 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
994 sprite->setPositionZ( 10 + (10-i)*40 );
996 node->addChild(sprite, 0);
999 node->runAction( OrbitCamera::create(10, 1, 0, 0, 360, 0, 0) );
1004 return "Testing Sprite";
1009 return "openGL Z vertex";
1022 Director::getInstance()->setProjection(Director::Projection::_3D);
1027 Director::getInstance()->setProjection(Director::Projection::DEFAULT);
1028 SpriteTestDemo::onExit();
1055 auto s = Director::getInstance()->getWinSize();
1056 float step = s.width/12;
1060 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 1);
1062 batch->setContentSize( Size(s.width,s.height));
1063 batch->setAnchorPoint( Vec2::ANCHOR_MIDDLE);
1064 batch->setPosition( Vec2(s.width/2, s.height/2));
1069 for(
int i=0;i<5;i++)
1071 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*0, 121*1, 85, 121));
1072 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
1073 sprite->setPositionZ( 10 + i*40 );
1074 batch->addChild(sprite, 0);
1078 for(
int i=5;i<11;i++) {
1079 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*0, 85, 121));
1080 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
1081 sprite->setPositionZ( 10 + (10-i)*40 );
1082 batch->addChild(sprite, 0);
1085 batch->runAction(OrbitCamera::create(10, 1, 0, 0, 360, 0, 0) );
1090 return "Testing SpriteBatchNode";
1095 return "openGL Z vertex";
1106 auto s = Director::getInstance()->getWinSize();
1109 auto rotate = RotateBy::create(10, 360);
1110 auto action = RepeatForever::create(rotate);
1112 for(
int i=0;i<3;i++)
1114 auto sprite = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*i, 121*1, 85, 121) );
1115 sprite->setPosition( Vec2( s.width/4*(i+1), s.height/2) );
1117 auto point = Sprite::create(
"Images/r1.png");
1118 point->setScale( 0.25f );
1119 point->setPosition( sprite->getPosition() );
1120 addChild(point, 10);
1125 sprite->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
1128 sprite->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
1131 sprite->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
1135 point->setPosition( sprite->getPosition() );
1137 sprite->runAction( action->clone() );
1138 addChild(sprite, i);
1144 return "Testing Sprite";
1149 return "anchor point";
1161 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 1);
1164 auto s = Director::getInstance()->getWinSize();
1167 auto rotate = RotateBy::create(10, 360);
1168 auto action = RepeatForever::create(rotate);
1169 for(
int i=0;i<3;i++)
1171 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*i, 121*1, 85, 121));
1172 sprite->setPosition( Vec2( s.width/4*(i+1), s.height/2) );
1174 auto point = Sprite::create(
"Images/r1.png");
1175 point->setScale( 0.25f );
1176 point->setPosition( sprite->getPosition() );
1182 sprite->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
1185 sprite->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
1188 sprite->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
1192 point->setPosition( sprite->getPosition() );
1194 sprite->runAction( action->clone() );
1195 batch->addChild(sprite, i);
1201 return "Testing SpriteBatchNode";
1206 return "anchor point";
1218 auto screen = Director::getInstance()->getWinSize();
1220 auto rotate = RotateBy::create(10, 360);
1221 auto action = RepeatForever::create(rotate);
1222 char str[100] = {0};
1224 auto cache = SpriteFrameCache::getInstance();
1225 cache->addSpriteFramesWithFile(
"animations/grossini_anchors.plist");
1228 for(
int i=0;i<10;i++)
1230 sprintf(str,
"grossini_dance_%02d.png", i+1);
1231 sprite = Sprite::createWithSpriteFrameName(str);
1233 sprite->setPosition(Vec2(screen.width/6*(i%5+1), screen.height*2/3 - screen.height*(i/5)/3));
1235 auto point = Sprite::create(
"Images/r1.png");
1236 point->setScale( 0.1f );
1237 point->setPosition( sprite->getPosition() );
1238 addChild(point, 10);
1240 sprite->runAction( action->clone() );
1241 addChild(sprite, i);
1244 Vector<SpriteFrame*> animFrames(5);
1245 for(
int i = 9; i < 14; i++)
1247 sprintf(str,
"grossini_dance_%02d.png", i+1);
1248 animFrames.pushBack(cache->getSpriteFrameByName(str));
1250 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
1251 sprite->runAction(RepeatForever::create(Animate::create(animation)));
1257 SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(
"animations/grossini_anchors.plist");
1258 SpriteTestDemo::onExit();
1263 return "Testing SpriteFrame";
1268 return "anchor point";
1281 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 1);
1283 batch->setIgnoreAnchorPointForPosition(
true );
1285 auto s = Director::getInstance()->getWinSize();
1287 batch->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
1288 batch->setContentSize( Size(s.width, s.height) );
1292 auto rotate = RotateBy::create(5, 360);
1293 auto action = RepeatForever::create(rotate);
1296 auto rotate_back = rotate->reverse();
1297 auto rotate_seq = Sequence::create(rotate, rotate_back,
nullptr);
1298 auto rotate_forever = RepeatForever::create(rotate_seq);
1300 auto scale = ScaleBy::create(5, 1.5f);
1301 auto scale_back = scale->reverse();
1302 auto scale_seq = Sequence::create( scale, scale_back,
nullptr);
1303 auto scale_forever = RepeatForever::create(scale_seq);
1305 float step = s.width/4;
1307 for(
int i=0;i<3;i++)
1309 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(85*i, 121*1, 85, 121));
1310 sprite->setPosition( Vec2( (i+1)*step, s.height/2) );
1312 sprite->runAction( action->clone());
1313 batch->addChild(sprite, i);
1316 batch->runAction(scale_forever);
1317 batch->runAction(rotate_forever);
1322 return "SpriteBatchNode transformation";
1332 auto s = Director::getInstance()->getWinSize();
1334 auto sprite1 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*1, 85, 121));
1335 sprite1->setPosition( Vec2( s.width/2 - 100, s.height/2 ) );
1338 auto sprite2 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*1, 85, 121));
1339 sprite2->setPosition( Vec2( s.width/2 + 100, s.height/2 ) );
1347 auto sprite1 =
static_cast<Sprite*
>(getChildByTag(
kTagSprite1));
1348 auto sprite2 =
static_cast<Sprite*
>(getChildByTag(
kTagSprite2));
1350 bool x = sprite1->isFlippedX();
1351 bool y = sprite2->isFlippedY();
1353 CCLOG(
"Pre: %g", sprite1->getContentSize().height);
1354 sprite1->setFlippedX(!x);
1355 sprite2->setFlippedY(!y);
1356 CCLOG(
"Post: %g", sprite1->getContentSize().height);
1361 return "Testing Sprite";
1366 return "Flip X & Y";
1377 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 10);
1380 auto s = Director::getInstance()->getWinSize();
1382 auto sprite1 = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*1, 85, 121));
1383 sprite1->setPosition( Vec2( s.width/2 - 100, s.height/2 ) );
1386 auto sprite2 = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*1, 85, 121));
1387 sprite2->setPosition( Vec2( s.width/2 + 100, s.height/2 ) );
1396 auto sprite1 =
static_cast<Sprite*
>(batch->getChildByTag(
kTagSprite1));
1397 auto sprite2 =
static_cast<Sprite*
>(batch->getChildByTag(
kTagSprite2));
1399 bool x = sprite1->isFlippedX();
1400 bool y = sprite2->isFlippedY();
1402 CCLOG(
"Pre: %g", sprite1->getContentSize().height);
1403 sprite1->setFlippedX(!x);
1404 sprite2->setFlippedY(!y);
1405 CCLOG(
"Post: %g", sprite1->getContentSize().height);
1410 return "Testing SpriteBatchNode";
1415 return "Flip X & Y";
1427 auto s = Director::getInstance()->getWinSize();
1429 auto sprite1 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*1, 85, 121));
1430 sprite1->setPosition( Vec2( s.width/2 - 100, s.height/2 ) );
1433 auto sprite2 = Sprite::create(
"Images/grossini_dance_atlas.png", Rect(85*1, 121*1, 85, 121));
1434 sprite2->setPosition( Vec2( s.width/2 + 100, s.height/2 ) );
1437 auto scale = ScaleBy::create(2, 5);
1438 auto scale_back = scale->reverse();
1439 auto seq = Sequence::create( scale, scale_back,
nullptr);
1440 auto repeat = RepeatForever::create(seq);
1442 auto repeat2 = repeat->clone();
1444 sprite1->runAction(repeat);
1445 sprite2->runAction(repeat2);
1458 auto sprite =
static_cast<Sprite*
>( getChildByTag(
kTagSprite1) );
1459 sprite->getTexture()->setAliasTexParameters();
1465 auto sprite =
static_cast<Sprite*
>( getChildByTag(
kTagSprite1) );
1466 sprite->getTexture()->setAntiAliasTexParameters();
1467 SpriteTestDemo::onExit();
1472 return "Testing Sprite";
1477 return "AliasTexParameters()";
1489 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 10);
1492 auto s = Director::getInstance()->getWinSize();
1494 auto sprite1 = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*1, 85, 121));
1495 sprite1->setPosition( Vec2( s.width/2 - 100, s.height/2 ) );
1498 auto sprite2 = Sprite::createWithTexture(batch->getTexture(), Rect(85*1, 121*1, 85, 121));
1499 sprite2->setPosition( Vec2( s.width/2 + 100, s.height/2 ) );
1502 auto scale = ScaleBy::create(2, 5);
1503 auto scale_back = scale->reverse();
1504 auto seq = Sequence::create( scale, scale_back,
nullptr);
1505 auto repeat = RepeatForever::create(seq);
1507 auto repeat2 = repeat->clone();
1509 sprite1->runAction(repeat);
1510 sprite2->runAction(repeat2);
1517 batch->getTexture()->setAliasTexParameters();
1524 batch->getTexture()->setAntiAliasTexParameters();
1525 SpriteTestDemo::onExit();
1530 return "Testing SpriteBatchNode";
1535 return "AliasTexParameters()";
1547 auto listener = EventListenerTouchAllAtOnce::create();
1549 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
1551 auto node = Node::create();
1554 _texture1 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossini_dance_atlas.png");
1556 _texture2 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossini_dance_atlas-mono.png");
1561 for(
int i=0;i<30;i++)
1573 auto s = Director::getInstance()->getWinSize();
1575 auto p = Vec2( CCRANDOM_0_1() * s.width, CCRANDOM_0_1() * s.height);
1577 int idx = CCRANDOM_0_1() * 1400 / 100;
1578 int x = (idx%5) * 85;
1579 int y = (idx/5) * 121;
1583 auto sprite = Sprite::createWithTexture(
_texture1, Rect(x,y,85,121));
1584 node->addChild(sprite);
1586 sprite->setPosition( Vec2( p.x, p.y) );
1588 ActionInterval* action;
1589 float random = CCRANDOM_0_1();
1592 action = ScaleBy::create(3, 2);
1593 else if(random < 0.40)
1594 action = RotateBy::create(3, 360);
1595 else if( random < 0.60)
1596 action = Blink::create(1, 3);
1597 else if( random < 0.8 )
1598 action = TintBy::create(2, 0, -255, -255);
1600 action = FadeOut::create(2);
1602 auto action_back = action->reverse();
1603 auto seq = Sequence::create(action, action_back,
nullptr);
1605 sprite->runAction( RepeatForever::create(seq) );
1613 auto& children = node->getChildren();
1618 for(
const auto &obj : children) {
1619 sprite =
static_cast<Sprite*
>( obj );
1627 for(
const auto &obj : children) {
1628 sprite =
static_cast<Sprite*
>( obj );
1638 return "Testing Sprite";
1643 return "setTexture() (tap / touch the screen)";
1655 auto listener = EventListenerTouchAllAtOnce::create();
1657 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
1659 auto batch = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 50);
1663 _texture2 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossini_dance_atlas-mono.png");
1666 for(
int i=0;i<30;i++)
1678 auto s = Director::getInstance()->getWinSize();
1680 auto p = Vec2( CCRANDOM_0_1() * s.width, CCRANDOM_0_1() * s.height);
1684 int idx = CCRANDOM_0_1() * 1400 / 100;
1685 int x = (idx%5) * 85;
1686 int y = (idx/5) * 121;
1689 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(x,y,85,121));
1690 batch->addChild(sprite);
1692 sprite->setPosition( Vec2( p.x, p.y) );
1694 ActionInterval* action;
1695 float random = CCRANDOM_0_1();
1698 action = ScaleBy::create(3, 2);
1699 else if(random < 0.40)
1700 action = RotateBy::create(3, 360);
1701 else if( random < 0.60)
1702 action = Blink::create(1, 3);
1703 else if( random < 0.8 )
1704 action = TintBy::create(2, 0, -255, -255);
1706 action = FadeOut::create(2);
1707 auto action_back = action->reverse();
1708 auto seq = Sequence::create(action, action_back,
nullptr);
1710 sprite->runAction( RepeatForever::create(seq) );
1725 return "Testing SpriteBatchNode";
1730 return "setTexture() (tap / touch the screen)";
1743 auto s = Director::getInstance()->getWinSize();
1748 auto cache = SpriteFrameCache::getInstance();
1749 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
1750 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
1751 cache->addSpriteFramesWithFile(
"animations/grossini_blue.plist",
"animations/grossini_blue.png");
1756 _sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
1757 _sprite1->setPosition( Vec2( s.width/2-80, s.height/2) );
1759 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
1761 addChild(spritebatch);
1763 Vector<SpriteFrame*> animFrames(15);
1765 char str[100] = {0};
1766 for(
int i = 1; i < 15; i++)
1768 sprintf(str,
"grossini_dance_%02d.png", i);
1769 auto frame = cache->getSpriteFrameByName( str );
1770 animFrames.pushBack(frame);
1773 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
1774 _sprite1->runAction( RepeatForever::create( Animate::create(animation) ) );
1783 _sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
1784 _sprite2->setPosition( Vec2( s.width/2 + 80, s.height/2) );
1788 Vector<SpriteFrame*> moreFrames(20);
1789 for(
int i = 1; i < 15; i++)
1791 sprintf(str,
"grossini_dance_gray_%02d.png",i);
1792 auto frame = cache->getSpriteFrameByName(str);
1793 moreFrames.pushBack(frame);
1797 for(
int i = 1; i < 5; i++) {
1798 sprintf(str,
"grossini_blue_%02d.png",i);
1799 auto frame = cache->getSpriteFrameByName(str);
1800 moreFrames.pushBack(frame);
1804 moreFrames.pushBack(animFrames);
1805 auto animMixed = Animation::createWithSpriteFrames(moreFrames, 0.3f);
1808 _sprite2->runAction(RepeatForever::create( Animate::create(animMixed) ) );
1821 SpriteTestDemo::onExit();
1822 auto cache = SpriteFrameCache::getInstance();
1823 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
1824 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
1825 cache->removeSpriteFramesFromFile(
"animations/grossini_blue.plist");
1830 return "Sprite vs. SpriteBatchNode";
1835 return "Animation. Testing issue #792";
1840 unschedule(
"in_05_secs_key");
1886 auto s = Director::getInstance()->getWinSize();
1895 auto cache = SpriteFrameCache::getInstance();
1896 cache->addSpriteFramesWithFile(
"animations/grossini-aliases.plist",
"animations/grossini-aliases.png");
1912 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
1913 sprite->setPosition(Vec2(s.width * 0.5f, s.height * 0.5f));
1915 auto spriteBatch = SpriteBatchNode::create(
"animations/grossini-aliases.png");
1916 spriteBatch->addChild(sprite);
1917 addChild(spriteBatch);
1919 Vector<SpriteFrame*> animFrames(15);
1920 char str[100] = {0};
1921 for(
int i = 1; i < 15; i++)
1924 sprintf(str,
"dance_%02d", i);
1925 auto frame = cache->getSpriteFrameByName(str);
1926 animFrames.pushBack(frame);
1929 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
1931 sprite->runAction(RepeatForever::create(Animate::create(animation)));
1933 cache->reloadTexture(
"animations/grossini-aliases.plist");
1938 SpriteTestDemo::onExit();
1939 SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(
"animations/grossini-aliases.plist");
1944 return "SpriteFrame Alias Name";
1949 return "SpriteFrames are obtained using the alias name";
1960 auto s = Director::getInstance()->getWinSize();
1962 std::string plist_content = FileUtils::getInstance()->getStringFromFile(
sheetName() +
".plist");
1963 Data image_content = FileUtils::getInstance()->getDataFromFile(
sheetName() +
".png");
1965 Image* image =
new (std::nothrow) Image();
1966 image->initWithImageData((
const uint8_t*)image_content.getBytes(), image_content.getSize());
1967 Texture2D* texture =
new (std::nothrow) Texture2D();
1968 texture->initWithImage(image);
1969 texture->autorelease();
1971 CC_SAFE_RELEASE(image);
1973 auto cache = SpriteFrameCache::getInstance();
1974 cache->addSpriteFramesWithFileContent(plist_content, texture);
1979 Sprite * sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
1980 sprite->setPosition( Vec2( s.width/2, s.height/2) );
1983 Vector<SpriteFrame*> animFrames(15);
1985 char str[100] = {0};
1986 for(
int i = 1; i < 15; i++)
1988 sprintf(str,
"grossini_dance_%02d.png", i);
1989 auto frame = cache->getSpriteFrameByName( str );
1990 animFrames.pushBack(frame);
1993 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
1994 sprite->runAction( RepeatForever::create( Animate::create(animation) ) );
1999 SpriteTestDemo::onExit();
2001 std::string plist_content = FileUtils::getInstance()->getStringFromFile(
"animations/grossini.plist");
2003 SpriteFrameCache::getInstance()->removeSpriteFramesFromFileContent(plist_content);
2008 return "SpriteFrameCache load form file content";
2013 return "SpriteFrameCache load from plist file content";
2018 return "animations/grossini";
2029 return "SpriteFrameCache load polygon info from plist file";
2034 return "animations/grossini_polygon";
2046 auto s = Director::getInstance()->getWinSize();
2047 auto cache = SpriteFrameCache::getInstance();
2048 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
2049 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
2051 for(
int i=0;i<3;i++)
2056 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2057 sprite->setPosition(Vec2( s.width/4*(i+1), s.height/2));
2059 auto point = Sprite::create(
"Images/r1.png");
2060 point->setScale( 0.25f );
2061 point->setPosition( sprite->getPosition() );
2067 sprite->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
2070 sprite->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
2073 sprite->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
2077 point->setPosition( sprite->getPosition() );
2079 Vector<SpriteFrame*> animFrames(14);
2080 char str[100] = {0};
2081 for(
int i = 0; i < 14; i++)
2083 sprintf(str,
"grossini_dance_%02d.png",(i+1));
2084 auto frame = cache->getSpriteFrameByName(str);
2085 animFrames.pushBack(frame);
2088 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
2089 sprite->runAction(RepeatForever::create( Animate::create(animation) ) );
2090 sprite->runAction(RepeatForever::create(RotateBy::create(10, 360) ) );
2092 addChild(sprite, 0);
2100 SpriteTestDemo::onExit();
2101 auto cache = SpriteFrameCache::getInstance();
2102 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
2103 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
2108 return "Testing Sprite";
2113 return "offset + anchor + rotation";
2124 auto s = Director::getInstance()->getWinSize();
2126 auto cache = SpriteFrameCache::getInstance();
2127 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
2128 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
2130 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
2131 addChild(spritebatch);
2133 for(
int i=0;i<3;i++)
2138 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2139 sprite->setPosition( Vec2( s.width/4*(i+1), s.height/2));
2141 auto point = Sprite::create(
"Images/r1.png");
2142 point->setScale( 0.25f );
2143 point->setPosition( sprite->getPosition() );
2144 addChild(point, 200);
2149 sprite->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
2152 sprite->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
2155 sprite->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
2159 point->setPosition( sprite->getPosition() );
2161 Vector<SpriteFrame*> animFrames(14);
2162 char str[100] = {0};
2163 for(
int k = 0; k < 14; k++)
2165 sprintf(str,
"grossini_dance_%02d.png",(k+1));
2166 auto frame = cache->getSpriteFrameByName(str);
2167 animFrames.pushBack(frame);
2170 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
2171 sprite->runAction(RepeatForever::create( Animate::create(animation) ));
2172 sprite->runAction(RepeatForever::create(RotateBy::create(10, 360) ));
2174 spritebatch->addChild(sprite, i);
2181 SpriteTestDemo::onExit();
2182 auto cache = SpriteFrameCache::getInstance();
2183 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
2184 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
2189 return "Testing SpriteBatchNode";
2194 return "offset + anchor + rotation";
2206 auto s = Director::getInstance()->getWinSize();
2208 auto cache = SpriteFrameCache::getInstance();
2209 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
2210 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
2212 for(
int i=0;i<3;i++)
2217 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2218 sprite->setPosition( Vec2( s.width/4*(i+1), s.height/2) );
2220 auto point = Sprite::create(
"Images/r1.png");
2221 point->setScale( 0.25f );
2222 point->setPosition( sprite->getPosition() );
2228 sprite->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
2231 sprite->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
2234 sprite->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
2238 point->setPosition( sprite->getPosition() );
2240 Vector<SpriteFrame*> animFrames(14);
2241 char str[100] = {0};
2242 for(
int i = 0; i < 14; i++)
2244 sprintf(str,
"grossini_dance_%02d.png",(i+1));
2245 auto frame = cache->getSpriteFrameByName(str);
2246 animFrames.pushBack(frame);
2249 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
2250 sprite->runAction(RepeatForever::create( Animate::create(animation) ));
2252 auto scale = ScaleBy::create(2, 2);
2253 auto scale_back = scale->reverse();
2254 auto seq_scale = Sequence::create(scale, scale_back,
nullptr);
2255 sprite->runAction(RepeatForever::create(seq_scale));
2257 addChild(sprite, 0);
2263 SpriteTestDemo::onExit();
2264 auto cache = SpriteFrameCache::getInstance();
2265 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
2266 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
2271 return "Testing Sprite";
2276 return "offset + anchor + scale";
2286 auto s = Director::getInstance()->getWinSize();
2288 auto cache = SpriteFrameCache::getInstance();
2289 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
2290 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
2292 auto spritesheet = SpriteBatchNode::create(
"animations/grossini.png");
2293 addChild(spritesheet);
2295 for(
int i=0;i<3;i++)
2300 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2301 sprite->setPosition( Vec2( s.width/4*(i+1), s.height/2) );
2303 auto point = Sprite::create(
"Images/r1.png");
2304 point->setScale( 0.25f );
2305 point->setPosition( sprite->getPosition() );
2306 addChild(point, 200);
2310 sprite->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
2313 sprite->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
2316 sprite->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
2320 point->setPosition( sprite->getPosition() );
2322 Vector<SpriteFrame*> animFrames(14);
2323 char str[100] = {0};
2324 for(
int k = 0; k < 14; k++)
2326 sprintf(str,
"grossini_dance_%02d.png",(k+1));
2327 auto frame = cache->getSpriteFrameByName(str);
2328 animFrames.pushBack(frame);
2331 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
2332 sprite->runAction(RepeatForever::create( Animate::create(animation) ) );
2334 auto scale = ScaleBy::create(2, 2);
2335 auto scale_back = scale->reverse();
2336 auto seq_scale = Sequence::create(scale, scale_back,
nullptr);
2337 sprite->runAction(RepeatForever::create(seq_scale) );
2339 spritesheet->addChild(sprite, i);
2345 SpriteTestDemo::onExit();
2346 auto cache = SpriteFrameCache::getInstance();
2347 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
2348 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
2353 return "Testing SpriteBatchNode";
2358 return "offset + anchor + scale";
2370 auto s = Director::getInstance()->getWinSize();
2372 auto texture = Director::getInstance()->getTextureCache()->addImage(
"animations/dragon_animation.png");
2375 auto frame0 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*0, 132, 132));
2376 auto frame1 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*0, 132, 132));
2377 auto frame2 = SpriteFrame::createWithTexture(texture, Rect(132*2, 132*0, 132, 132));
2378 auto frame3 = SpriteFrame::createWithTexture(texture, Rect(132*3, 132*0, 132, 132));
2379 auto frame4 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*1, 132, 132));
2380 auto frame5 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*1, 132, 132));
2386 auto sprite = Sprite::createWithSpriteFrame(frame0);
2387 sprite->setPosition( Vec2( s.width/2-80, s.height/2) );
2390 Vector<SpriteFrame*> animFrames(6);
2391 animFrames.pushBack(frame0);
2392 animFrames.pushBack(frame1);
2393 animFrames.pushBack(frame2);
2394 animFrames.pushBack(frame3);
2395 animFrames.pushBack(frame4);
2396 animFrames.pushBack(frame5);
2398 auto animation = Animation::createWithSpriteFrames(animFrames, 0.2f);
2399 auto animate = Animate::create(animation);
2400 auto seq = Sequence::create(animate,
2401 FlipX::create(
true),
2403 FlipX::create(
false),
2406 sprite->runAction(RepeatForever::create( seq ) );
2411 SpriteTestDemo::onExit();
2412 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
2417 return "Sprite: Animation + flip";
2427 auto s = Director::getInstance()->getWinSize();
2430 auto parent1 = Node::create();
2431 auto parent2 = SpriteBatchNode::create(
"animations/grossini.png", 50);
2440 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2445 for(
int i = 0; i < 250; i++)
2447 int spriteIdx = CCRANDOM_0_1() * 14;
2449 sprintf(str,
"grossini_dance_%02d.png", (spriteIdx+1));
2450 auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(str);
2451 auto sprite = Sprite::createWithSpriteFrame(frame);
2452 parent1->addChild(sprite, i, i);
2456 if( CCRANDOM_0_1() < 0.2f )
2458 x = CCRANDOM_0_1() * s.width;
2459 y = CCRANDOM_0_1() * s.height;
2461 sprite->setPosition( Vec2(x,y) );
2463 auto action = RotateBy::create(4, 360);
2464 sprite->runAction( RepeatForever::create(action) );
2477 Vector<Node*> retArray(250);
2484 auto& p1Children = p1->getChildren();
2485 for(
const auto &node : p1Children) {
2486 retArray.pushBack(node);
2490 p1->removeAllChildrenWithCleanup(
false);
2492 for(
const auto &node : retArray) {
2493 p2->addChild(node, i, i);
2502 SpriteTestDemo::onExit();
2503 SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(
"animations/grossini.plist");
2508 return "HybridSprite* sprite Test";
2519 auto s = Director::getInstance()->getWinSize();
2522 auto batch = SpriteBatchNode::create(
"animations/grossini.png", 50);
2526 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2528 auto sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2529 sprite1->setPosition(Vec2( s.width/3, s.height/2));
2531 auto sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2532 sprite2->setPosition(Vec2(50.0f,50.0f));
2534 auto sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2535 sprite3->setPosition(Vec2(-50.0f,-50.0f));
2537 batch->addChild(sprite1);
2538 sprite1->addChild(sprite2);
2539 sprite1->addChild(sprite3);
2542 Vector<SpriteFrame*> animFrames(14);
2543 char str[100] = {0};
2544 for(
int i = 1; i < 15; i++)
2546 sprintf(str,
"grossini_dance_%02d.png",i);
2547 auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(str);
2548 animFrames.pushBack(frame);
2551 auto animation = Animation::createWithSpriteFrames(animFrames, 0.2f);
2552 sprite1->runAction(RepeatForever::create( Animate::create(animation) ) );
2555 auto action = MoveBy::create(2, Vec2(200.0f,0.0f));
2556 auto action_back = action->reverse();
2557 auto action_rot = RotateBy::create(2.0f, 360.0f);
2558 auto action_s = ScaleBy::create(2.0f, 2.0f);
2559 auto action_s_back = action_s->reverse();
2561 auto seq2 = action_rot->reverse();
2562 sprite2->runAction( RepeatForever::create(seq2) );
2564 sprite1->runAction( RepeatForever::create(action_rot));
2565 sprite1->runAction( RepeatForever::create(Sequence::create(action, action_back,
nullptr)) );
2566 sprite1->runAction( RepeatForever::create(Sequence::create(action_s, action_s_back,
nullptr)) );
2572 SpriteTestDemo::onExit();
2573 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
2578 return "SpriteBatchNode Grand Children";
2588 auto s = Director::getInstance()->getWinSize();
2591 SpriteBatchNode* batch;
2592 Sprite* sprite1, *sprite2, *sprite3;
2595 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2598 batch = SpriteBatchNode::create(
"animations/grossini.png", 50);
2601 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2602 sprite1->setPosition(Vec2( s.width/3, s.height/2));
2604 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2605 sprite2->setPosition(Vec2(20.0f,30.0f));
2607 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2608 sprite3->setPosition(Vec2(-20.0f,30.0f));
2610 batch->addChild(sprite1);
2611 sprite1->addChild(sprite2, 2);
2612 sprite1->addChild(sprite3, -2);
2615 batch = SpriteBatchNode::create(
"animations/grossini.png", 50);
2618 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2619 sprite1->setPosition(Vec2( 2*s.width/3, s.height/2));
2621 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2622 sprite2->setPosition(Vec2(20.0f,30.0f));
2624 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2625 sprite3->setPosition(Vec2(-20.0f,30.0f));
2627 batch->addChild(sprite1);
2628 sprite1->addChild(sprite2, -2);
2629 sprite1->addChild(sprite3, 2);
2632 batch = SpriteBatchNode::create(
"animations/grossini.png", 50);
2635 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2636 sprite1->setPosition(Vec2( s.width/2 - 90, s.height/4));
2638 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2639 sprite2->setPosition(Vec2( s.width/2 - 60,s.height/4));
2641 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2642 sprite3->setPosition(Vec2( s.width/2 - 30, s.height/4));
2644 batch->addChild(sprite1, 10);
2645 batch->addChild(sprite2, -10);
2646 batch->addChild(sprite3, -5);
2649 batch = SpriteBatchNode::create(
"animations/grossini.png", 50);
2652 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2653 sprite1->setPosition(Vec2( s.width/2 +30, s.height/4));
2655 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2656 sprite2->setPosition(Vec2( s.width/2 +60,s.height/4));
2658 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2659 sprite3->setPosition(Vec2( s.width/2 +90, s.height/4));
2661 batch->addChild(sprite1, -10);
2662 batch->addChild(sprite2, -5);
2663 batch->addChild(sprite3, -2);
2668 SpriteTestDemo::onExit();
2669 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
2674 return "SpriteBatchNode Children Z";
2685 auto s = Director::getInstance()->getWinSize();
2687 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2690 Sprite* sprite1, *sprite2, *sprite3;
2695 aParent = SpriteBatchNode::create(
"animations/grossini.png", 50);
2696 aParent->setPosition( Vec2(s.width/3, s.height/2) );
2697 addChild(aParent, 0);
2701 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2702 sprite1->setPosition(Vec2(0.0f,0.0f));
2704 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2705 sprite2->setPosition(Vec2(20.0f,30.0f));
2707 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2708 sprite3->setPosition(Vec2(-20.0f,30.0f));
2710 aParent->addChild(sprite1);
2711 sprite1->addChild(sprite2, -2);
2712 sprite1->addChild(sprite3, 2);
2714 sprite1->runAction(Blink::create(5.0f, 10.0f));
2719 aParent = Node::create();
2720 aParent->setPosition( Vec2(2*s.width/3, s.height/2) );
2721 addChild(aParent, 0);
2723 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2724 sprite1->setPosition(Vec2(0.0f,0.0f));
2726 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2727 sprite2->setPosition(Vec2(20.0f,30.0f));
2729 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2730 sprite3->setPosition(Vec2(-20.0f,30.0f));
2732 aParent->addChild(sprite1);
2733 sprite1->addChild(sprite2, -2);
2734 sprite1->addChild(sprite3, 2);
2736 sprite1->runAction(Blink::create(5.0f, 10.0f));
2741 SpriteTestDemo::onExit();
2742 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
2747 return "Sprite & SpriteBatchNode Visibility";
2757 auto s = Director::getInstance()->getWinSize();
2759 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2762 Sprite *sprite1, *sprite2, *sprite3;
2767 aParent = SpriteBatchNode::create(
"animations/grossini.png", 50);
2768 aParent->setPosition(Vec2(s.width/3, s.height/2));
2769 addChild(aParent, 0);
2771 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2772 sprite1->setPosition(Vec2(0.0f,0.0f));
2774 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2775 sprite2->setPosition(Vec2(20.0f,30.0f));
2777 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2778 sprite3->setPosition(Vec2(-20.0f,30.0f));
2781 sprite1->setVisible(
false);
2783 aParent->addChild(sprite1);
2784 sprite1->addChild(sprite2, -2);
2785 sprite1->addChild(sprite3, 2);
2790 aParent = Node::create();
2791 aParent->setPosition(Vec2(2*s.width/3, s.height/2));
2792 addChild(aParent, 0);
2794 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
2795 sprite1->setPosition(Vec2(0.0f,0.0f));
2797 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2798 sprite2->setPosition(Vec2(20.0f,30.0f));
2800 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2801 sprite3->setPosition(Vec2(-20.0f,30.0f));
2804 sprite1->setVisible(
false);
2806 aParent->addChild(sprite1);
2807 sprite1->addChild(sprite2, -2);
2808 sprite1->addChild(sprite3, 2);
2813 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
2818 return "Sprite & SpriteBatchNode Visibility";
2823 return "No sprites should be visible";
2833 auto s = Director::getInstance()->getWinSize();
2835 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2838 Sprite* sprite1, *sprite2, *sprite3, *sprite4, *point;
2844 aParent = Node::create();
2845 addChild(aParent, 0);
2848 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_08.png");
2849 sprite1->setPosition(Vec2(s.width/4,s.height/2));
2850 sprite1->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
2853 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2854 sprite2->setPosition(Vec2(20.0f,30.0f));
2856 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2857 sprite3->setPosition(Vec2(-20.0f,30.0f));
2859 sprite4 = Sprite::createWithSpriteFrameName(
"grossini_dance_04.png");
2860 sprite4->setPosition(Vec2(0.0f,0.0f));
2861 sprite4->setScale( 0.5f );
2864 aParent->addChild(sprite1);
2865 sprite1->addChild(sprite2, -2);
2866 sprite1->addChild(sprite3, -2);
2867 sprite1->addChild(sprite4, 3);
2869 point = Sprite::create(
"Images/r1.png");
2870 point->setScale( 0.25f );
2871 point->setPosition( sprite1->getPosition() );
2872 addChild(point, 10);
2876 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_08.png");
2877 sprite1->setPosition(Vec2(s.width/2,s.height/2));
2878 sprite1->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
2880 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2881 sprite2->setPosition(Vec2(20.0f,30.0f));
2883 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2884 sprite3->setPosition(Vec2(-20.0f,30.0f));
2886 sprite4 = Sprite::createWithSpriteFrameName(
"grossini_dance_04.png");
2887 sprite4->setPosition(Vec2(0.0f,0.0f));
2888 sprite4->setScale( 0.5f );
2890 aParent->addChild(sprite1);
2891 sprite1->addChild(sprite2, -2);
2892 sprite1->addChild(sprite3, -2);
2893 sprite1->addChild(sprite4, 3);
2895 point = Sprite::create(
"Images/r1.png");
2896 point->setScale( 0.25f );
2897 point->setPosition( sprite1->getPosition() );
2898 addChild(point, 10);
2902 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_08.png");
2903 sprite1->setPosition(Vec2(s.width/2+s.width/4,s.height/2));
2904 sprite1->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
2907 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2908 sprite2->setPosition(Vec2(20.0f,30.0f));
2910 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2911 sprite3->setPosition(Vec2(-20.0f,30.0f));
2913 sprite4 = Sprite::createWithSpriteFrameName(
"grossini_dance_04.png");
2914 sprite4->setPosition(Vec2(0.0f,0.0f));
2915 sprite4->setScale( 0.5f );
2917 aParent->addChild(sprite1);
2918 sprite1->addChild(sprite2, -2);
2919 sprite1->addChild(sprite3, -2);
2920 sprite1->addChild(sprite4, 3);
2922 point = Sprite::create(
"Images/r1.png");
2923 point->setScale( 0.25f );
2924 point->setPosition( sprite1->getPosition() );
2925 addChild(point, 10);
2930 SpriteTestDemo::onExit();
2931 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
2936 return "Testing Sprite";
2941 return "children + anchor point";
2951 auto s = Director::getInstance()->getWinSize();
2953 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
2956 Sprite* sprite1, *sprite2, *sprite3, *sprite4, *point;
2962 aParent = SpriteBatchNode::create(
"animations/grossini.png", 50);
2963 addChild(aParent, 0);
2966 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_08.png");
2967 sprite1->setPosition(Vec2(s.width/4,s.height/2));
2968 sprite1->setAnchorPoint( Vec2::ANCHOR_BOTTOM_LEFT );
2970 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2971 sprite2->setPosition(Vec2(20.0f,30.0f));
2973 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
2974 sprite3->setPosition(Vec2(-20.0f,30.0f));
2976 sprite4 = Sprite::createWithSpriteFrameName(
"grossini_dance_04.png");
2977 sprite4->setPosition(Vec2(0.0f,0.0f));
2978 sprite4->setScale( 0.5f );
2980 aParent->addChild(sprite1);
2981 sprite1->addChild(sprite2, -2);
2982 sprite1->addChild(sprite3, -2);
2983 sprite1->addChild(sprite4, 3);
2985 point = Sprite::create(
"Images/r1.png");
2986 point->setScale( 0.25f );
2987 point->setPosition( sprite1->getPosition() );
2988 addChild(point, 10);
2992 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_08.png");
2993 sprite1->setPosition(Vec2(s.width/2,s.height/2));
2994 sprite1->setAnchorPoint( Vec2::ANCHOR_MIDDLE );
2996 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
2997 sprite2->setPosition(Vec2(20.0f,30.0f));
2999 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
3000 sprite3->setPosition(Vec2(-20.0f,30.0f));
3002 sprite4 = Sprite::createWithSpriteFrameName(
"grossini_dance_04.png");
3003 sprite4->setPosition(Vec2(0.0f,0.0f));
3004 sprite4->setScale( 0.5f );
3006 aParent->addChild(sprite1);
3007 sprite1->addChild(sprite2, -2);
3008 sprite1->addChild(sprite3, -2);
3009 sprite1->addChild(sprite4, 3);
3011 point = Sprite::create(
"Images/r1.png");
3012 point->setScale( 0.25f );
3013 point->setPosition( sprite1->getPosition() );
3014 addChild(point, 10);
3018 sprite1 = Sprite::createWithSpriteFrameName(
"grossini_dance_08.png");
3019 sprite1->setPosition(Vec2(s.width/2+s.width/4,s.height/2));
3020 sprite1->setAnchorPoint( Vec2::ANCHOR_TOP_RIGHT );
3022 sprite2 = Sprite::createWithSpriteFrameName(
"grossini_dance_02.png");
3023 sprite2->setPosition(Vec2(20.0f,30.0f));
3025 sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_03.png");
3026 sprite3->setPosition(Vec2(-20.0f,30.0f));
3028 sprite4 = Sprite::createWithSpriteFrameName(
"grossini_dance_04.png");
3029 sprite4->setPosition(Vec2(0.0f,0.0f));
3030 sprite4->setScale( 0.5f );
3032 aParent->addChild(sprite1);
3033 sprite1->addChild(sprite2, -2);
3034 sprite1->addChild(sprite3, -2);
3035 sprite1->addChild(sprite4, 3);
3037 point = Sprite::create(
"Images/r1.png");
3038 point->setScale( 0.25f );
3039 point->setPosition( sprite1->getPosition() );
3040 addChild(point, 10);
3045 SpriteTestDemo::onExit();
3046 SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
3051 return "Testing SpriteBatchNode";
3056 return "children + anchor point";
3067 auto s = Director::getInstance()->getWinSize();
3069 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
3072 Sprite* sprite1, *sprite2;
3073 auto rot = RotateBy::create(10, 360);
3074 auto seq = RepeatForever::create(rot);
3080 aParent = Node::create();
3081 sprite1 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
3082 sprite1->setPosition( Vec2( s.width/4, s.height/4) );
3083 sprite1->setScaleX( -0.5f );
3084 sprite1->setScaleY( 2.0f );
3085 sprite1->runAction(seq);
3088 sprite2 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
3089 sprite2->setPosition( Vec2( 50,0) );
3092 aParent->addChild(sprite1);
3093 sprite1->addChild(sprite2);
3101 aParent = SpriteBatchNode::create(
"animations/grossini_family.png");
3102 sprite1 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
3103 sprite1->setPosition( Vec2( 3*s.width/4, s.height/4) );
3104 sprite1->setScaleX( -0.5f );
3105 sprite1->setScaleY( 2.0f );
3106 sprite1->runAction( seq->clone() );
3108 sprite2 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
3109 sprite2->setPosition( Vec2( 50,0) );
3112 aParent->addChild(sprite1);
3113 sprite1->addChild(sprite2);
3121 aParent = Node::create();
3122 sprite1 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
3123 sprite1->setPosition( Vec2( s.width/4, 2*s.height/3) );
3124 sprite1->setScaleX( 1.5f );
3125 sprite1->setScaleY( -0.5f );
3126 sprite1->runAction( seq->clone() );
3128 sprite2 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
3129 sprite2->setPosition( Vec2( 50,0) );
3132 aParent->addChild(sprite1);
3133 sprite1->addChild(sprite2);
3140 aParent = SpriteBatchNode::create(
"animations/grossini_family.png");
3141 sprite1 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
3142 sprite1->setPosition( Vec2( 3*s.width/4, 2*s.height/3) );
3143 sprite1->setScaleX( 1.5f );
3144 sprite1->setScaleY( -0.5f);
3145 sprite1->runAction( seq->clone() );
3147 sprite2 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
3148 sprite2->setPosition( Vec2( 50,0) );
3151 aParent->addChild(sprite1);
3152 sprite1->addChild(sprite2);
3158 return "Testing Sprite / SpriteBatchNode";
3163 return "child + scale + rot";
3173 auto s = Director::getInstance()->getWinSize();
3175 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/ghosts.plist");
3178 Sprite *l1, *l2a, *l2b, *l3a1, *l3a2, *l3b1, *l3b2;
3179 auto rot = RotateBy::create(10, 360);
3180 auto seq = RepeatForever::create(rot);
3182 auto rot_back = rot->reverse();
3183 auto rot_back_fe = RepeatForever::create(rot_back);
3189 aParent = Node::create();
3193 l1 = Sprite::createWithSpriteFrameName(
"father.gif");
3194 l1->setPosition( Vec2( s.width/2, s.height/2) );
3195 l1->runAction( seq->clone() );
3196 aParent->addChild(l1);
3197 auto l1Size = l1->getContentSize();
3200 l2a = Sprite::createWithSpriteFrameName(
"sister1.gif");
3201 l2a->setPosition( Vec2( -50 + l1Size.width/2, 0 + l1Size.height/2) );
3202 l2a->runAction( rot_back_fe->clone() );
3204 auto l2aSize = l2a->getContentSize();
3208 l2b = Sprite::createWithSpriteFrameName(
"sister2.gif");
3209 l2b->setPosition( Vec2( +50 + l1Size.width/2, 0 + l1Size.height/2) );
3210 l2b->runAction( rot_back_fe->clone() );
3212 auto l2bSize = l2a->getContentSize();
3216 l3a1 = Sprite::createWithSpriteFrameName(
"child1.gif");
3217 l3a1->setScale( 0.45f );
3218 l3a1->setPosition( Vec2(0+l2aSize.width/2,-100+l2aSize.height/2) );
3219 l2a->addChild(l3a1);
3222 l3a2 = Sprite::createWithSpriteFrameName(
"child1.gif");
3223 l3a2->setScale( 0.45f );
3224 l3a1->setPosition( Vec2(0+l2aSize.width/2,+100+l2aSize.height/2) );
3225 l2a->addChild(l3a2);
3228 l3b1 = Sprite::createWithSpriteFrameName(
"child1.gif");
3229 l3b1->setScale( 0.45f);
3230 l3b1->setFlippedY(
true );
3231 l3b1->setPosition( Vec2(0+l2bSize.width/2,-100+l2bSize.height/2) );
3232 l2b->addChild(l3b1);
3235 l3b2 = Sprite::createWithSpriteFrameName(
"child1.gif");
3236 l3b2->setScale( 0.45f );
3237 l3b2->setFlippedY(
true );
3238 l3b1->setPosition( Vec2(0+l2bSize.width/2,+100+l2bSize.height/2) );
3239 l2b->addChild(l3b2);
3244 return "Testing Sprite";
3249 return "multiple levels of children";
3261 auto s = Director::getInstance()->getWinSize();
3263 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/ghosts.plist");
3265 SpriteBatchNode *aParent;
3266 Sprite *l1, *l2a, *l2b, *l3a1, *l3a2, *l3b1, *l3b2;
3267 auto rot = RotateBy::create(10, 360);
3268 auto seq = RepeatForever::create(rot);
3270 auto rot_back = rot->reverse();
3271 auto rot_back_fe = RepeatForever::create(rot_back);
3277 aParent = SpriteBatchNode::create(
"animations/ghosts.png");
3283 l1 = Sprite::createWithSpriteFrameName(
"father.gif");
3284 l1->setPosition( Vec2( s.width/2, s.height/2) );
3285 l1->runAction( seq->clone() );
3286 aParent->addChild(l1);
3287 auto l1Size = l1->getContentSize();
3290 l2a = Sprite::createWithSpriteFrameName(
"sister1.gif");
3291 l2a->setPosition( Vec2( -50 + l1Size.width/2, 0 + l1Size.height/2) );
3292 l2a->runAction( rot_back_fe->clone() );
3294 auto l2aSize = l2a->getContentSize();
3298 l2b = Sprite::createWithSpriteFrameName(
"sister2.gif");
3299 l2b->setPosition( Vec2( +50 + l1Size.width/2, 0 + l1Size.height/2) );
3300 l2b->runAction( rot_back_fe->clone() );
3302 auto l2bSize = l2a->getContentSize();
3306 l3a1 = Sprite::createWithSpriteFrameName(
"child1.gif");
3307 l3a1->setScale( 0.45f );
3308 l3a1->setPosition( Vec2(0+l2aSize.width/2,-100+l2aSize.height/2) );
3309 l2a->addChild(l3a1);
3312 l3a2 = Sprite::createWithSpriteFrameName(
"child1.gif");
3313 l3a2->setScale( 0.45f );
3314 l3a1->setPosition( Vec2(0+l2aSize.width/2,+100+l2aSize.height/2) );
3315 l2a->addChild(l3a2);
3318 l3b1 = Sprite::createWithSpriteFrameName(
"child1.gif");
3319 l3b1->setScale( 0.45f );
3320 l3b1->setFlippedY(
true );
3321 l3b1->setPosition( Vec2(0+l2bSize.width/2,-100+l2bSize.height/2) );
3322 l2b->addChild(l3b1);
3325 l3b2 = Sprite::createWithSpriteFrameName(
"child1.gif");
3326 l3b2->setScale( 0.45f );
3327 l3b2->setFlippedY(
true );
3328 l3b1->setPosition( Vec2(0+l2bSize.width/2,+100+l2bSize.height/2) );
3329 l2b->addChild(l3b2);
3335 return "Testing SpriteBatchNode";
3340 return "multiple levels of children";
3351 auto s = Director::getInstance()->getWinSize();
3353 auto cache = SpriteFrameCache::getInstance();
3354 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
3355 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
3357 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
3358 addChild(spritebatch);
3360 for(
int i=0;i<2;i++) {
3361 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3362 sprite->setPosition(Vec2( s.width/4*(i+1), s.height/2));
3365 auto skewX = SkewBy::create(2, 45, 0);
3366 auto skewX_back = skewX->reverse();
3367 auto skewY = SkewBy::create(2, 0, 45);
3368 auto skewY_back = skewY->reverse();
3372 sprite->setScale(-1.0f);
3375 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
3376 sprite->runAction(RepeatForever::create(seq_skew));
3378 auto child1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3379 child1->setPosition(Vec2(sprite->getContentSize().width / 2.0f, sprite->getContentSize().height / 2.0f));
3381 child1->setScale(0.8f);
3383 sprite->addChild(child1);
3385 spritebatch->addChild(sprite, i);
3391 auto cache = SpriteFrameCache::getInstance();
3392 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
3393 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
3398 return "Testing SpriteBatchNode";
3403 return "skew + negative scale with children";
3410 auto s = Director::getInstance()->getWinSize();
3412 auto cache = SpriteFrameCache::getInstance();
3413 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
3414 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
3416 auto parent = Node::create();
3419 for(
int i=0;i<2;i++) {
3420 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3421 sprite->setPosition(Vec2( s.width/4*(i+1), s.height/2));
3424 auto skewX = SkewBy::create(2, 45, 0);
3425 auto skewX_back = skewX->reverse();
3426 auto skewY = SkewBy::create(2, 0, 45);
3427 auto skewY_back = skewY->reverse();
3431 sprite->setScale(-1.0f);
3434 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
3435 sprite->runAction(RepeatForever::create(seq_skew));
3437 auto child1 = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3438 child1->setPosition(Vec2(sprite->getContentSize().width / 2.0f, sprite->getContentSize().height / 2.0f));
3440 sprite->addChild(child1);
3442 child1->setScale(0.8f);
3444 parent->addChild(sprite, i);
3450 auto cache = SpriteFrameCache::getInstance();
3451 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
3452 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
3457 return "Testing Sprite";
3462 return "skew + negative scale with children";
3473 auto s = Director::getInstance()->getWinSize();
3475 Sprite* sprite =
nullptr;
3479 sprite = Sprite::create();
3480 sprite->setTextureRect( Rect(0, 0, 300,300) );
3481 sprite->setColor(Color3B::RED);
3482 sprite->setOpacity(128);
3483 sprite->setPosition(Vec2(3*s.width/4, s.height/2));
3484 addChild(sprite, 100);
3486 sprite = Sprite::create();
3487 sprite->setTextureRect(Rect(0.0f, 0.0f, 300.0f,300.0f));
3488 sprite->setColor(Color3B::BLUE);
3489 sprite->setOpacity(128);
3490 sprite->setPosition(Vec2(1*s.width/4, s.height/2));
3491 addChild(sprite, 100);
3496 return "Sprite without texture";
3501 return "opacity and color should work";
3511 auto sprite = MySprite1::create();
3512 sprite->setSpriteFrame(spriteFrameName);
3525 sprite ->setTexture(name);
3537 auto s = Director::getInstance()->getWinSize();
3539 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/ghosts.plist");
3540 auto aParent = SpriteBatchNode::create(
"animations/ghosts.png");
3544 sprite->setPosition(Vec2( s.width/4*1, s.height/2));
3545 aParent->addChild(sprite);
3551 sprite2->setPosition(Vec2(s.width/4*3, s.height/2));
3556 return "Sprite subclass";
3561 return "Testing initWithTexture:rect method";
3571 auto frameCache = SpriteFrameCache::getInstance();
3572 frameCache->addSpriteFramesWithFile(
"animations/grossini.plist");
3573 frameCache->addSpriteFramesWithFile(
"animations/grossini_gray.plist");
3574 frameCache->addSpriteFramesWithFile(
"animations/grossini_blue.plist");
3579 Vector<SpriteFrame*> animFrames(15);
3580 char str[100] = {0};
3581 for(
int i = 1; i < 15; i++)
3583 sprintf(str,
"grossini_dance_%02d.png",i);
3584 auto frame = frameCache->getSpriteFrameByName(str);
3585 animFrames.pushBack(frame);
3588 auto animation = Animation::createWithSpriteFrames(animFrames, 0.2f);
3591 AnimationCache::getInstance()->addAnimation(animation,
"dance");
3598 for(
int i = 1; i < 15; i++)
3600 sprintf(str,
"grossini_dance_gray_%02d.png",i);
3601 auto frame = frameCache->getSpriteFrameByName(str);
3602 animFrames.pushBack(frame);
3605 animation = Animation::createWithSpriteFrames(animFrames, 0.2f);
3608 AnimationCache::getInstance()->addAnimation(animation,
"dance_gray");
3615 for(
int i = 1; i < 4; i++)
3617 sprintf(str,
"grossini_blue_%02d.png",i);
3618 auto frame = frameCache->getSpriteFrameByName(str);
3619 animFrames.pushBack(frame);
3622 animation = Animation::createWithSpriteFrames(animFrames, 0.2f);
3625 AnimationCache::getInstance()->addAnimation(animation,
"dance_blue");
3628 auto animCache = AnimationCache::getInstance();
3630 auto normal = animCache->getAnimation(
"dance");
3631 normal->setRestoreOriginalFrame(
true);
3632 auto dance_grey = animCache->getAnimation(
"dance_gray");
3633 dance_grey->setRestoreOriginalFrame(
true);
3634 auto dance_blue = animCache->getAnimation(
"dance_blue");
3635 dance_blue->setRestoreOriginalFrame(
true);
3637 auto animN = Animate::create(normal);
3638 auto animG = Animate::create(dance_grey);
3639 auto animB = Animate::create(dance_blue);
3641 auto seq = Sequence::create(animN, animG, animB,
nullptr);
3644 auto grossini = Sprite::create();
3645 auto frame = frameCache->getSpriteFrameByName(
"grossini_dance_01.png");
3646 grossini->setSpriteFrame(frame);
3648 auto winSize = Director::getInstance()->getWinSize();
3649 grossini->setPosition(Vec2(winSize.width/2, winSize.height/2));
3653 grossini->runAction(seq);
3658 auto frameCache = SpriteFrameCache::getInstance();
3659 frameCache->removeSpriteFramesFromFile(
"animations/grossini.plist");
3660 frameCache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
3661 frameCache->removeSpriteFramesFromFile(
"animations/grossini_blue.plist");
3666 return "AnimationCache";
3671 return "Sprite should be animated";
3679 auto frameCache = SpriteFrameCache::getInstance();
3680 frameCache->addSpriteFramesWithFile(
"animations/grossini.plist");
3681 frameCache->addSpriteFramesWithFile(
"animations/grossini_gray.plist");
3682 frameCache->addSpriteFramesWithFile(
"animations/grossini_blue.plist");
3686 AnimationCache::destroyInstance();
3688 auto animCache = AnimationCache::getInstance();
3691 animCache->addAnimationsWithFile(
"animations/animations.plist");
3694 auto normal = animCache->getAnimation(
"dance_1");
3695 normal->setRestoreOriginalFrame(
true);
3696 auto dance_grey = animCache->getAnimation(
"dance_2");
3697 dance_grey->setRestoreOriginalFrame(
true);
3698 auto dance_blue = animCache->getAnimation(
"dance_3");
3699 dance_blue->setRestoreOriginalFrame(
true);
3701 auto animN = Animate::create(normal);
3702 auto animG = Animate::create(dance_grey);
3703 auto animB = Animate::create(dance_blue);
3705 auto seq = Sequence::create(animN, animG, animB,
nullptr);
3708 auto grossini = Sprite::create();
3710 auto frame = frameCache->getSpriteFrameByName(
"grossini_dance_01.png");
3711 grossini->setSpriteFrame(frame);
3713 auto winSize = Director::getInstance()->getWinSize();
3715 grossini->setPosition(Vec2(winSize.width/2, winSize.height/2));
3721 grossini->runAction(seq);
3726 auto frameCache = SpriteFrameCache::getInstance();
3727 frameCache->removeSpriteFramesFromFile(
"animations/grossini.plist");
3728 frameCache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
3729 frameCache->removeSpriteFramesFromFile(
"animations/grossini_blue.plist");
3734 return "AnimationCache - Load file";
3739 return "Sprite should be animated";
3746 auto bn = SpriteBatchNode::create(
"Images/grossini_dance_atlas.png", 15);
3748 auto s1 = Sprite::createWithTexture(bn->getTexture(), Rect(0.0f, 0.0f, 57.0f, 57.0f));
3749 auto s2 = Sprite::createWithTexture(bn->getTexture(), Rect(0.0f, 0.0f, 57.0f, 57.0f));
3750 auto s3 = Sprite::createWithTexture(bn->getTexture(), Rect(0.0f, 0.0f, 57.0f, 57.0f));
3752 s1->setColor(Color3B(255, 0, 0));
3753 s2->setColor(Color3B(0, 255, 0));
3754 s3->setColor(Color3B(0, 0, 255));
3756 s1->setPosition(Vec2(20.0f,200.0f));
3757 s2->setPosition(Vec2(100.0f,0.0f));
3758 s3->setPosition(Vec2(100.0f,0.0f));
3760 bn->setPosition(Vec2(0.0f,0.0f));
3772 return "SpriteBatch - Bug 1217";
3777 return "Adding big family to spritebatch. You shall see 3 heads";
3785 auto s = Director::getInstance()->getWinSize();
3787 auto cache = SpriteFrameCache::getInstance();
3788 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
3789 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
3791 for (
int i = 0; i < 3; i++)
3796 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3797 sprite->setPosition(Vec2(s.width / 4 * (i + 1), s.height / 2));
3799 auto point = Sprite::create(
"Images/r1.png");
3800 point->setScale(0.25f);
3801 point->setPosition(sprite->getPosition());
3807 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
3810 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
3813 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
3817 point->setPosition(sprite->getPosition());
3819 Vector<SpriteFrame*> animFrames(14);
3821 for (
int j = 0; j < 14; j++)
3823 sprintf(tmp,
"grossini_dance_%02d.png", j + 1);
3824 auto frame = cache->getSpriteFrameByName(tmp);
3825 animFrames.pushBack(frame);
3828 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
3829 sprite->runAction(RepeatForever::create(Animate::create(animation)));
3831 auto skewX = SkewBy::create(2, 45, 0);
3832 auto skewX_back = skewX->reverse();
3833 auto skewY = SkewBy::create(2, 0, 45);
3834 auto skewY_back = skewY->reverse();
3836 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
3837 sprite->runAction(RepeatForever::create(seq_skew));
3839 addChild(sprite, 0);
3845 auto cache = SpriteFrameCache::getInstance();
3846 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
3847 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
3852 return "Testing Sprite";
3857 return "offset + anchor + skew";
3865 auto s = Director::getInstance()->getWinSize();
3867 auto cache = SpriteFrameCache::getInstance();
3868 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
3869 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
3871 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
3872 addChild(spritebatch);
3874 for (
int i = 0; i < 3; i++)
3879 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3880 sprite->setPosition(Vec2(s.width / 4 * (i + 1), s.height / 2));
3882 auto point = Sprite::create(
"Images/r1.png");
3883 point->setScale(0.25f);
3884 point->setPosition(sprite->getPosition());
3885 addChild(point, 200);
3890 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
3893 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
3896 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT );
3900 point->setPosition(sprite->getPosition());
3902 Vector<SpriteFrame*> animFrames(14);
3904 for (
int j = 0; j < 14; j++)
3906 sprintf(tmp,
"grossini_dance_%02d.png", j + 1);
3907 auto frame = cache->getSpriteFrameByName(tmp);
3908 animFrames.pushBack(frame);
3911 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
3912 sprite->runAction(RepeatForever::create(Animate::create(animation)));
3914 auto skewX = SkewBy::create(2, 45, 0);
3915 auto skewX_back = skewX->reverse();
3916 auto skewY = SkewBy::create(2, 0, 45);
3917 auto skewY_back = skewY->reverse();
3919 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
3920 sprite->runAction(RepeatForever::create(seq_skew));
3922 spritebatch->addChild(sprite, i);
3928 auto cache = SpriteFrameCache::getInstance();
3929 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
3930 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
3935 return "Testing SpriteBatchNode";
3940 return "offset + anchor + skew";
3948 auto s = Director::getInstance()->getWinSize();
3950 auto cache = SpriteFrameCache::getInstance();
3951 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
3952 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
3954 for (
int i = 0; i < 3; i++)
3959 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
3960 sprite->setPosition(Vec2(s.width / 4 * (i + 1), s.height / 2));
3962 auto point = Sprite::create(
"Images/r1.png");
3963 point->setScale(0.25f);
3964 point->setPosition(sprite->getPosition());
3970 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
3973 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
3976 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT );
3980 point->setPosition(sprite->getPosition());
3982 Vector<SpriteFrame*> animFrames(14);
3984 for (
int j = 0; j < 14; j++)
3986 sprintf(tmp,
"grossini_dance_%02d.png", j + 1);
3987 auto frame = cache->getSpriteFrameByName(tmp);
3988 animFrames.pushBack(frame);
3991 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
3992 sprite->runAction(RepeatForever::create(Animate::create(animation)));
3995 auto skewX = SkewBy::create(2, 45, 0);
3996 auto skewX_back = skewX->reverse();
3997 auto skewY = SkewBy::create(2, 0, 45);
3998 auto skewY_back = skewY->reverse();
4000 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4001 sprite->runAction(RepeatForever::create(seq_skew));
4004 auto scale = ScaleBy::create(2, 2);
4005 auto scale_back = scale->reverse();
4006 auto seq_scale = Sequence::create(scale, scale_back,
nullptr);
4007 sprite->runAction(RepeatForever::create(seq_scale));
4009 addChild(sprite, 0);
4015 auto cache = SpriteFrameCache::getInstance();
4016 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4017 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4022 return "Testing Sprite";
4027 return "anchor + skew + scale";
4034 auto s = Director::getInstance()->getWinSize();
4036 auto cache = SpriteFrameCache::getInstance();
4037 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4038 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4040 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
4041 addChild(spritebatch);
4043 for (
int i = 0; i < 3; i++)
4048 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4049 sprite->setPosition(Vec2(s.width / 4 * (i + 1), s.height / 2));
4051 auto point = Sprite::create(
"Images/r1.png");
4052 point->setScale(0.25f);
4053 point->setPosition(sprite->getPosition());
4054 addChild(point, 200);
4059 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4062 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4065 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT );
4069 point->setPosition(sprite->getPosition());
4071 Vector<SpriteFrame*> animFrames(14);
4073 for (
int j = 0; j < 14; j++)
4075 sprintf(tmp,
"grossini_dance_%02d.png", j + 1);
4076 auto frame = cache->getSpriteFrameByName(tmp);
4077 animFrames.pushBack(frame);
4080 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4081 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4084 auto skewX = SkewBy::create(2, 45, 0);
4085 auto skewX_back = skewX->reverse();
4086 auto skewY = SkewBy::create(2, 0, 45);
4087 auto skewY_back = skewY->reverse();
4089 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4090 sprite->runAction(RepeatForever::create(seq_skew));
4093 auto scale = ScaleBy::create(2, 2);
4094 auto scale_back = scale->reverse();
4095 auto seq_scale = Sequence::create(scale, scale_back,
nullptr);
4096 sprite->runAction(RepeatForever::create(seq_scale));
4098 spritebatch->addChild(sprite, i);
4104 auto cache = SpriteFrameCache::getInstance();
4105 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4106 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4111 return "Testing SpriteBatchNode";
4116 return "anchor + skew + scale";
4125 auto s = Director::getInstance()->getWinSize();
4127 auto cache = SpriteFrameCache::getInstance();
4128 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4129 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4131 for (
int i = 0; i < 3; i++)
4136 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4137 sprite->setPosition(Vec2(s.width / 4 * (i + 1), s.height / 2));
4139 auto point = Sprite::create(
"Images/r1.png");
4140 point->setScale(0.25f);
4141 point->setPosition(sprite->getPosition());
4147 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4150 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4153 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT );
4157 point->setPosition(sprite->getPosition());
4159 Vector<SpriteFrame*> animFrames(14);
4161 for (
int j = 0; j < 14; j++)
4163 sprintf(tmp,
"grossini_dance_%02d.png", i + 1);
4164 auto frame = cache->getSpriteFrameByName(tmp);
4165 animFrames.pushBack(frame);
4168 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4169 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4171 auto flip = FlipY::create(
true);
4172 auto flip_back = FlipY::create(
false);
4173 auto delay = DelayTime::create(1);
4174 auto seq = Sequence::create(delay, flip, delay->clone(), flip_back,
nullptr);
4175 sprite->runAction(RepeatForever::create(seq));
4177 addChild(sprite, 0);
4183 auto cache = SpriteFrameCache::getInstance();
4184 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4185 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4190 return "Testing Sprite";
4195 return "issue #1078: offset + anchor + flip";
4204 auto s = Director::getInstance()->getWinSize();
4206 auto cache = SpriteFrameCache::getInstance();
4207 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4208 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4210 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
4211 addChild(spritebatch);
4213 for (
int i = 0; i < 3; i++)
4218 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4219 sprite->setPosition(Vec2(s.width / 4 * (i + 1), s.height / 2));
4221 auto point = Sprite::create(
"Images/r1.png");
4222 point->setScale(0.25f);
4223 point->setPosition(sprite->getPosition());
4224 addChild(point, 200);
4229 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4232 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4235 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT );
4239 point->setPosition(sprite->getPosition());
4241 Vector<SpriteFrame*> animFrames(14);
4243 for (
int j = 0; j < 14; j++)
4245 sprintf(tmp,
"grossini_dance_%02d.png", i + 1);
4246 auto frame = cache->getSpriteFrameByName(tmp);
4247 animFrames.pushBack(frame);
4250 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4251 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4253 auto flip = FlipY::create(
true);
4254 auto flip_back = FlipY::create(
false);
4255 auto delay = DelayTime::create(1);
4256 auto seq = Sequence::create(delay, flip, delay->clone(), flip_back,
nullptr);
4257 sprite->runAction(RepeatForever::create(seq));
4259 spritebatch->addChild(sprite, i);
4265 auto cache = SpriteFrameCache::getInstance();
4266 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4267 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4272 return "Testing SpriteBatchNode";
4277 return "issue #1078: offset + anchor + flip";
4285 _node = Node::create();
4286 addChild(
_node, 0, 0);
4288 _sprite1 = Sprite::create(
"Images/piece.png", Rect(128.0f, 0.0f, 64.0f, 64.0f));
4289 _sprite1->setPosition(Vec2(100.0f, 160.0f));
4292 _sprite2 = Sprite::create(
"Images/piece.png", Rect(128.0f, 0.0f, 64.0f, 64.0f));
4293 _sprite2->setPosition(Vec2(164.0f, 160.0f));
4296 _sprite4 = Sprite::create(
"Images/piece.png", Rect(128.0f, 0.0f, 64.0f, 64.0f));
4297 _sprite4->setPosition(Vec2(292.0f, 160.0f));
4300 _sprite3 = Sprite::create(
"Images/piece.png", Rect(128.0f, 0.0f, 64.0f, 64.0f));
4301 _sprite3->setPosition(Vec2(228.0f, 160.0f));
4304 _sprite5 = Sprite::create(
"Images/piece.png", Rect(128.0f, 0.0f, 64.0f, 64.0f));
4305 _sprite5->setPosition(Vec2(356.0f, 160.0f));
4313 return "node sort same index";
4318 return "tag order in console should be 2,1,3,4,5";
4323 unschedule(
"reorder_sprite_key");
4325 log(
"Before reorder--");
4327 auto& children =
_node->getChildren();
4329 for(
const auto &child : children) {
4330 log(
"tag %i z %i",(
int)child->getTag(),(
int)child->getLocalZOrder());
4333 _node->reorderChild(
_node->getChildren().at(0), -6);
4335 _node->sortAllChildren();
4337 log(
"After reorder--");
4338 for(
const auto &child : children) {
4339 log(
"tag %i z %i",(
int)child->getTag(),(
int)child->getLocalZOrder());
4346 _batchNode = SpriteBatchNode::create(
"Images/piece.png", 15);
4349 _sprite1 = Sprite::createWithTexture(
_batchNode->getTexture(), Rect(128.0f,0.0f,64.0f,64.0f));
4350 _sprite1->setPosition(Vec2(100.0f,160.0f));
4353 _sprite2= Sprite::createWithTexture(
_batchNode->getTexture(), Rect(128.0f,0.0f,64.0f,64.0f));
4354 _sprite2->setPosition(Vec2(164.0f,160.0f));
4357 _sprite3 = Sprite::createWithTexture(
_batchNode->getTexture(), Rect(128.0f,0.0f,64.0f,64.0f));
4358 _sprite3->setPosition(Vec2(228.0f,160.0f));
4361 _sprite4 = Sprite::createWithTexture(
_batchNode->getTexture(), Rect(128.0f,0.0f,64.0f,64.0f));
4362 _sprite4->setPosition(Vec2(292.0f,160.0f));
4365 _sprite5 = Sprite::createWithTexture(
_batchNode->getTexture(), Rect(128.0f,0.0f,64.0f,64.0f));
4366 _sprite5->setPosition(Vec2(356.0f,160.0f));
4375 return "SpriteBatchNodeReorder same index";
4380 return "tag order in console should be 2,3,4,5,1";
4391 for(
const auto &sprite :
_batchNode->getDescendants()) {
4392 log(
"tag %i", sprite->getTag() );
4399 auto s = Director::getInstance()->getWinSize();
4401 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/ghosts.plist");
4403 SpriteBatchNode *aParent;
4404 Sprite *l1, *l2a, *l2b, *l3a1, *l3a2, *l3b1, *l3b2;
4410 aParent = SpriteBatchNode::create(
"animations/ghosts.png");
4417 l1 = Sprite::createWithSpriteFrameName(
"father.gif");
4418 l1->setPosition(Vec2( s.width/2, s.height/2));
4420 aParent->addChild(l1);
4421 auto l1Size = l1->getContentSize();
4424 l2a = Sprite::createWithSpriteFrameName(
"sister1.gif");
4425 l2a->setPosition(Vec2( -10 + l1Size.width/2, 0 + l1Size.height/2));
4427 l1->addChild(l2a, 1);
4428 auto l2aSize = l2a->getContentSize();
4432 l2b = Sprite::createWithSpriteFrameName(
"sister2.gif");
4433 l2b->setPosition(Vec2( +50 + l1Size.width/2, 0 + l1Size.height/2));
4435 l1->addChild(l2b, 2);
4436 auto l2bSize = l2a->getContentSize();
4440 l3a1 = Sprite::createWithSpriteFrameName(
"child1.gif");
4441 l3a1->setScale(0.45f);
4442 l3a1->setPosition(Vec2(0+l2aSize.width/2,-50+l2aSize.height/2));
4443 l2a->addChild(l3a1, 1);
4446 l3a2 = Sprite::createWithSpriteFrameName(
"child1.gif");
4447 l3a2->setScale(0.45f);
4448 l3a2->setPosition(Vec2(0+l2aSize.width/2,+50+l2aSize.height/2));
4449 l2a->addChild(l3a2, 2);
4454 l3b1 = Sprite::createWithSpriteFrameName(
"child1.gif");
4455 l3b1->setScale(0.45f);
4456 l3b1->setFlippedY(
true);
4457 l3b1->setPosition(Vec2(0+l2bSize.width/2,-50+l2bSize.height/2));
4458 l2b->addChild(l3b1);
4461 l3b2 = Sprite::createWithSpriteFrameName(
"child1.gif");
4462 l3b2->setScale(0.45f);
4463 l3b2->setFlippedY(
true);
4464 l3b2->setPosition(Vec2(0+l2bSize.width/2,+50+l2bSize.height/2));
4465 l2b->addChild(l3b2);
4481 return "SpriteBatchNode reorder 1 child";
4489 auto s = Director::getInstance()->getWinSize();
4491 auto cache = SpriteFrameCache::getInstance();
4492 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4493 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4495 for(
int i=0;i<3;i++)
4500 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4501 sprite->setPosition(Vec2(s.width/4*(i+1), s.height/2));
4503 auto point = Sprite::create(
"Images/r1.png");
4505 point->setScale(0.25f);
4506 point->setPosition(sprite->getPosition());
4512 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4515 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4518 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
4522 point->setPosition(sprite->getPosition());
4524 Vector<SpriteFrame*> animFrames(14);
4525 for(
int i = 0; i < 14; i++)
4528 snprintf(pngName, 30,
"grossini_dance_%02d.png", (i+1));
4529 auto frame = cache->getSpriteFrameByName(pngName);
4530 animFrames.pushBack(frame);
4532 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4533 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4535 auto skewX = RotateBy::create(2, 45, 0);
4536 auto skewX_back = skewX->reverse();
4537 auto skewY = RotateBy::create(2, 0, 45);
4538 auto skewY_back = skewY->reverse();
4540 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4541 sprite->runAction(RepeatForever::create(seq_skew));
4543 addChild(sprite, 0);
4549 auto cache = SpriteFrameCache::getInstance();
4550 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4551 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4556 return "Testing Sprite";
4561 return "offset + anchor + rotational skew";
4569 auto s = Director::getInstance()->getWinSize();
4571 auto cache = SpriteFrameCache::getInstance();
4572 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4573 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4575 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
4576 addChild(spritebatch);
4578 for(
int i=0;i<3;i++)
4583 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4584 sprite->setPosition(Vec2(s.width/4*(i+1), s.height/2));
4586 auto point = Sprite::create(
"Images/r1.png");
4588 point->setScale(0.25f);
4589 point->setPosition(sprite->getPosition());
4595 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4598 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4601 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
4605 point->setPosition(sprite->getPosition());
4607 Vector<SpriteFrame*> animFrames(14);
4608 for(
int j = 0; j < 14; j++)
4611 snprintf(pngName, 30,
"grossini_dance_%02d.png", (j+1));
4612 auto frame = cache->getSpriteFrameByName(pngName);
4613 animFrames.pushBack(frame);
4615 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4616 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4618 auto skewX = RotateBy::create(2, 45, 0);
4619 auto skewX_back = skewX->reverse();
4620 auto skewY = RotateBy::create(2, 0, 45);
4621 auto skewY_back = skewY->reverse();
4623 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4624 sprite->runAction(RepeatForever::create(seq_skew));
4626 spritebatch->addChild(sprite, 0);
4632 auto cache = SpriteFrameCache::getInstance();
4633 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4634 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4639 return "Testing SpriteBatchNode";
4644 return "offset + anchor + rotational skew";
4652 auto s = Director::getInstance()->getWinSize();
4654 auto cache = SpriteFrameCache::getInstance();
4655 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4656 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4658 for(
int i=0;i<3;i++)
4663 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4664 sprite->setPosition(Vec2(s.width/4*(i+1), s.height/2));
4666 auto point = Sprite::create(
"Images/r1.png");
4668 point->setScale(0.25f);
4669 point->setPosition(sprite->getPosition());
4675 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4678 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4681 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
4685 point->setPosition(sprite->getPosition());
4687 Vector<SpriteFrame*> animFrames(14);
4688 for(
int j = 0; j < 14; j++)
4691 snprintf(pngName, 30,
"grossini_dance_%02d.png", (j+1));
4692 auto frame = cache->getSpriteFrameByName(pngName);
4693 animFrames.pushBack(frame);
4695 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4696 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4699 auto skewX = RotateBy::create(2, 45, 0);
4700 auto skewX_back = skewX->reverse();
4701 auto skewY = RotateBy::create(2, 0, 45);
4702 auto skewY_back = skewY->reverse();
4704 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4705 sprite->runAction(RepeatForever::create(seq_skew));
4708 auto scale = ScaleBy::create(2, 2);
4709 auto scale_back = scale->reverse();
4710 auto seq_scale = Sequence::create(scale, scale_back,
nullptr);
4711 sprite->runAction(RepeatForever::create(seq_scale));
4713 addChild(sprite, 0);
4719 auto cache = SpriteFrameCache::getInstance();
4720 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4721 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4726 return "Testing Sprite";
4731 return "anchor + rot skew + scale";
4737 auto s = Director::getInstance()->getWinSize();
4739 auto cache = SpriteFrameCache::getInstance();
4740 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4741 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4743 auto spritebatch = SpriteBatchNode::create(
"animations/grossini.png");
4744 addChild(spritebatch);
4746 for(
int i=0;i<3;i++)
4751 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4752 sprite->setPosition(Vec2(s.width/4*(i+1), s.height/2));
4754 auto point = Sprite::create(
"Images/r1.png");
4756 point->setScale(0.25f);
4757 point->setPosition(sprite->getPosition());
4763 sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
4766 sprite->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
4769 sprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
4773 point->setPosition(sprite->getPosition());
4775 Vector<SpriteFrame*> animFrames(14);
4776 for(
int j = 0; j < 14; j++)
4779 snprintf(pngName, 30,
"grossini_dance_%02d.png", (j+1));
4780 auto frame = cache->getSpriteFrameByName(pngName);
4781 animFrames.pushBack(frame);
4783 auto animation = Animation::createWithSpriteFrames(animFrames, 0.3f);
4784 sprite->runAction(RepeatForever::create(Animate::create(animation)));
4787 auto skewX = RotateBy::create(2, 45, 0);
4788 auto skewX_back = skewX->reverse();
4789 auto skewY = RotateBy::create(2, 0, 45);
4790 auto skewY_back = skewY->reverse();
4792 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4793 sprite->runAction(RepeatForever::create(seq_skew));
4796 auto scale = ScaleBy::create(2, 2);
4797 auto scale_back = scale->reverse();
4798 auto seq_scale = Sequence::create(scale, scale_back,
nullptr);
4799 sprite->runAction(RepeatForever::create(seq_scale));
4801 spritebatch->addChild(sprite, 0);
4807 auto cache = SpriteFrameCache::getInstance();
4808 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4809 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4814 return "Testing SpriteBatchNode";
4819 return "anchor + rot skew + scale";
4827 auto s = Director::getInstance()->getWinSize();
4829 auto cache = SpriteFrameCache::getInstance();
4830 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4831 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4833 auto parent = Node::create();
4836 for(
int i=0;i<2;i++)
4838 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4839 sprite->setPosition(Vec2(s.width/4*(i+1), s.height/2));
4841 auto point = Sprite::create(
"Images/r1.png");
4843 point->setScale(0.25f);
4844 point->setPosition(sprite->getPosition());
4848 auto skewX = RotateBy::create(2, 45, 0);
4849 auto skewX_back = skewX->reverse();
4850 auto skewY = RotateBy::create(2, 0, 45);
4851 auto skewY_back = skewY->reverse();
4855 sprite->setScale(-1.0f);
4858 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4859 sprite->runAction(RepeatForever::create(seq_skew));
4861 auto child1 = Sprite::create(
"Images/grossini_dance_01.png");
4862 child1->setPosition(Vec2(sprite->getContentSize().width/2.0f, sprite->getContentSize().height/2.0f));
4864 sprite->addChild(child1);
4866 child1->setScale(0.8f);
4868 parent->addChild(sprite, 0);
4874 auto cache = SpriteFrameCache::getInstance();
4875 cache->removeSpriteFramesFromFile(
"animations/grossini.plist");
4876 cache->removeSpriteFramesFromFile(
"animations/grossini_gray.plist");
4881 return "Testing Sprite";
4886 return "rot skew + negative scale with children";
4894 auto s = Director::getInstance()->getWinSize();
4896 auto cache = SpriteFrameCache::getInstance();
4897 cache->addSpriteFramesWithFile(
"animations/grossini.plist");
4898 cache->addSpriteFramesWithFile(
"animations/grossini_gray.plist",
"animations/grossini_gray.png");
4900 auto parent = SpriteBatchNode::create(
"animations/grossini.png");
4903 for(
int i=0;i<2;i++)
4905 auto sprite = Sprite::createWithSpriteFrameName(
"grossini_dance_01.png");
4906 sprite->setPosition(Vec2(s.width/4*(i+1), s.height/2));
4908 auto point = Sprite::create(
"Images/r1.png");
4910 point->setScale(0.25f);
4911 point->setPosition(sprite->getPosition());
4915 auto skewX = RotateBy::create(2, 45, 0);
4916 auto skewX_back = skewX->reverse();
4917 auto skewY = RotateBy::create(2, 0, 45);
4918 auto skewY_back = skewY->reverse();
4922 sprite->setScale(-1.0f);
4925 auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back,
nullptr);
4926 sprite->runAction(RepeatForever::create(seq_skew));
4928 auto child1 = Sprite::create(
"Images/grossini_dance_01.png");
4929 child1->setPosition(Vec2(sprite->getContentSize().width/2.0f, sprite->getContentSize().height/2.0f));
4931 sprite->addChild(child1);
4933 child1->setScale(0.8f);
4935 parent->addChild(sprite, 0);
4946 return "Testing SpriteBatchNode";
4951 return "rot skew + negative scale with children";
4963 Size s = Director::getInstance()->getWinSize();
4964 auto grossini = Sprite::create(
"Images/grossini.png");
4966 grossini->setPosition(s.width/2, s.height/2);
4968 auto right = MoveBy::create(3, Vec2(s.width*2,0.0f));
4969 auto back1 = right->reverse();
4970 auto left = MoveBy::create(3, Vec2(-s.width*2,0.0f));
4971 auto back2 = left->reverse();
4972 auto up = MoveBy::create(3, Vec2(0.0f,s.height*2));
4973 auto back3 = up->reverse();
4974 auto down = MoveBy::create(3, Vec2(0.0f,-s.height*2));
4975 auto back4 = down->reverse();
4977 auto seq = Sequence::create(right, back1, left, back2, up, back3, down, back4,
nullptr);
4978 grossini->runAction(seq);
4979 this->addChild(grossini);
4985 return "Testing Culling: No Scale, No Rotation";
4990 return "Look at the GL calls";
5002 Size s = Director::getInstance()->getWinSize();
5003 auto grossini = Sprite::create(
"Images/grossini.png");
5005 grossini->setPosition(s.width/2, s.height/2);
5007 auto right = MoveBy::create(3, Vec2(s.width*2,0.0f));
5008 auto back1 = right->reverse();
5009 auto left = MoveBy::create(3, Vec2(-s.width*2,0.0f));
5010 auto back2 = left->reverse();
5011 auto up = MoveBy::create(3, Vec2(0.0f,s.height*2));
5012 auto back3 = up->reverse();
5013 auto down = MoveBy::create(3, Vec2(0.0f,-s.height*2));
5014 auto back4 = down->reverse();
5016 grossini->setScale(0.1f);
5018 auto seq = Sequence::create(right, back1, left, back2, up, back3, down, back4,
nullptr);
5019 grossini->runAction(seq);
5020 this->addChild(grossini);
5026 return "Testing Culling: Scale, No Rotation";
5031 return "Look at the GL calls";
5041 Size s = Director::getInstance()->getWinSize();
5044 auto s1 = Sprite::create(
"Images/grossini.png");
5045 s1->setPosition(s.width/4, s.height/4 * 3);
5046 s1->setAnchorPoint(Vec2(0.0f, 0.0f));
5047 s1->runAction(RepeatForever::create(RotateBy::create(6.0f, 360.0f)));
5050 auto s2 = Sprite::create(
"Images/grossini.png");
5051 s2->setPosition(s.width/4 * 3, s.height/4 * 3);
5052 s2->runAction(RepeatForever::create(RotateBy::create(6.0f, 360.0f)));
5055 sprite1 = Sprite::create(
"Images/grossini.png");
5056 sprite1->setPosition(s.width/4, s.height/4);
5057 sprite1->setAnchorPoint(Vec2(0.0f,0.0f));
5061 sprite2 = Sprite::create(
"Images/grossini.png");
5062 sprite2->setPosition(s.width/4 * 3, s.height/4);
5066 schedule([&](
float dt) {
5080 Size s = Director::getInstance()->getVisibleSize();
5082 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5083 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5087 auto s1 = Sprite::createWithSpriteFrameName(
"grossini.png");
5089 s1->getTexture()->setAliasTexParameters();
5090 s1->setPosition(s.width/2-s.width/3, s.height/2);
5091 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5092 s1->setContentSize(s1->getContentSize()*2);
5093 s1->setSpriteFrame(s1->getSpriteFrame());
5096 auto s2 = Sprite::createWithSpriteFrameName(
"grossini.png");
5098 s2->setPosition(s.width*2/4, s.height/2);
5099 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5102 auto s3 = Sprite::createWithSpriteFrameName(
"grossini.png");
5104 s3->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(128,0,64,128)));
5105 s3->setPosition(s.width/2+s.width/3, s.height/2);
5106 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5107 s3->setSpriteFrame(s3->getSpriteFrame());
5117 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5118 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5120 Size s = Director::getInstance()->getWinSize();
5122 for (
int i=2; i>0; --i)
5124 auto s1 = Sprite::create(
"Images/grossinis_sister1.png");
5126 s1->setPosition(s.width*1/4, s.height*i/3);
5127 s1->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
5128 s1->setContentSize(Size(s1->getContentSize().width, 200.0f));
5129 auto action1 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5130 s1->runAction(action1);
5133 auto s2 = Sprite::create(
"Images/grossinis_sister1.png");
5135 s2->setPosition(s.width*2/4, s.height*i/3);
5136 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5137 s2->setContentSize(Size(s2->getContentSize().width, 200.0f));
5138 auto action2 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5139 s2->runAction(action2);
5142 auto s3 = Sprite::create(
"Images/grossinis_sister1.png");
5144 s3->setPosition(s.width*3/4, s.height*i/3);
5145 s3->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
5146 s3->setContentSize(Size(s3->getContentSize().width, 200.0f));
5147 auto action3 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5148 s3->runAction(action3);
5151 s3->setCenterRectNormalized(Rect(0.4f, 0.4f, 0.2f, 0.2f));
5152 s2->setCenterRectNormalized(Rect(0.4f, 0.4f, 0.2f, 0.2f));
5153 s1->setCenterRectNormalized(Rect(0.4f, 0.4f, 0.2f, 0.2f));
5157 auto point = Sprite::create(
"Images/r1.png");
5158 point->setScale(0.25f);
5159 point->setPosition( s1->getPosition() );
5160 addChild(point, 10);
5162 auto point2 = Sprite::create(
"Images/r1.png");
5163 point2->setScale(0.25f);
5164 point2->setPosition(s2->getPosition());
5165 addChild(point2, 10);
5167 auto point3 = Sprite::create(
"Images/r1.png");
5168 point3->setScale(0.25f);
5169 point3->setPosition(s3->getPosition());
5170 addChild(point3, 10);
5181 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5182 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5184 Size s = Director::getInstance()->getWinSize();
5186 for (
int i=2; i>0; i--)
5189 auto s1 = Sprite::createWithSpriteFrameName(
"grossini.png");
5191 s1->setPosition(s.width*1/4, s.height*i/3);
5192 s1->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
5193 s1->setContentSize(Size(80.0f, s1->getContentSize().height));
5194 auto action1 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5195 s1->runAction(action1);
5198 auto s2 = Sprite::createWithSpriteFrameName(
"grossini.png");
5200 s2->setPosition(s.width*2/4, s.height*i/3);
5201 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5202 s2->setContentSize(Size(80.0f, s2->getContentSize().height));
5203 auto action2 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5204 s2->runAction(action2);
5207 auto s3 = Sprite::createWithSpriteFrameName(
"grossini.png");
5209 s3->setPosition(s.width*3/4, s.height*i/3);
5210 s3->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT);
5211 s3->setContentSize(Size(80.0f, s3->getContentSize().height));
5212 auto action3 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5213 s3->runAction(action3);
5216 s3->setCenterRectNormalized(Rect(0.4f, 0.4f, 0.2f, 0.2f));
5217 s2->setCenterRectNormalized(Rect(0.4f, 0.4f, 0.2f, 0.2f));
5218 s1->setCenterRectNormalized(Rect(0.4f, 0.4f, 0.2f, 0.2f));
5222 auto point = Sprite::create(
"Images/r1.png");
5223 point->setScale(0.25f);
5224 point->setPosition( s1->getPosition() );
5225 addChild(point, 10);
5227 auto point2 = Sprite::create(
"Images/r1.png");
5228 point2->setScale(0.25f);
5229 point2->setPosition(s2->getPosition());
5230 addChild(point2, 10);
5232 auto point3 = Sprite::create(
"Images/r1.png");
5233 point3->setScale(0.25f);
5234 point3->setPosition(s3->getPosition());
5235 addChild(point3, 10);
5246 Size s = Director::getInstance()->getWinSize();
5249 for (
int i=2; i>0; --i)
5252 auto s1 = Sprite::create(
"ccb/scale-9-demo.png");
5254 s1->setPosition(s.width*1/4, s.height*i/3);
5255 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5256 s1->setContentSize(s1->getContentSize());
5257 auto action1 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5258 s1->runAction(action1);
5261 auto s2 = Sprite::create(
"ccb/scale-9-demo.png");
5263 s2->setPosition(s.width*2/4, s.height*i/3);
5264 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5265 s2->setContentSize(s2->getContentSize() * 2);
5266 auto action2 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5267 s2->runAction(action2);
5270 auto s3 = Sprite::create(
"ccb/scale-9-demo.png");
5272 s3->setPosition(s.width*3/4, s.height*i/3);
5273 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5274 s3->setContentSize(s3->getContentSize() * 3);
5275 auto action3 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5276 s3->runAction(action3);
5280 s1->setCenterRectNormalized(Rect(0.4, 0.4, 0.2, 0.2));
5281 s2->setCenterRectNormalized(Rect(0.4, 0.4, 0.2, 0.2));
5282 s3->setCenterRectNormalized(Rect(0.4, 0.4, 0.2, 0.2));
5287 auto point = Sprite::create(
"Images/r1.png");
5288 point->setScale(0.25f);
5289 point->setPosition( s1->getPosition() );
5290 addChild(point, 10);
5292 auto point2 = Sprite::create(
"Images/r1.png");
5293 point2->setScale(0.25f);
5294 point2->setPosition(s2->getPosition());
5295 addChild(point2, 10);
5297 auto point3 = Sprite::create(
"Images/r1.png");
5298 point3->setScale(0.25f);
5299 point3->setPosition(s3->getPosition());
5300 addChild(point3, 10);
5311 Size s = Director::getInstance()->getWinSize();
5314 for (
int i=2; i>0; --i)
5317 auto s1 = Sprite::create(
"ccs-res/cocosui/button.png");
5319 s1->setPosition(s.width*1/4, s.height*i/3);
5320 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5321 s1->setContentSize(s1->getContentSize() * 2);
5322 auto action1 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5323 s1->runAction(action1);
5326 auto s2 = Sprite::create(
"ccs-res/cocosui/button.png");
5328 s2->setPosition(s.width*2/4, s.height*i/3);
5329 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5330 s2->setContentSize(s2->getContentSize() * 3);
5331 auto action2 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5332 s2->runAction(action2);
5335 auto s3 = Sprite::create(
"ccs-res/cocosui/button.png");
5337 s3->setPosition(s.width*3/4, s.height*i/3);
5338 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5339 s3->setContentSize(s3->getContentSize() * 4);
5340 auto action3 = RepeatForever::create(RotateBy::create(5.0f, 360.0f));
5341 s3->runAction(action3);
5345 s1->setCenterRect(CC_RECT_PIXELS_TO_POINTS(Rect(6, 14, 2, 4)));
5346 s2->setCenterRect(CC_RECT_PIXELS_TO_POINTS(Rect(6, 14, 2, 4)));
5347 s3->setCenterRect(CC_RECT_PIXELS_TO_POINTS(Rect(6, 14, 2, 4)));
5351 auto point = Sprite::create(
"Images/r1.png");
5352 point->setScale(0.1f);
5353 point->setPosition( s1->getPosition() );
5354 addChild(point, 10);
5356 auto point2 = Sprite::create(
"Images/r1.png");
5357 point2->setScale(0.1f);
5358 point2->setPosition(s2->getPosition());
5359 addChild(point2, 10);
5361 auto point3 = Sprite::create(
"Images/r1.png");
5362 point3->setScale(0.1f);
5363 point3->setPosition(s3->getPosition());
5364 addChild(point3, 10);
5375 Size s = Director::getInstance()->getVisibleSize();
5377 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5378 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5382 auto s1 = Sprite::create(
"Images/grossinis_heads.png");
5384 s1->getTexture()->setAliasTexParameters();
5385 s1->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(0,0,64,128)));
5386 s1->setPosition(s.width/2-s.width/3, s.height/2);
5387 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5388 s1->setContentSize(Size(s.width/3, s.height));
5389 s1->setCenterRectNormalized(Rect(0,0,1,1));
5393 auto s2 = Sprite::create(
"Images/grossinis_heads.png");
5395 s2->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(64,0,64,128)));
5396 s2->setPosition(s.width*2/4, s.height/2);
5397 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5398 s2->setContentSize(Size(s.width/3, s.height));
5399 s2->setCenterRectNormalized(Rect(0,0,1,1));
5403 auto s3 = Sprite::create(
"Images/grossinis_heads.png");
5405 s3->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(128,0,64,128)));
5406 s3->setPosition(s.width/2+s.width/3, s.height/2);
5407 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5408 s3->setContentSize(Size(s.width/3, s.height));
5409 s3->setCenterRectNormalized(Rect(0,0,1,1));
5424 float x = ((cos(angle) + sin(angle*3)) + 2) / 5.0f;
5425 float y1 = (sin(angle) + 1) / 2.5;
5426 float y2 = (sin(angle+M_PI_2) + 1) / 2.5;
5428 for (
int i=0; i<3; ++i) {
5436 Rect rect(x,y,0.2, 0.2);
5437 _sprites[i]->setCenterRectNormalized(rect);
5448 Size s = Director::getInstance()->getVisibleSize();
5450 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5451 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5455 auto s1 = Sprite::create(
"Images/grossinis_heads.png");
5457 s1->getTexture()->setAliasTexParameters();
5458 s1->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(0,0,64,128)));
5459 s1->setPosition(s.width/2-s.width/3, s.height/2);
5460 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5461 s1->setContentSize(Size(s.width/3, s.height));
5462 s1->setCenterRectNormalized(Rect(0,0,1,1));
5466 auto s2 = Sprite::create(
"Images/grossinis_heads.png");
5468 s2->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(64,0,64,128)));
5469 s2->setPosition(s.width*2/4, s.height/2);
5470 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5471 s2->setContentSize(Size(s.width/3, s.height));
5472 s2->setCenterRectNormalized(Rect(0,0,1,1));
5476 auto s3 = Sprite::create(
"Images/grossinis_heads.png");
5478 s3->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(128,0,64,128)));
5479 s3->setPosition(s.width/2+s.width/3, s.height/2);
5480 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5481 s3->setContentSize(Size(s.width/3, s.height));
5482 s3->setCenterRectNormalized(Rect(0,0,1,1));
5497 float x = ((cos(angle*2) - sin(angle/2)) + 2) / 4;
5498 float y1 = (sin(angle) + 1) / 2;
5499 float y2 = (sin(angle+M_PI_2) + 1) / 2;
5501 for (
int i=0; i<3; ++i) {
5509 Rect rect((1-x)/2, (1-y)/2, x, y);
5510 _sprites[i]->setCenterRectNormalized(rect);
5521 Size s = Director::getInstance()->getVisibleSize();
5523 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5524 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5528 auto s1 = Sprite::create(
"Images/grossinis_heads.png");
5530 s1->getTexture()->setAliasTexParameters();
5531 s1->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(0,0,64,128)));
5532 s1->setPosition(s.width/2-s.width/3, s.height/2);
5533 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5534 s1->setContentSize(Size(s.width/3, s.height));
5535 s1->setCenterRectNormalized(Rect(0,0,0.5,0.5));
5538 auto s2 = Sprite::create(
"Images/grossinis_heads.png");
5540 s2->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(64,0,64,128)));
5541 s2->setPosition(s.width*2/4, s.height/2);
5542 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5543 s2->setContentSize(Size(s.width/3, s.height));
5544 s2->setCenterRectNormalized(Rect(0.25,0.25,0.5,0.5));
5547 auto s3 = Sprite::create(
"Images/grossinis_heads.png");
5549 s3->setTextureRect(CC_RECT_PIXELS_TO_POINTS(Rect(128,0,64,128)));
5550 s3->setPosition(s.width/2+s.width/3, s.height/2);
5551 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5552 s3->setContentSize(Size(s.width/3, s.height));
5553 s3->setCenterRectNormalized(Rect(0.5,0.5,0.5,0.5));
5563 Size s = Director::getInstance()->getVisibleSize();
5565 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5566 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5572 auto s1 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
5574 s1->setPosition(s.width/2-s.width/3, s.height*2/3);
5575 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5576 s1->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5577 s1->setFlippedX(
true);
5578 s1->setContentSize(s1->getContentSize()*2);
5580 auto s2 = Sprite::createWithSpriteFrameName(
"grossini.png");
5582 s2->setPosition(s.width*2/4, s.height*2/3);
5583 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5584 s2->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5585 s2->setFlippedX(
true);
5586 s2->setFlippedY(
true);
5587 s2->setContentSize(s2->getContentSize()*2);
5590 auto s3 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
5592 s3->setPosition(s.width/2+s.width/3, s.height*2/3);
5593 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5594 s3->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5595 s3->setFlippedY(
true);
5596 s3->setContentSize(s3->getContentSize()*2);
5601 auto s4 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
5603 s4->setPosition(s.width/2-s.width/3, s.height*1/3);
5604 s4->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5605 s4->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5606 s4->setFlippedX(
true);
5607 s4->setContentSize(s4->getContentSize()*2);
5609 auto s5 = Sprite::createWithSpriteFrameName(
"grossini.png");
5611 s5->setPosition(s.width*2/4, s.height*1/3);
5612 s5->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5613 s5->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5614 s5->setFlippedX(
true);
5615 s5->setFlippedY(
true);
5616 s5->setContentSize(s5->getContentSize()*2);
5619 auto s6 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
5621 s6->setPosition(s.width/2+s.width/3, s.height*1/3);
5622 s6->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5623 s6->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5624 s6->setFlippedY(
true);
5625 s6->setContentSize(s6->getContentSize()*2);
5635 Size s = Director::getInstance()->getVisibleSize();
5637 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini_family.plist");
5638 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"animations/grossini.plist");
5642 auto s1 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
5644 s1->setPosition(s.width/2-s.width/3, s.height*2/3);
5645 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5646 s1->setCenterRectNormalized(Rect(2/3.f, 2/3.f, 1/3.f, 1/3.f));
5647 s1->setFlippedX(
true);
5648 s1->setContentSize(s1->getContentSize()*2);
5650 auto s2 = Sprite::createWithSpriteFrameName(
"grossini.png");
5652 s2->setPosition(s.width*2/4, s.height*2/3);
5653 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5654 s2->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 2/3.f, 2/3.f));
5655 s2->setFlippedX(
true);
5656 s2->setFlippedY(
true);
5657 s2->setContentSize(s2->getContentSize()*2);
5659 auto s3 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
5661 s3->setPosition(s.width/2+s.width/3, s.height*2/3);
5662 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5663 s3->setCenterRectNormalized(Rect(0.1f, 0.1f, 0.8f, 0.8f));
5664 s3->setFlippedY(
true);
5665 s3->setContentSize(s3->getContentSize()*2);
5669 auto s4 = Sprite::createWithSpriteFrameName(
"grossinis_sister1.png");
5671 s4->setPosition(s.width/2-s.width/3, s.height*1/3);
5672 s4->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5673 s4->setCenterRectNormalized(Rect(2/3.f, 2/3.f, 1/3.f, 1/3.f));
5674 s4->setContentSize(s4->getContentSize()*2);
5675 s4->setFlippedX(
true);
5677 auto s5 = Sprite::createWithSpriteFrameName(
"grossini.png");
5679 s5->setPosition(s.width*2/4, s.height*1/3);
5680 s5->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5681 s5->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 2/3.f, 2/3.f));
5682 s5->setContentSize(s5->getContentSize()*2);
5683 s5->setFlippedX(
true);
5684 s5->setFlippedY(
true);
5686 auto s6 = Sprite::createWithSpriteFrameName(
"grossinis_sister2.png");
5688 s6->setPosition(s.width/2+s.width/3, s.height*1/3);
5689 s6->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5690 s6->setCenterRectNormalized(Rect(0.1f, 0.1f, 0.8f, 0.8f));
5691 s6->setContentSize(s6->getContentSize()*2);
5692 s6->setFlippedY(
true);
5702 Size s = Director::getInstance()->getVisibleSize();
5704 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"Images/blocks9ss.plist");
5707 auto s1 = Sprite::createWithSpriteFrameName(
"blocks9r.png");
5709 s1->setPosition(s.width/2-s.width/3, s.height/2);
5710 s1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5711 s1->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5712 s1->setContentSize(s1->getContentSize()*1.5);
5713 s1->setFlippedX(
true);
5715 auto s2 = Sprite::createWithSpriteFrameName(
"blocks9r.png");
5717 s2->setPosition(s.width*2/4, s.height/2);
5718 s2->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5719 s2->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5720 s2->setContentSize(s2->getContentSize()*1.5);
5723 auto s3 = Sprite::createWithSpriteFrameName(
"blocks9r.png");
5725 s3->setPosition(s.width/2+s.width/3, s.height/2);
5726 s3->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
5727 s3->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5728 s3->setContentSize(s3->getContentSize()*1.5);
5729 s3->setFlippedY(
true);
5740 Size s = Director::getInstance()->getVisibleSize();
5742 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"Images/issue_17119.plist");
5743 SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"Images/blocks9ss.plist");
5746 auto s1 = Sprite::createWithSpriteFrameName(
"firstPic.png");
5748 s1->setPosition(s.width/2-s.width/3, s.height/2);
5749 s1->setScale(0.25f);
5750 auto p1 = Sprite::create(
"Images/r1.png");
5751 p1->setScale(0.25f);
5752 p1->setPosition(s1->getPosition());
5755 auto s2 = Sprite::createWithSpriteFrameName(
"blocks9r.png");
5757 s2->setPosition(s.width/2, s.height/2);
5758 s2->setCenterRectNormalized(Rect(1/3.f, 1/3.f, 1/3.f, 1/3.f));
5759 s2->setContentSize(s2->getContentSize()*1.5);
5760 auto p2 = Sprite::create(
"Images/r1.png");
5761 p2->setScale(0.25f);
5762 p2->setPosition(s2->getPosition());
5765 auto s3 = Sprite::create(
"Images/grossini.png");
5767 s3->setPosition(s.width/2+s.width/3, s.height/2+s.height/3);
5768 s3->setContentSize(s3->getContentSize()*1.5);
5769 auto p3 = Sprite::create(
"Images/r1.png");
5770 p3->setScale(0.25f);
5771 p3->setPosition(s3->getPosition());
5774 auto s4 = Sprite::create(
"Images/grossini.png");
5776 s4->setPosition(s.width/2+s.width/3, s.height/2-s.height/3);
5777 s4->setContentSize(s2->getContentSize()*1.5);
5778 s4->setStretchEnabled(
false);
5779 auto p4 = Sprite::create(
"Images/r1.png");
5780 p4->setScale(0.25f);
5781 p4->setPosition(s3->getPosition());
5796 auto flipped =
_s1->isFlippedX();
5797 _s1->setFlippedX(!flipped);
5798 _s2->setFlippedX(!flipped);
5799 _s3->setFlippedX(!flipped);
5800 _s4->setFlippedX(!flipped);
#define ADD_TEST_CASE(__className__)
virtual ~AnimationCacheFile()
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual ~AnimationCacheTest()
virtual void update(float dt) override
static MySprite1 * createWithSpriteFrameName(const std::string &spriteFrameName)
static MySprite2 * create(const std::string &name)
virtual std::string subtitle() const override
cocos2d::Sprite * _sprite2
void reorderSprite(float dt)
cocos2d::Sprite * _sprite5
cocos2d::Sprite * _sprite4
virtual std::string title() const override
cocos2d::Sprite * _sprite3
cocos2d::Sprite * _sprite1
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
void addNewSpriteWithCoords(cocos2d::Vec2 p)
cocos2d::Sprite * _background
virtual std::string subtitle() const override
virtual std::string title() const override
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
virtual std::string title() const override
virtual std::string subtitle() const override
void addNewSpriteWithCoords(cocos2d::Vec2 p)
cocos2d::Sprite * sprite2
cocos2d::Sprite * sprite1
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onExit() override
virtual std::string title() const override
virtual void onExit() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onExit() override
virtual std::string title() const override
virtual std::string subtitle() const override
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
void addNewSpriteWithCoords(cocos2d::Vec2 p)
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onExit() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
SpriteBatchNodeAnchorPoint()
virtual std::string subtitle() const override
virtual std::string subtitle() const override
SpriteBatchNodeChildrenAnchorPoint()
virtual void onExit() override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
SpriteBatchNodeChildrenChildren()
SpriteBatchNodeChildren()
virtual std::string title() const override
virtual void onExit() override
SpriteBatchNodeChildrenScale()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onExit() override
virtual std::string title() const override
SpriteBatchNodeChildrenZ()
void removeAndAddSprite(float dt)
SpriteBatchNodeColorOpacity()
virtual std::string subtitle() const override
virtual std::string title() const override
void flipSprites(float dt)
virtual std::string subtitle() const override
virtual std::string title() const override
cocos2d::Texture2D * _texture2
virtual std::string title() const override
virtual ~SpriteBatchNodeNewTexture()
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
cocos2d::Texture2D * _texture1
SpriteBatchNodeNewTexture()
virtual std::string subtitle() const override
SpriteBatchNodeOffsetAnchorFlip()
virtual ~SpriteBatchNodeOffsetAnchorFlip()
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onExit() override
virtual std::string subtitle() const override
SpriteBatchNodeOffsetAnchorRotation()
SpriteBatchNodeOffsetAnchorRotationalSkew()
virtual ~SpriteBatchNodeOffsetAnchorRotationalSkew()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual ~SpriteBatchNodeOffsetAnchorRotationalSkewScale()
SpriteBatchNodeOffsetAnchorRotationalSkewScale()
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onExit() override
SpriteBatchNodeOffsetAnchorScale()
SpriteBatchNodeOffsetAnchorSkew()
virtual std::string title() const override
virtual ~SpriteBatchNodeOffsetAnchorSkew()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual ~SpriteBatchNodeOffsetAnchorSkewScale()
virtual std::string subtitle() const override
SpriteBatchNodeOffsetAnchorSkewScale()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
SpriteBatchNodeReorderIssue744()
virtual std::string subtitle() const override
cocos2d::Sprite * sprite1
cocos2d::Sprite * makeSpriteZ(int aZ)
virtual std::string subtitle() const override
cocos2d::Sprite * sprite3
void reorderSprite(float dt)
virtual std::string title() const override
SpriteBatchNodeReorderIssue766()
cocos2d::Sprite * sprite2
cocos2d::SpriteBatchNode * batchNode
SpriteBatchNodeReorderIssue767()
virtual std::string title() const override
void reorderSprites(float dt)
virtual std::string subtitle() const override
virtual std::string title() const override
cocos2d::SpriteBatchNode * _batchNode
SpriteBatchNodeReorderOneChild()
SpriteBatchNodeReorderOneChild
cocos2d::Sprite * _reorderSprite
void reorderSprite(float dt)
cocos2d::Sprite * _sprite5
cocos2d::SpriteBatchNode * _batchNode
cocos2d::Sprite * _sprite3
cocos2d::Sprite * _sprite1
cocos2d::Sprite * _sprite4
virtual std::string title() const override
void reorderSprite(float dt)
cocos2d::Sprite * _sprite2
SpriteBatchNodeReorderSameIndex()
SpriteBatchNodeReorderSameIndex
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual ~SpriteBatchNodeRotationalSkewNegativeScaleChildren()
virtual std::string title() const override
SpriteBatchNodeRotationalSkewNegativeScaleChildren()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual ~SpriteBatchNodeSkewNegativeScaleChildren()
SpriteBatchNodeSkewNegativeScaleChildren()
virtual std::string title() const override
void reorderSprite(float dt)
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onExit() override
virtual void onExit() override
virtual std::string title() const override
virtual std::string subtitle() const override
SpriteChildrenAnchorPoint()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onExit() override
virtual std::string title() const override
SpriteChildrenVisibility()
SpriteChildrenVisibilityIssue665()
virtual std::string subtitle() const override
virtual ~SpriteChildrenVisibilityIssue665()
virtual std::string title() const override
void removeAndAddSprite(float dt)
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
void flipSprites(float dt)
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onExit() override
virtual void onExit() override
cocos2d::Sprite * _sprite2
virtual std::string title() const override
void flipSprites(float dt)
virtual void onEnter() override
virtual std::string subtitle() const override
void startIn05Secs(float dt)
cocos2d::Sprite * _sprite1
virtual std::string subtitle() const override
virtual std::string sheetName() const
virtual void onEnter() override
virtual void onExit() override
virtual std::string title() const override
SpriteGetSpriteFrameTest()
virtual std::string title() const override
virtual void onExit() override
void reparentSprite(float dt)
bool _usingSpriteBatchNode
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
virtual std::string subtitle() const override
cocos2d::Texture2D * _texture2
virtual ~SpriteNewTexture()
cocos2d::Texture2D * _texture1
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual ~SpriteOffsetAnchorFlip()
virtual void onEnter() override
virtual void onExit() override
virtual std::string subtitle() const override
virtual std::string title() const override
SpriteOffsetAnchorRotationalSkew()
virtual std::string subtitle() const override
virtual ~SpriteOffsetAnchorRotationalSkew()
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
SpriteOffsetAnchorRotationalSkewScale()
virtual ~SpriteOffsetAnchorRotationalSkewScale()
SpriteOffsetAnchorScale()
virtual std::string title() const override
virtual void onExit() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual ~SpriteOffsetAnchorSkew()
virtual std::string subtitle() const override
SpriteOffsetAnchorSkewScale()
virtual ~SpriteOffsetAnchorSkewScale()
virtual std::string title() const override
virtual std::string sheetName() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual ~SpriteRotationalSkewNegativeScaleChildren()
SpriteRotationalSkewNegativeScaleChildren()
virtual std::string subtitle() const override
virtual std::string subtitle() const override
SpriteSkewNegativeScaleChildren()
virtual ~SpriteSkewNegativeScaleChildren()
virtual std::string title() const override
cocos2d::Sprite * _sprites[3]
virtual void update(float dt) override
cocos2d::Sprite * _sprites[3]
virtual void update(float dt) override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
void reorderSprite(float dt)
virtual std::string title() const override
virtual void onEnter() override
virtual void onExit() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override