PuzzleSDK
NodeTest.cpp
浏览该文件的文档.
1/****************************************************************************
2 Copyright (c) 2012 cocos2d-x.org
3 Copyright (c) 2013-2016 Chukong Technologies Inc.
4 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
5
6 http://www.cocos2d-x.org
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy
9 of this software and associated documentation files (the "Software"), to deal
10 in the Software without restriction, including without limitation the rights
11 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 copies of the Software, and to permit persons to whom the Software is
13 furnished to do so, subject to the following conditions:
14
15 The above copyright notice and this permission notice shall be included in
16 all copies or substantial portions of the Software.
17
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 THE SOFTWARE.
25 ****************************************************************************/
26
27#include "NodeTest.h"
28#include <regex>
29#include "../testResource.h"
30
32
33enum
34{
39};
40
41
42//------------------------------------------------------------------
43//
44// TestCocosNodeDemo
45//
46//------------------------------------------------------------------
47
48CocosNodeTests::CocosNodeTests()
49{
64 // TODO: Camera has been removed from CCNode; add new feature to support it
65 //ADD_TEST_CASE(CameraZoomTest);
76}
77
79{
80}
81
83{
84}
85
86std::string TestCocosNodeDemo::title() const
87{
88 return "Node Test";
89}
90
91//------------------------------------------------------------------
92//
93// NodeTest2
94//
95//------------------------------------------------------------------
96
98{
100
101 auto s = Director::getInstance()->getWinSize();
102
103 auto sp1 = Sprite::create(s_pathSister1);
104 auto sp2 = Sprite::create(s_pathSister2);
105 auto sp3 = Sprite::create(s_pathSister1);
106 auto sp4 = Sprite::create(s_pathSister2);
107
108 sp1->setPosition(Vec2(100.0f, s.height /2 ));
109 sp2->setPosition(Vec2(380.0f, s.height /2 ));
110 addChild(sp1);
111 addChild(sp2);
112
113 sp3->setScale(0.25f);
114 sp4->setScale(0.25f);
115
116 sp1->addChild(sp3);
117 sp2->addChild(sp4);
118
119 auto a1 = RotateBy::create(2, 360);
120 auto a2 = ScaleBy::create(2, 2);
121
122 auto action1 = RepeatForever::create( Sequence::create(a1, a2, a2->reverse(), nullptr) );
123 auto action2 = RepeatForever::create( Sequence::create(
124 a1->clone(),
125 a2->clone(),
126 a2->reverse(),
127 nullptr)
128 );
129
130 sp2->setAnchorPoint(Vec2(0,0));
131
132 sp1->runAction(action1);
133 sp2->runAction(action2);
134}
135
136std::string NodeTest2::subtitle() const
137{
138 return "anchorPoint and children";
139}
140
141
142//------------------------------------------------------------------
143//
144// NodeTest4
145//
146//------------------------------------------------------------------
147#define SID_DELAY2 1
148#define SID_DELAY4 2
149
151{
152 auto sp1 = Sprite::create(s_pathSister1);
153 auto sp2 = Sprite::create(s_pathSister2);
154
155 sp1->setPosition( Vec2(100,160) );
156 sp2->setPosition( Vec2(380,160) );
157
158 addChild(sp1, 0, 2);
159 addChild(sp2, 0, 3);
160
161 schedule(CC_CALLBACK_1(NodeTest4::delay2, this), 2.0f, "delay2_key");
162 schedule(CC_CALLBACK_1(NodeTest4::delay4, this), 4.0f, "delay4_key");
163}
164
165void NodeTest4::delay2(float dt)
166{
167 auto node = static_cast<Sprite*>(getChildByTag(2));
168 auto action1 = RotateBy::create(1, 360);
169 node->runAction(action1);
170}
171
172void NodeTest4::delay4(float dt)
173{
174 unschedule("delay4_key");
175 removeChildByTag(3, false);
176}
177
178std::string NodeTest4::subtitle() const
179{
180 return "tags";
181}
182
183
184//------------------------------------------------------------------
185//
186// NodeTest5
187//
188//------------------------------------------------------------------
190{
191 auto sp1 = Sprite::create(s_pathSister1);
192 auto sp2 = Sprite::create(s_pathSister2);
193
194 sp1->setPosition(Vec2(100.0f,160.0f));
195 sp2->setPosition(Vec2(380.0f,160.0f));
196
197 auto rot = RotateBy::create(2.0f, 360.0f);
198 auto rot_back = rot->reverse();
199 auto forever = RepeatForever::create(Sequence::create(rot, rot_back, nullptr));
200 auto forever2 = forever->clone();
201 forever->setTag(101);
202 forever2->setTag(102);
203
204 addChild(sp1, 0, kTagSprite1);
205 addChild(sp2, 0, kTagSprite2);
206
207 sp1->runAction(forever);
208 sp2->runAction(forever2);
209
210 schedule(CC_CALLBACK_1(NodeTest5::addAndRemove, this), 2.0f, "add_and_remove_key");
211}
212
214{
215 auto sp1 = getChildByTag(kTagSprite1);
216 auto sp2 = getChildByTag(kTagSprite2);
217
218 sp1->retain();
219 sp2->retain();
220
221 removeChild(sp1, false);
222 removeChild(sp2, true);
223
224 addChild(sp1, 0, kTagSprite1);
225 addChild(sp2, 0, kTagSprite2);
226
227 sp1->release();
228 sp2->release();
229}
230
231std::string NodeTest5::subtitle() const
232{
233 return "remove and cleanup";
234}
235
236//------------------------------------------------------------------
237//
238// NodeTest6
239//
240//------------------------------------------------------------------
242{
243 auto sp1 = Sprite::create(s_pathSister1);
244 auto sp11 = Sprite::create(s_pathSister1);
245
246 auto sp2 = Sprite::create(s_pathSister2);
247 auto sp21 = Sprite::create(s_pathSister2);
248
249 sp1->setPosition(Vec2(100.0f,160.0f));
250 sp2->setPosition(Vec2(380.0f,160.0f));
251
252 auto rot = RotateBy::create(2.0f, 360.0f);
253 auto rot_back = rot->reverse();
254 auto forever1 = RepeatForever::create(Sequence::create(rot, rot_back, nullptr));
255 auto forever11 = forever1->clone();
256
257 auto forever2 = forever1->clone();
258 auto forever21 = forever1->clone();
259
260 addChild(sp1, 0, kTagSprite1);
261 sp1->addChild(sp11);
262 addChild(sp2, 0, kTagSprite2);
263 sp2->addChild(sp21);
264
265 sp1->runAction(forever1);
266 sp11->runAction(forever11);
267 sp2->runAction(forever2);
268 sp21->runAction(forever21);
269
270 schedule(CC_CALLBACK_1(NodeTest6::addAndRemove, this), 2.0f, "add_and_remove_key");
271}
272
274{
275 auto sp1 = getChildByTag(kTagSprite1);
276 auto sp2 = getChildByTag(kTagSprite2);
277
278 sp1->retain();
279 sp2->retain();
280
281 removeChild(sp1, false);
282 removeChild(sp2, true);
283
284 addChild(sp1, 0, kTagSprite1);
285 addChild(sp2, 0, kTagSprite2);
286
287 sp1->release();
288 sp2->release();
289
290}
291
292std::string NodeTest6::subtitle() const
293{
294 return "remove/cleanup with children";
295}
296
297
298//------------------------------------------------------------------
299//
300// StressTest1
301//
302//------------------------------------------------------------------
304{
305 auto s = Director::getInstance()->getWinSize();
306
307 auto sp1 = Sprite::create(s_pathSister1);
308 addChild(sp1, 0, kTagSprite1);
309
310 sp1->setPosition( Vec2(s.width/2, s.height/2) );
311
312 schedule(CC_CALLBACK_1(StressTest1::shouldNotCrash, this), 1.0f, "should_not_crash_key");
313}
314
316{
317 unschedule("should_not_crash_key");
318
319 auto s = Director::getInstance()->getWinSize();
320
321 // if the node has timers, it crashes
322 auto explosion = ParticleSun::create();
323 explosion->setTexture(Director::getInstance()->getTextureCache()->addImage("Images/fire.png"));
324
325 // if it doesn't, it works Ok.
326// auto explosion = [Sprite create:@"grossinis_sister2.png");
327
328 explosion->setPosition( Vec2(s.width/2, s.height/2) );
329
330 runAction( Sequence::create(
331 RotateBy::create(2, 360),
332 CallFuncN::create(CC_CALLBACK_1(StressTest1::removeMe, this)),
333 nullptr) );
334
335 addChild(explosion);
336}
337
338// remove
339void StressTest1::removeMe(Node* node)
340{
342}
343
344
345std::string StressTest1::subtitle() const
346{
347 return "stress test #1: no crashes";
348}
349
350//------------------------------------------------------------------
351//
352// StressNodeTest2
353//
354//------------------------------------------------------------------
356{
357 auto s = Director::getInstance()->getWinSize();
358
359 auto sublayer = Layer::create();
360
361 auto sp1 = Sprite::create(s_pathSister1);
362 sp1->setPosition( Vec2(80.0f, s.height/2) );
363
364 auto move = MoveBy::create(3, Vec2(350.0f,0.0f));
365 auto move_ease_inout3 = EaseInOut::create(move->clone(), 2.0f);
366 auto move_ease_inout_back3 = move_ease_inout3->reverse();
367 auto seq3 = Sequence::create( move_ease_inout3, move_ease_inout_back3, nullptr);
368 sp1->runAction( RepeatForever::create(seq3) );
369 sublayer->addChild(sp1, 1);
370
371 auto fire = ParticleFire::create();
372 fire->setTexture(Director::getInstance()->getTextureCache()->addImage("Images/fire.png"));
373 fire->setPosition( Vec2(80.0f, s.height/2-50) );
374
375 auto copy_seq3 = seq3->clone();
376
377 fire->runAction( RepeatForever::create(copy_seq3) );
378 sublayer->addChild(fire, 2);
379
380 schedule(CC_CALLBACK_1(StressTest2::shouldNotLeak,this), 6.0f, "should_not_leak_key");
381
382 addChild(sublayer, 0, kTagSprite1);
383}
384
386{
387 unschedule("should_not_leak_key");
388 auto sublayer = static_cast<Layer*>( getChildByTag(kTagSprite1) );
389 sublayer->removeAllChildrenWithCleanup(true);
390}
391
392std::string StressTest2::subtitle() const
393{
394 return "stress test #2: no leaks";
395}
396
397
398//------------------------------------------------------------------
399//
400// SchedulerTest1
401//
402//------------------------------------------------------------------
404{
405 auto layer = Layer::create();
406 //CCLOG("retain count after init is %d", layer->getReferenceCount()); // 1
407
408 addChild(layer, 0);
409 //CCLOG("retain count after addChild is %d", layer->getReferenceCount()); // 2
410
411 layer->schedule(CC_CALLBACK_1(SchedulerTest1::doSomething, this), "do_something_key");
412 //CCLOG("retain count after schedule is %d", layer->getReferenceCount()); // 3 : (objective-c version), but win32 version is still 2, because Timer class don't save target.
413
414 layer->unschedule("do_something_key");
415 //CCLOG("retain count after unschedule is %d", layer->getReferenceCount()); // STILL 3! (win32 is '2')
416}
417
419{
420
421}
422
423std::string SchedulerTest1::subtitle() const
424{
425 return "cocosnode scheduler test #1";
426}
427
428//------------------------------------------------------------------
429//
430// SchedulerCallbackTest
431//
432//------------------------------------------------------------------
434{
435 auto node = Node::create();
436 addChild(node, 0);
437 node->setName("a node");
438
439 _total = 0;
440 node->schedule([&](float dt) {
441 _total += dt;
442 log("hello world: %f - total: %f", dt, _total);
443 }
444 ,0.5
445 ,"some_key");
446
447
448 node->scheduleOnce([&](float dt) {
449 // the local variable "node" will go out of scope, so I have to get it from "this"
450 auto anode = this->getChildByName("a node");
451 anode->unschedule("some_key");
452 }
453 ,5
454 ,"ignore_key");
455}
456
458{
460 log("--onEnter-- Must be called before the scheduled lambdas");
461}
462
464{
465 return "Node scheduler with lambda";
466}
467
468//------------------------------------------------------------------
469//
470// NodeToWorld
471//
472//------------------------------------------------------------------
474{
475 //
476 // This code tests that nodeToParent works OK:
477 // - It tests different anchor Points
478 // - It tests different children anchor points
479
480 auto back = Sprite::create(s_back3);
481 addChild( back, -10);
482 back->setAnchorPoint( Vec2(0,0) );
483 auto backSize = back->getContentSize();
484
485 auto item = MenuItemImage::create(s_PlayNormal, s_PlaySelect);
486 auto menu = Menu::create(item, nullptr);
487 menu->alignItemsVertically();
488 menu->setPosition( Vec2(backSize.width/2, backSize.height/2));
489 back->addChild(menu);
490
491 auto rot = RotateBy::create(5.0f, 360.0f);
492 auto fe = RepeatForever::create( rot);
493 item->runAction( fe );
494
495 auto move = MoveBy::create(3.0f, Vec2(200.0f,0.0f));
496 auto move_back = move->reverse();
497 auto seq = Sequence::create( move, move_back, nullptr);
498 auto fe2 = RepeatForever::create(seq);
499 back->runAction(fe2);
500}
501
502std::string NodeToWorld::subtitle() const
503{
504 return "nodeToParent transform";
505}
506
507//------------------------------------------------------------------
508//
509// NodeToWorld3D
510//
511//------------------------------------------------------------------
513{
514 //
515 // This code tests that nodeToParent works OK:
516 // - It tests different anchor Points
517 // - It tests different children anchor points
518
519 Size s = Director::getInstance()->getWinSize();
520 auto parent = Node::create();
521 parent->setContentSize(s);
522 parent->setAnchorPoint(Vec2(0.5f, 0.5f));
523 parent->setPosition(s.width/2, s.height/2);
524 this->addChild(parent);
525
526 auto back = Sprite::create(s_back3);
527 parent->addChild( back, -10);
528 back->setAnchorPoint( Vec2(0.0f,0.0f) );
529 auto backSize = back->getContentSize();
530
531 auto item = MenuItemImage::create(s_PlayNormal, s_PlaySelect);
532 auto menu = Menu::create(item, nullptr);
533 menu->alignItemsVertically();
534 menu->setPosition( Vec2(backSize.width/2, backSize.height/2));
535 back->addChild(menu);
536
537 auto rot = RotateBy::create(5, 360);
538 auto fe = RepeatForever::create( rot);
539 item->runAction( fe );
540
541 auto move = MoveBy::create(3, Vec2(200.0f,0.0f));
542 auto move_back = move->reverse();
543 auto seq = Sequence::create( move, move_back, nullptr);
544 auto fe2 = RepeatForever::create(seq);
545 back->runAction(fe2);
546
547 auto orbit = OrbitCamera::create(10, 0, 1, 0, 360, 0, 90);
548 parent->runAction(orbit);
549}
550
551std::string NodeToWorld3D::subtitle() const
552{
553 return "nodeToParent transform in 3D";
554}
555
556
557//------------------------------------------------------------------
558//
559// CameraOrbitTest
560//
561//------------------------------------------------------------------
563{
565 _preProjection = Director::getInstance()->getProjection();
566 Director::getInstance()->getRenderer()->setDepthTest(true);
567 Director::getInstance()->getRenderer()->setDepthWrite(true);
568 Director::getInstance()->setProjection(Director::Projection::_3D);
569}
570
572{
573 Director::getInstance()->getRenderer()->setDepthTest(false);
574 Director::getInstance()->getRenderer()->setDepthWrite(false);
575 Director::getInstance()->setProjection(_preProjection);
576 TestCocosNodeDemo::onExit();
577}
578
580{
581 auto s = Director::getInstance()->getWinSize();
582
583 auto p = Sprite::create(s_back3);
584 addChild( p, 0);
585 p->setPosition( Vec2(s.width/2, s.height/2) );
586 p->setOpacity( 128 );
587
588 Sprite* sprite;
589 OrbitCamera* orbit;
590 Size ss;
591
592 // LEFT
593 s = p->getContentSize();
594 sprite = Sprite::create(s_pathGrossini);
595 sprite->setScale(0.5f);
596 p->addChild(sprite, 0);
597 sprite->setPosition( Vec2(s.width/4*1, s.height/2) );
598 orbit = OrbitCamera::create(2, 1, 0, 0, 360, 0, 0);
599 sprite->runAction( RepeatForever::create( orbit ) );
600
601 // CENTER
602 sprite = Sprite::create(s_pathGrossini);
603 sprite->setScale( 1.0f );
604 p->addChild(sprite, 0);
605 sprite->setPosition( Vec2(s.width/4*2, s.height/2) );
606 orbit = OrbitCamera::create(2, 1, 0, 0, 360, 45, 0);
607 sprite->runAction( RepeatForever::create( orbit ) );
608
609
610 // RIGHT
611 sprite = Sprite::create(s_pathGrossini);
612 sprite->setScale( 2.0f );
613 p->addChild(sprite, 0);
614 sprite->setPosition( Vec2(s.width/4*3, s.height/2) );
615 ss = sprite->getContentSize();
616 orbit = OrbitCamera::create(2, 1, 0, 0, 360, 90, -45),
617 sprite->runAction( RepeatForever::create(orbit) );
618
619
620 // PARENT
621 orbit = OrbitCamera::create(10, 1, 0, 0, 360, 0, 90);
622 p->runAction( RepeatForever::create( orbit ) );
623
624 setScale( 1 );
625}
626
627std::string CameraOrbitTest::subtitle() const
628{
629 return "Camera Orbit test";
630}
631
632//------------------------------------------------------------------
633//
634// CameraZoomTest
635//
636//------------------------------------------------------------------
637
639{
641 _preProjection = Director::getInstance()->getProjection();
642 Director::getInstance()->setProjection(Director::Projection::_3D);
643}
644
646{
647 Director::getInstance()->setProjection(_preProjection);
648 TestCocosNodeDemo::onExit();
649}
650
652{
653 auto s = Director::getInstance()->getWinSize();
654
655 Sprite *sprite;
656// Camera *cam;
657
658 // LEFT
659 sprite = Sprite::create(s_pathGrossini);
660 addChild( sprite, 0);
661 sprite->setPosition( Vec2(s.width/4*1, s.height/2) );
662// cam = sprite->getCamera();
663// cam->setEye(0, 0, 415/2);
664// cam->setCenter(0, 0, 0);
665
666 // CENTER
667 sprite = Sprite::create(s_pathGrossini);
668 addChild( sprite, 0, 40);
669 sprite->setPosition(Vec2(s.width/4*2, s.height/2));
670
671 // RIGHT
672 sprite = Sprite::create(s_pathGrossini);
673 addChild( sprite, 0, 20);
674 sprite->setPosition(Vec2(s.width/4*3, s.height/2));
675
676 _z = 0;
677 scheduleUpdate();
678}
679
681{
682 Node *sprite;
683// Camera *cam;
684
685 _z += dt * 100;
686
687 sprite = getChildByTag(20);
688// cam = sprite->getCamera();
689// cam->setEye(0, 0, _z);
690
691 sprite = getChildByTag(40);
692// cam = sprite->getCamera();
693// cam->setEye(0, 0, -_z);
694}
695
696std::string CameraZoomTest::subtitle() const
697{
698 return "Camera Zoom test";
699}
700
701//------------------------------------------------------------------
702//
703// CameraCenterTest
704//
705//------------------------------------------------------------------
707{
709 _preProjection = Director::getInstance()->getProjection();
710 Director::getInstance()->setProjection(Director::Projection::_3D);
711}
712
714{
715 TestCocosNodeDemo::onExit();
716 Director::getInstance()->setProjection(_preProjection);
717}
718
720{
721 auto s = Director::getInstance()->getWinSize();
722
723 Sprite *sprite;
724 OrbitCamera *orbit;
725
726 // LEFT-TOP
727 sprite = Sprite::create("Images/white-512x512.png");
728 addChild( sprite, 0);
729 sprite->setPosition(Vec2(s.width/5*1, s.height/5*1));
730 sprite->setColor(Color3B::RED);
731 sprite->setTextureRect(Rect(0.0f, 0.0f, 120.0f, 50.0f));
732 orbit = OrbitCamera::create(10.0f, 1.0f, 0.0f, 0.0f, 360.0f, 0.0f, 0.0f);
733 sprite->runAction(RepeatForever::create( orbit ));
734// [sprite setAnchorPoint: Vec2(0,1));
735
736
737
738 // LEFT-BOTTOM
739 sprite = Sprite::create("Images/white-512x512.png");
740 addChild( sprite, 0, 40);
741 sprite->setPosition(Vec2(s.width/5*1, s.height/5*4));
742 sprite->setColor(Color3B::BLUE);
743 sprite->setTextureRect(Rect(0.0f, 0.0f, 120.0f, 50.0f));
744 orbit = OrbitCamera::create(10.0f, 1.0f, 0.0f, 0.0f, 360.0f, 0.0f, 0.0f);
745 sprite->runAction(RepeatForever::create( orbit ));
746
747
748 // RIGHT-TOP
749 sprite = Sprite::create("Images/white-512x512.png");
750 addChild( sprite, 0);
751 sprite->setPosition(Vec2(s.width/5*4, s.height/5*1));
752 sprite->setColor(Color3B::YELLOW);
753 sprite->setTextureRect(Rect(0.0f, 0.0f, 120.0f, 50.0f));
754 orbit = OrbitCamera::create(10.0f, 1.0f, 0.0f, 0.0f, 360.0f, 0.0f, 0.0f);
755 sprite->runAction(RepeatForever::create( orbit) );
756
757
758 // RIGHT-BOTTOM
759 sprite = Sprite::create("Images/white-512x512.png");
760 addChild( sprite, 0, 40);
761 sprite->setPosition(Vec2(s.width/5*4, s.height/5*4));
762 sprite->setColor(Color3B::GREEN);
763 sprite->setTextureRect(Rect(0.0f, 0.0f, 120.0f, 50.0f));
764 orbit = OrbitCamera::create(10.0f, 1.0f, 0.0f, 0.0f, 360.0f, 0.0f, 0.0f);
765 sprite->runAction( RepeatForever::create( orbit ) );
766
767 // CENTER
768 sprite = Sprite::create("Images/white-512x512.png");
769 addChild( sprite, 0, 40);
770 sprite->setPosition(Vec2(s.width/2, s.height/2));
771 sprite->setColor(Color3B::WHITE);
772 sprite->setTextureRect(Rect(0.0f, 0.0f, 120.0f, 50.0f));
773 orbit = OrbitCamera::create(10.0f, 1.0f, 0.0f, 0.0f, 360.0f, 0.0f, 0.0f);
774 sprite->runAction(RepeatForever::create( orbit ) );
775}
776
777std::string CameraCenterTest::title() const
778{
779 return "Camera Center test";
780}
781
782std::string CameraCenterTest::subtitle() const
783{
784 return "Sprites should rotate at the same speed";
785}
786
787//------------------------------------------------------------------
788//
789// ConvertToNode
790//
791//------------------------------------------------------------------
793{
794 auto listener = EventListenerTouchAllAtOnce::create();
795 listener->onTouchesEnded = CC_CALLBACK_2(ConvertToNode::onTouchesEnded, this);
796 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
797
798 auto s = Director::getInstance()->getWinSize();
799
800 auto rotate = RotateBy::create(10, 360);
801 auto action = RepeatForever::create(rotate);
802 for(int i = 0; i < 3; i++)
803 {
804 auto sprite = Sprite::create("Images/grossini.png");
805 sprite->setPosition(Vec2( s.width/4*(i+1), s.height/2));
806
807 auto point = Sprite::create("Images/r1.png");
808 point->setScale(0.25f);
809 point->setPosition(sprite->getPosition());
810 addChild(point, 10, 100 + i);
811
812 switch(i)
813 {
814 case 0:
815 sprite->setAnchorPoint(Vec2::ZERO);
816 break;
817 case 1:
818 sprite->setAnchorPoint(Vec2(0.5f, 0.5f));
819 break;
820 case 2:
821 sprite->setAnchorPoint(Vec2(1,1));
822 break;
823 }
824
825 point->setPosition(sprite->getPosition());
826
827 sprite->runAction( action->clone() );
828 addChild(sprite, i);
829 }
830}
831
832void ConvertToNode::onTouchesEnded(const std::vector<Touch*>& touches, Event *event)
833{
834 for( auto& touch : touches)
835 {
836 auto location = touch->getLocation();
837
838 for( int i = 0; i < 3; i++)
839 {
840 auto node = getChildByTag(100+i);
841 Vec2 p1, p2;
842
843 p1 = node->convertToNodeSpaceAR(location);
844 p2 = node->convertToNodeSpace(location);
845
846 CCLOG("AR: x=%.2f, y=%.2f -- Not AR: x=%.2f, y=%.2f", p1.x, p1.y, p2.x, p2.y);
847 }
848 }
849}
850
851std::string ConvertToNode::title() const
852{
853 return "Convert To Node Space";
854}
855
856std::string ConvertToNode::subtitle() const
857{
858 return "testing convertToNodeSpace / AR. Touch and see console";
859}
860
862
864{
865 Sprite *background = nullptr;
866
867 for (int i = 0; i < 50; i++)
868 {
869 background = Sprite::create("Images/background1.png");
870 background->setBlendFunc( BlendFunc::ALPHA_PREMULTIPLIED );
871 background->setAnchorPoint(Vec2::ZERO);
872 addChild(background);
873 }
874}
875
876std::string NodeOpaqueTest::title() const
877{
878 return "Node Opaque Test";
879}
880
881std::string NodeOpaqueTest::subtitle() const
882{
883 return "Node rendered with GL_BLEND disabled";
884}
885
887
889{
890 Sprite *background = nullptr;
891
892 for (int i = 0; i < 50; i++)
893 {
894 background = Sprite::create("Images/background1.jpg");
895 background->setBlendFunc(BlendFunc::DISABLE);
896 background->setAnchorPoint(Vec2::ZERO);
897 addChild(background);
898 }
899}
900
901std::string NodeNonOpaqueTest::title() const
902{
903 return "Node Non Opaque Test";
904}
905
907{
908 return "Node rendered with GL_BLEND enabled";
909}
910
912
914{
915 Size s = Director::getInstance()->getWinSize();
916 for (int i = 0; i < 9; i++)
917 {
918 Sprite *sprite;
919 auto parent = Node::create();
920 if(i==4) {
921 sprite = Sprite::create("Images/grossinis_sister2.png");
922 _sprite = sprite;
923 _sprite->setGlobalZOrder(-1);
924 }
925 else
926 sprite = Sprite::create("Images/grossinis_sister1.png");
927
928 parent->addChild(sprite);
929 this->addChild(parent);
930
931 float w = sprite->getContentSize().width;
932 sprite->setPosition(s.width/2 - w*0.7*(i-5), s.height/2);
933 }
934
935 this->scheduleUpdate();
936}
937
939{
940 static float accum = 0;
941
942 accum += dt;
943 if( accum > 1) {
944 float z = _sprite->getGlobalZOrder();
945 _sprite->setGlobalZOrder(-z);
946 accum = 0;
947 }
948}
949
951{
952 return "Global Z Value";
953}
954
956{
957 return "Center Sprite should change go from foreground to background";
958}
959
960
961//
962// MySprite: Used by CameraTest1 and CameraTest2
963//
964class MySprite : public Sprite
965{
966public:
967 static MySprite* create(const std::string &spritefilename)
968 {
969 auto sprite = new (std::nothrow) MySprite;
970 sprite->initWithFile(spritefilename);
971 sprite->autorelease();
972 auto program = backend::Program::getBuiltinProgram(backend::ProgramType::POSITION_TEXTURE_COLOR);
973 auto programState = new (std::nothrow) backend::ProgramState(program);
974 programState->autorelease();
975 sprite->setProgramState(programState);
976 return sprite;
977 }
978 virtual void setProgramState(backend::ProgramState* programState) override;
979 virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override;
980
981protected:
982 CustomCommand _customCommand;
983
984};
985
986void MySprite::setProgramState(backend::ProgramState* programState)
987{
988 Sprite::setProgramState(programState);
989 auto& pipelineDescriptor = _customCommand.getPipelineDescriptor();
990 pipelineDescriptor.programState = programState;
991
992 _customCommand.setDrawType(CustomCommand::DrawType::ARRAY);
993 _customCommand.setPrimitiveType(CustomCommand::PrimitiveType::TRIANGLE_STRIP);
994 _customCommand.createVertexBuffer(sizeof(V3F_C4B_T2F), 4, CustomCommand::BufferUsage::STATIC);
995 _customCommand.updateVertexBuffer(&_quad, 4*sizeof(V3F_C4B_T2F));
996}
997
998void MySprite::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)
999{
1000 const auto& projectionMat = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION);
1001 auto mvpMatrix = projectionMat * transform;
1002 _customCommand.getPipelineDescriptor().programState->setUniform(_mvpMatrixLocation, mvpMatrix.m, sizeof(mvpMatrix.m));
1003 _customCommand.init(_globalZOrder, transform, flags);
1004 renderer->addCommand(&_customCommand);
1005}
1006
1007//------------------------------------------------------------------
1008//
1009// CameraTest1
1010//
1011//------------------------------------------------------------------
1012
1014{
1016 _preProjection = Director::getInstance()->getProjection();
1017 Director::getInstance()->setProjection(Director::Projection::_3D);
1018 Director::getInstance()->getRenderer()->setDepthTest(true);
1019 Director::getInstance()->getRenderer()->setDepthWrite(true);
1020}
1021
1023{
1024 Director::getInstance()->setProjection(_preProjection);
1025 Director::getInstance()->getRenderer()->setDepthTest(false);
1026 Director::getInstance()->getRenderer()->setDepthWrite(false);
1027 TestCocosNodeDemo::onExit();
1028}
1029
1031{
1032 auto s = Director::getInstance()->getWinSize();
1033
1035 addChild( _sprite1 );
1036 _sprite1->setPosition( Vec2(1*s.width/4, s.height/2) );
1037 _sprite1->setScale(0.5);
1038
1039 _sprite2 = Sprite::create(s_back3);
1040 addChild( _sprite2 );
1041 _sprite2->setPosition( Vec2(3*s.width/4, s.height/2) );
1042 _sprite2->setScale(0.5);
1043
1044 auto camera = OrbitCamera::create(10, 0, 1, 0, 360, 0, 0);
1045 _sprite1->runAction( camera );
1046 _sprite2->runAction( camera->clone() );
1047}
1048
1049std::string CameraTest1::title() const
1050{
1051 return "Camera Test 1";
1052}
1053
1054std::string CameraTest1::subtitle() const
1055{
1056 return "Both images should rotate with a 3D effect";
1057}
1058
1059//------------------------------------------------------------------
1060//
1061// CameraTest2
1062//
1063//------------------------------------------------------------------
1065{
1067 _preProjection = Director::getInstance()->getProjection();
1068 Director::getInstance()->setProjection(Director::Projection::_3D);
1069 Director::getInstance()->getRenderer()->setDepthTest(true);
1070 Director::getInstance()->getRenderer()->setDepthWrite(true);
1071}
1072
1074{
1075 Director::getInstance()->setProjection(_preProjection);
1076 Director::getInstance()->getRenderer()->setDepthTest(false);
1077 Director::getInstance()->getRenderer()->setDepthWrite(false);
1078 TestCocosNodeDemo::onExit();
1079}
1080
1082{
1083 auto s = Director::getInstance()->getWinSize();
1084
1086 addChild( _sprite1 );
1087 _sprite1->setPosition( Vec2(1*s.width/4, s.height/2) );
1088 _sprite1->setScale(0.5);
1089
1090 _sprite2 = Sprite::create(s_back3);
1091 addChild( _sprite2 );
1092 _sprite2->setPosition( Vec2(3*s.width/4, s.height/2) );
1093 _sprite2->setScale(0.5);
1094
1095 Vec3 eye(150, 0, 200), center(0, 0, 0), up(0, 1, 0);
1096
1097 Mat4 lookupMatrix;
1098 Mat4::createLookAt(eye, center, up, &lookupMatrix);
1099
1100 Mat4 lookupMatrix2 = lookupMatrix;
1101
1102 _sprite1->setAdditionalTransform(&lookupMatrix2);
1103 _sprite2->setAdditionalTransform(&lookupMatrix2);
1104
1105}
1106
1107std::string CameraTest2::title() const
1108{
1109 return "Camera Test 2";
1110}
1111
1112std::string CameraTest2::subtitle() const
1113{
1114 return "Both images should look the same";
1115}
1116
1117//------------------------------------------------------------------
1118//
1119// NodeNormalizedPositionTest1
1120//
1121//------------------------------------------------------------------
1123{
1124 Sprite *sprites[5];
1125 Vec2 positions[5];
1126 positions[0] = Vec2(0.0f,0.0f);
1127 positions[1] = Vec2(0.0f,1.0f);
1128 positions[2] = Vec2(0.5f,0.5f);
1129 positions[3] = Vec2(1.0f,0.0f);
1130 positions[4] = Vec2(1.0f,1.0f);
1131
1132 for(int i=0; i<5; i++) {
1133 sprites[i] = Sprite::create("Images/grossini.png");
1134 sprites[i]->setPositionNormalized(positions[i]);
1135 addChild(sprites[i]);
1136 }
1137}
1138
1140{
1141 return "setNormalizedPositon()";
1142}
1143
1145{
1146 return "5 sprites: One in the center, the others on the corners";
1147}
1148
1149//------------------------------------------------------------------
1150//
1151// NodeNormalizedPositionTest2
1152//
1153//------------------------------------------------------------------
1155: _accum(0)
1156{
1157 Sprite *sprites[5];
1158 Vec2 positions[5];
1159 positions[0] = Vec2(0.0f,0.0f);
1160 positions[1] = Vec2(0.0f,1.0f);
1161 positions[2] = Vec2(0.5f,0.5f);
1162 positions[3] = Vec2(1.0f,0.0f);
1163 positions[4] = Vec2(1.0f,1.0f);
1164
1165 for(int i=0; i<5; i++) {
1166 sprites[i] = Sprite::create("Images/grossini.png");
1167 sprites[i]->setPositionNormalized(positions[i]);
1168 addChild(sprites[i]);
1169 }
1170 scheduleUpdate();
1171
1172 setContentSize( Director::getInstance()->getWinSize());
1173 _copyContentSize = getContentSize();
1174
1175// setAnchorPoint(Vec2(0.5,0.5));
1176// setPositionNormalized(Vec2(0.5,0.5));
1177}
1178
1180{
1181 return "setNormalizedPositon() #2";
1182}
1183
1185{
1186 return "5 sprites: One in the center, the others on the corners of its parents";
1187}
1188
1190{
1191 _accum += dt;
1192
1193 // for 5 seconds
1194 float norm = sinf(_accum);
1195
1196 Size s = Size(_copyContentSize.width*norm, _copyContentSize.height*norm);
1197 setContentSize(s);
1198 CCLOG("s: %f,%f", s.width, s.height);
1199}
1200
1201
1202//------------------------------------------------------------------
1203//
1204// NodeNormalizedPositionBugTest
1205//
1206//------------------------------------------------------------------
1208: _accum(0)
1209{
1210 Vec2 position;
1211
1212 position = Vec2(0.5f,0.5f);
1213
1214
1215 sprite = Sprite::create("Images/grossini.png");
1216 sprite->setPositionNormalized(position);
1217 addChild(sprite);
1218
1219 scheduleUpdate();
1220}
1221
1223{
1224 return "NodeNormalizedPositionBugTest";
1225}
1226
1228{
1229 return "When changing sprite normalizedPosition, the sprite doesn't move!";
1230}
1231
1233{
1234 _accum += dt;
1235
1236 // for 5 seconds
1237 float norm = clampf(sinf(_accum), 0, 1.0);
1238 sprite->setPositionNormalized(Vec2(norm,norm));
1239}
1240
1241std::string NodeNameTest::title() const
1242{
1243 return "getName()/setName()/getChildByName()/enumerateChildren()";
1244}
1245
1246std::string NodeNameTest::subtitle() const
1247{
1248 return "see console";
1249}
1250
1252{
1254
1255 this->scheduleOnce(CC_CALLBACK_1(NodeNameTest::test, this), 0.05f, "test_key");
1256}
1257
1259{
1260 TestCocosNodeDemo::onExit();
1261}
1262
1264{
1265 auto parent = Node::create();
1266
1267 // setName(), getName() and getChildByName()
1268 char name[20];
1269 for (int i = 0; i < 10; ++i)
1270 {
1271 sprintf(name, "node%d", i);
1272 auto node = Node::create();
1273 node->setName(name);
1274 parent->addChild(node);
1275 }
1276
1277 for (int i = 0; i < 10; ++i)
1278 {
1279 sprintf(name, "node%d", i);
1280 auto node = parent->getChildByName(name);
1281 log("find child: %s", node->getName().c_str());
1282 }
1283
1284 // enumerateChildren()
1285 // name = regular expression
1286 int i = 0;
1287 parent = Node::create();
1288 for (int i = 0; i < 100; ++i)
1289 {
1290 auto node = Node::create();
1291 sprintf(name, "node%d", i);
1292 node->setName(name);
1293 parent->addChild(node);
1294 }
1295
1296 i = 0;
1297 parent->enumerateChildren("node[[:digit:]]+", [&i](Node* node) -> bool {
1298 ++i;
1299 return false;
1300 });
1301 CCAssert(i == 100, "");
1302
1303 i = 0;
1304 parent->enumerateChildren("node[[:digit:]]+", [&i](Node* node) -> bool {
1305 ++i;
1306 return true;
1307 });
1308 CCAssert(i == 1, "");
1309
1310 // enumerateChildren
1311 // name = node[[digit]]+/node
1312
1313 parent = Node::create();
1314 for (int i = 0; i < 10; ++i)
1315 {
1316 auto node = Node::create();
1317 sprintf(name, "node%d", i);
1318 node->setName(name);
1319 parent->addChild(node);
1320
1321 for (int j = 0; j < 10; ++j)
1322 {
1323 auto child = Node::create();
1324 child->setName("node");
1325 node->addChild(child);
1326 }
1327 }
1328
1329 i = 0;
1330 parent->enumerateChildren("node1/node", [&i](Node* node) -> bool {
1331 ++i;
1332 return false;
1333 });
1334 CCAssert(i == 10, "");
1335
1336 i = 0;
1337 parent->enumerateChildren("node1/node", [&i](Node* node) -> bool {
1338 ++i;
1339 return true;
1340 });
1341 CCAssert(i == 1, "");
1342
1343 // search from root
1344 parent = Node::create();
1345 for (int i = 0; i < 10; ++i)
1346 {
1347 auto node = Node::create();
1348 sprintf(name, "node%d", i);
1349 node->setName(name);
1350 parent->addChild(node);
1351
1352 for (int j = 0; j < 10; ++j)
1353 {
1354 auto child = Node::create();
1355 child->setName("node");
1356 node->addChild(child);
1357 }
1358 }
1359
1360 i = 0;
1361 parent->enumerateChildren("node[[:digit:]]+/node", [&i](Node* node) -> bool {
1362 ++i;
1363 return false;
1364 });
1365 CCAssert(i == 100, "");
1366
1367 i = 0;
1368 parent->enumerateChildren("node[[:digit:]]+/node", [&i](Node* node) -> bool {
1369 ++i;
1370 return true;
1371 });
1372 CCAssert(i == 1, "");
1373
1374 // search from parent
1375 // name is xxx/..
1376 i = 0;
1377 parent->getChildByName("node1")->enumerateChildren("node[[:digit:]]+/node/..", [&i](Node* node) -> bool {
1378 ++i;
1379 return true;
1380 });
1381 CCAssert(i == 1, "");
1382
1383 i = 0;
1384 parent->getChildByName("node1")->enumerateChildren("node[[:digit:]]+/node/..", [&i](Node* node) -> bool {
1385 ++i;
1386 return false;
1387 });
1388 CCAssert(i == 100, "");
1389
1390 // name = //xxx : search recursively
1391 parent = Node::create();
1392 for (int j = 0; j < 10; j++)
1393 {
1394 auto node = Node::create();
1395 sprintf(name, "node%d", j);
1396 node->setName(name);
1397 parent->addChild(node);
1398
1399 for (int k = 0; k < 10; ++k)
1400 {
1401 auto child = Node::create();
1402 sprintf(name, "node%d", k);
1403 child->setName(name);
1404 node->addChild(child);
1405 }
1406 }
1407
1408 i = 0;
1409 parent->enumerateChildren("//node[[:digit:]]+", [&i](Node* node) -> bool {
1410 ++i;
1411 return false;
1412 });
1413 CCAssert(i == 110, ""); // 100(children) + 10(parent)
1414
1415 i = 0;
1416 parent->enumerateChildren("//node[[:digit:]]+", [&i](Node* node) -> bool {
1417 ++i;
1418 return true;
1419 });
1420 CCAssert(i == 1, "");
1421
1422 i = 0;
1423 parent->getChildByName("node1")->enumerateChildren("//node[[:digit:]]+/..", [&i](Node* node) -> bool {
1424 ++i;
1425 return false;
1426 });
1427 CCAssert(i == 110, "");
1428
1429 // utils::findChildren()
1430
1431 parent = Node::create();
1432 for (int i = 0; i < 50; ++i)
1433 {
1434 auto child = Node::create();
1435 child->setName("node");
1436 parent->addChild(child);
1437 }
1438 auto findChildren = utils::findChildren(*parent, "node");
1439 CCAssert(findChildren.size() == 50, "");
1440}
1441
1442//------------------------------------------------------------------
1443//
1444// Issue16100Test
1445//
1446//------------------------------------------------------------------
1448{
1450
1451 // create user camera
1452 auto s = Director::getInstance()->getWinSize();
1453
1454 auto delay = DelayTime::create(0.1f);
1455 auto f = CallFunc::create([this, s]()
1456 {
1457 auto camera = Camera::createOrthographic(s.width * 2, s.height * 2, -1024, 1024);
1458 camera->setCameraFlag(CameraFlag::USER1);
1459 addChild(camera);
1460 });
1461 this->runAction(Sequence::createWithTwoActions(delay, f));
1462
1463 // grossini using default camera
1464 auto sprite = Sprite::create("Images/grossini.png");
1465 this->addChild(sprite);
1466
1467 sprite->setPosition(-200,s.height/3);
1468 auto moveby = MoveBy::create(2, Vec2(400.0f,0.0f));
1469 auto movebyback = moveby->reverse();
1470 auto seq = Sequence::create(moveby, movebyback, nullptr);
1471 auto forever = RepeatForever::create(seq);
1472
1473 sprite->runAction(forever);
1474
1475 sprite->setCameraMask((int)CameraFlag::DEFAULT);
1476
1477
1478 // grossini's sister using user camera
1479 auto sister = Sprite::create("Images/grossinis_sister1.png");
1480 this->addChild(sister);
1481
1482 sister->setPosition(-200,s.height*2/3);
1483 auto moveby1 = MoveBy::create(2, Vec2(400.0f,0.0f));
1484 auto movebyback1 = moveby1->reverse();
1485 auto seq1 = Sequence::create(moveby1, movebyback1, nullptr);
1486 auto forever1 = RepeatForever::create(seq1);
1487
1488 sister->runAction(forever1);
1489 sister->setCameraMask((int)CameraFlag::USER1);
1490}
1491
1493{
1494 TestCocosNodeDemo::onExit();
1495}
1496
1497std::string Issue16100Test::title() const
1498{
1499 return "Issue 16100";
1500}
1501
1502std::string Issue16100Test::subtitle() const
1503{
1504 return "Sprite should appear on the screen";
1505}
1506
1507//------------------------------------------------------------------
1508//
1509// Issue16735Test
1510//
1511//------------------------------------------------------------------
1513{
1515
1516 auto visibleSize = Director::getInstance()->getVisibleSize();
1517 auto origin = Director::getInstance()->getVisibleOrigin();
1518
1519 auto sprite1 = Sprite::create("Images/grossini.png");
1520 sprite1->setPosition(Vec2(visibleSize / 2) + origin);
1521 addChild(sprite1);
1522
1523 auto sprite2 = Sprite::create("Images/grossini.png");
1524 sprite2->setPosition(Vec2(visibleSize / 2) + origin);
1525 sprite2->setSkewX(30);
1526 sprite2->setScale(2);
1527 sprite2->setRotation(30);
1528 addChild(sprite2);
1529
1530 auto d = DrawNode::create();
1531 d->drawLine(Vec2(origin.x, origin.y + visibleSize.height/2), Vec2(origin.x + visibleSize.width, origin.y + visibleSize.height/2), Color4F::RED);
1532 d->drawLine(Vec2(origin.x + visibleSize.width/2, origin.y), Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height), Color4F::RED);
1533
1534 addChild(d);
1535}
1536
1538{
1539 TestCocosNodeDemo::onExit();
1540}
1541
1542std::string Issue16735Test::title() const
1543{
1544 return "Issue 16735";
1545}
1546
1547std::string Issue16735Test::subtitle() const
1548{
1549 return "Sprite should appear on the center of screen";
1550}
#define ADD_TEST_CASE(__className__)
Definition: BaseTest.h:211
@ kTagSlider
Definition: NodeTest.cpp:38
@ kTagSprite2
Definition: NodeTest.cpp:36
@ kTagSprite1
Definition: NodeTest.cpp:35
@ kTagSprite3
Definition: NodeTest.cpp:37
USING_NS_CC
Definition: NodeTest.cpp:31
virtual void onExit() override
Definition: NodeTest.cpp:713
virtual std::string title() const override
Definition: NodeTest.cpp:777
virtual void onEnter() override
Definition: NodeTest.cpp:706
virtual std::string subtitle() const override
Definition: NodeTest.cpp:782
virtual std::string subtitle() const override
Definition: NodeTest.cpp:627
virtual void onEnter() override
Definition: NodeTest.cpp:562
virtual void onExit() override
Definition: NodeTest.cpp:571
virtual std::string title() const override
Definition: NodeTest.cpp:1049
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1054
cocos2d::Sprite * _sprite2
Definition: NodeTest.h:213
virtual void onEnter() override
Definition: NodeTest.cpp:1013
cocos2d::Sprite * _sprite1
Definition: NodeTest.h:212
virtual void onExit() override
Definition: NodeTest.cpp:1022
cocos2d::Sprite * _sprite2
Definition: NodeTest.h:229
cocos2d::Sprite * _sprite1
Definition: NodeTest.h:228
virtual std::string title() const override
Definition: NodeTest.cpp:1107
virtual void onExit() override
Definition: NodeTest.cpp:1073
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1112
virtual void onEnter() override
Definition: NodeTest.cpp:1064
virtual void onEnter() override
Definition: NodeTest.cpp:638
void update(float dt) override
Definition: NodeTest.cpp:680
virtual std::string subtitle() const override
Definition: NodeTest.cpp:696
virtual void onExit() override
Definition: NodeTest.cpp:645
virtual std::string title() const override
Definition: NodeTest.cpp:851
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
Definition: NodeTest.cpp:832
virtual std::string subtitle() const override
Definition: NodeTest.cpp:856
virtual void onEnter() override
Definition: NodeTest.cpp:1447
virtual std::string title() const override
Definition: NodeTest.cpp:1497
virtual void onExit() override
Definition: NodeTest.cpp:1492
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1502
virtual std::string title() const override
Definition: NodeTest.cpp:1542
virtual void onExit() override
Definition: NodeTest.cpp:1537
virtual void onEnter() override
Definition: NodeTest.cpp:1512
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1547
CustomCommand _customCommand
Definition: NodeTest.cpp:982
static MySprite * create(const std::string &spritefilename)
Definition: NodeTest.cpp:967
virtual void setProgramState(backend::ProgramState *programState) override
Definition: NodeTest.cpp:986
virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override
Definition: NodeTest.cpp:998
virtual void update(float dt) override
Definition: NodeTest.cpp:938
NodeGlobalZValueTest()
NodeGlobalZValueTest
Definition: NodeTest.cpp:913
virtual std::string title() const override
Definition: NodeTest.cpp:950
cocos2d::Sprite * _sprite
Definition: NodeTest.h:277
virtual std::string subtitle() const override
Definition: NodeTest.cpp:955
virtual void onExit() override
Definition: NodeTest.cpp:1258
void test(float dt)
Definition: NodeTest.cpp:1263
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1246
virtual void onEnter() override
Definition: NodeTest.cpp:1251
virtual std::string title() const override
Definition: NodeTest.cpp:1241
virtual std::string title() const override
Definition: NodeTest.cpp:901
NodeNonOpaqueTest()
NodeNonOpaqueTest
Definition: NodeTest.cpp:888
virtual std::string subtitle() const override
Definition: NodeTest.cpp:906
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1227
virtual std::string title() const override
Definition: NodeTest.cpp:1222
void update(float dt) override
Definition: NodeTest.cpp:1232
cocos2d::Sprite * sprite
Definition: NodeTest.h:318
virtual std::string title() const override
Definition: NodeTest.cpp:1139
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1144
virtual std::string subtitle() const override
Definition: NodeTest.cpp:1184
void update(float dt) override
Definition: NodeTest.cpp:1189
cocos2d::Size _copyContentSize
Definition: NodeTest.h:302
virtual std::string title() const override
Definition: NodeTest.cpp:1179
virtual std::string subtitle() const override
Definition: NodeTest.cpp:881
NodeOpaqueTest()
NodeOpaqueTest
Definition: NodeTest.cpp:863
virtual std::string title() const override
Definition: NodeTest.cpp:876
virtual std::string subtitle() const override
Definition: NodeTest.cpp:136
virtual void onEnter() override
Definition: NodeTest.cpp:97
virtual std::string subtitle() const override
Definition: NodeTest.cpp:178
void delay2(float dt)
Definition: NodeTest.cpp:165
void delay4(float dt)
Definition: NodeTest.cpp:172
void addAndRemove(float dt)
Definition: NodeTest.cpp:213
virtual std::string subtitle() const override
Definition: NodeTest.cpp:231
void addAndRemove(float dt)
Definition: NodeTest.cpp:273
virtual std::string subtitle() const override
Definition: NodeTest.cpp:292
virtual std::string subtitle() const override
Definition: NodeTest.cpp:551
virtual std::string subtitle() const override
Definition: NodeTest.cpp:502
virtual void onEnter() override
Definition: NodeTest.cpp:457
virtual std::string subtitle() const override
Definition: NodeTest.cpp:463
void doSomething(float dt)
Definition: NodeTest.cpp:418
virtual std::string subtitle() const override
Definition: NodeTest.cpp:423
void removeMe(Node *node)
Definition: NodeTest.cpp:339
virtual std::string subtitle() const override
Definition: NodeTest.cpp:345
void shouldNotCrash(float dt)
Definition: NodeTest.cpp:315
void shouldNotLeak(float dt)
Definition: NodeTest.cpp:385
virtual std::string subtitle() const override
Definition: NodeTest.cpp:392
TestSuite * getTestSuite() const
Definition: BaseTest.h:83
virtual void onEnter() override
Definition: BaseTest.cpp:430
virtual std::string title() const override
Definition: NodeTest.cpp:86
virtual ~TestCocosNodeDemo()
Definition: NodeTest.cpp:82
cocos2d::Director::Projection _preProjection
Definition: NodeTest.h:44
virtual void enterNextTest()
Definition: BaseTest.cpp:309
static const char s_pathSister1[]
Definition: testResource.h:29
static const char s_PlaySelect[]
Definition: testResource.h:48
static const char s_back3[]
Definition: testResource.h:41
static const char s_pathSister2[]
Definition: testResource.h:30
static const char s_PlayNormal[]
Definition: testResource.h:47
static const char s_pathGrossini[]
Definition: testResource.h:28