PuzzleSDK
SpriteCreation类 参考

#include <NewRendererTest.h>

+ 类 SpriteCreation 继承关系图:
+ SpriteCreation 的协作图:

Public 成员函数

 CREATE_FUNC (SpriteCreation)
 
virtual std::string title () const override
 
virtual std::string subtitle () const override
 
void addSpritesCallback (Ref *)
 
void delSpritesCallback (Ref *)
 
void updateSpriteCountLabel (int x)
 
void doTest ()
 
- Public 成员函数 继承自 TestCase
 TestCase ()
 
 ~TestCase ()
 
virtual Type getTestType () const
 
virtual float getDuration () const
 
virtual std::string getExpectedOutput () const
 
virtual std::string getActualOutput () const
 
virtual void restartTestCallback (cocos2d::Ref *sender)
 
virtual void nextTestCallback (cocos2d::Ref *sender)
 
virtual void priorTestCallback (cocos2d::Ref *sender)
 
virtual void onBackCallback (cocos2d::Ref *sender)
 
void setTestSuite (TestSuite *testSuite)
 
TestSuitegetTestSuite () const
 
float getRunTime () const
 
void setTestCaseName (const std::string &name)
 
std::string getTestCaseName () const
 
const cocos2d::Label * getSubtitleLable () const
 
const cocos2d::MenuItemImage * getRestartTestItem () const
 
virtual void onEnter () override
 

Protected 成员函数

 SpriteCreation ()
 
virtual ~SpriteCreation ()
 

Protected 属性

int totalSprites = 1000
 
int suggestDelta = 100
 
cocos2d::Label * _labelSpriteNum = nullptr
 
cocos2d::Label * labelCreate = nullptr
 
cocos2d::Label * labelDestory = nullptr
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 

详细描述

在文件 NewRendererTest.h126 行定义.

构造及析构函数说明

◆ SpriteCreation()

SpriteCreation::SpriteCreation ( )
protected

在文件 NewRendererTest.cpp423 行定义.

424{
425
426 Size s = Director::getInstance()->getWinSize();
427 Node* parent = Node::create();
428 parent->setPosition(s.width / 2,s.height / 2);
429 addChild(parent);
430
431
432#define KEY_CREATION "11"
433#define KEY_DESTROYATION "22"
434
435 labelCreate = Label::createWithTTF(TTFConfig("fonts/arial.ttf"), "Sprite Creation: ..");
436 labelDestory= Label::createWithTTF(TTFConfig("fonts/arial.ttf"), "Destroy Sprites: ..");
437
438 MenuItemFont::setFontName("fonts/arial.ttf");
439 MenuItemFont::setFontSize(65);
440 auto decrease = MenuItemFont::create(" - ", CC_CALLBACK_1(SpriteCreation::delSpritesCallback, this));
441 decrease->setColor(Color3B(0, 200, 20));
442 auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(SpriteCreation::addSpritesCallback, this));
443 increase->setColor(Color3B(0, 200, 20));
444
445 auto menu = Menu::create(decrease, increase, nullptr);
446 menu->alignItemsHorizontally();
447 menu->setPosition(Vec2(s.width / 2, s.height - 105));
448 addChild(menu, 1);
449
450 TTFConfig ttfCount("fonts/Marker Felt.ttf", 30);
451 _labelSpriteNum = Label::createWithTTF(ttfCount, "Label");
452 _labelSpriteNum->setColor(Color3B(0, 200, 20));
453 _labelSpriteNum->setPosition(Vec2(s.width / 2, s.height - 130));
454 addChild(_labelSpriteNum);
455
457
458 labelCreate->setPosition(0, -20);
459 labelDestory->setPosition(0, -50);
460
461 parent->addChild(labelCreate);
462 parent->addChild(labelDestory);
463
464 doTest();
465}
void addSpritesCallback(Ref *)
void delSpritesCallback(Ref *)
void updateSpriteCountLabel(int x)
cocos2d::Label * _labelSpriteNum
cocos2d::Label * labelCreate
cocos2d::Label * labelDestory

引用了 _labelSpriteNum, addSpritesCallback(), delSpritesCallback(), doTest(), labelCreate, labelDestory, totalSprites , 以及 updateSpriteCountLabel().

+ 函数调用图:

◆ ~SpriteCreation()

SpriteCreation::~SpriteCreation ( )
protectedvirtual

在文件 NewRendererTest.cpp564 行定义.

565{
566
567}

成员函数说明

◆ addSpritesCallback()

void SpriteCreation::addSpritesCallback ( Ref *  )

在文件 NewRendererTest.cpp552 行定义.

引用了 doTest(), suggestDelta, totalSprites , 以及 updateSpriteCountLabel().

被这些函数引用 SpriteCreation().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ CREATE_FUNC()

SpriteCreation::CREATE_FUNC ( SpriteCreation  )

◆ delSpritesCallback()

void SpriteCreation::delSpritesCallback ( Ref *  )

在文件 NewRendererTest.cpp558 行定义.

引用了 doTest(), suggestDelta, totalSprites , 以及 updateSpriteCountLabel().

被这些函数引用 SpriteCreation().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ doTest()

void SpriteCreation::doTest ( )

在文件 NewRendererTest.cpp475 行定义.

476{
477
478 DurationRecorder perf;
479 std::vector<std::string> predefineTextures = {
480 "Images/concave.png",
481 "Images/atlastest.png",
482 "Images/grossini_dance_atlas-mono.png",
483 "Images/HelloWorld.png",
484 "Images/background1.png",
485 "Images/background2.png",
486 "Images/stone.png",
487 "Images/issue_17116.png",
488 "Images/sprite_polygon_crash.png",
489 "Images/bitmapFontTest3.png",
490 "Images/cocos-html5.png",
491 "Images/Fog.png",
492 "Images/poly_test_textures.png",
493 "Images/powered.png",
494 "Images/bug14017.png",
495 "Images/test-rgba1.png",
496 "Images/grossinis_heads.png",
497 "Images/cocos2dbanner.png"
498 };
499
500
501 std::vector<Sprite*> spriteCache;
502 spriteCache.reserve(totalSprites);
503
505
506 for (int i=0; i< totalSprites; ++i)
507 {
508 auto* sprite = new Sprite();
509 if(sprite == nullptr )
510 {
511 break;
512 }
513 if(!sprite->initWithFile(predefineTextures[i % predefineTextures.size()]))
514 {
515 delete sprite;
516 break;
517 }
518 spriteCache.push_back(sprite);
519 }
520
521 auto creationDuration = perf.endTick(KEY_CREATION);
523
524 for (int i=0; i< totalSprites; ++i)
525 {
526 spriteCache[i]->release();
527 }
528 auto destroyDuration = perf.endTick(KEY_DESTROYATION);
529 std::stringstream ss;
530 auto t1_ms = creationDuration * 1.0 / 1000000;
531 ss << "Create "<< spriteCache.size() << " sprites takes " << t1_ms<< " ms, " << (int64_t)(spriteCache.size() * 1000 / t1_ms) << " sprites per second!";
532 labelCreate->setString(ss.str());
533
534 if(t1_ms < 100) {
535 suggestDelta =(int) (0.5 * totalSprites);
536 } else if (t1_ms < 1000) {
537 suggestDelta =(int) (0.2 * totalSprites);
538 } else if(t1_ms) {
539 suggestDelta =(int) (0.1 * totalSprites);
540 }
541
542 suggestDelta = suggestDelta < 1000 ? 1000 : suggestDelta - suggestDelta % 1000;
543
544 ss.str("");
545 auto t2_ms = destroyDuration * 1.0 / 1000000;
546 ss << "Destroy "<< spriteCache.size() << " sprites takes " << t2_ms<< " ms, " << (int64_t)(spriteCache.size() * 1000 / t2_ms) << " sprites per second!" ;
547 labelDestory->setString(ss.str());
548
549 spriteCache.clear();
550}
#define KEY_CREATION
#define KEY_DESTROYATION
int endTick(const std::string &key)
void startTick(const std::string &key)

引用了 DurationRecorder::endTick(), KEY_CREATION, KEY_DESTROYATION, labelCreate, labelDestory, DurationRecorder::startTick(), suggestDelta , 以及 totalSprites.

被这些函数引用 addSpritesCallback(), delSpritesCallback() , 以及 SpriteCreation().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ subtitle()

std::string SpriteCreation::subtitle ( ) const
overridevirtual

重载 MultiSceneTest .

在文件 NewRendererTest.cpp574 行定义.

575{
576#if defined(COCOS2D_DEBUG) && COCOS2D_DEBUG == 1
577 return "In debug mode";
578#else
579 return "In release mode";
580#endif
581}

◆ title()

std::string SpriteCreation::title ( ) const
overridevirtual

重载 MultiSceneTest .

在文件 NewRendererTest.cpp569 行定义.

570{
571 return "Sprite Creation";
572}

◆ updateSpriteCountLabel()

void SpriteCreation::updateSpriteCountLabel ( int  x)

在文件 NewRendererTest.cpp467 行定义.

468{
469 totalSprites = std::max(1, x);
470 std::stringstream ss;
471 ss << totalSprites << " sprites";
472 _labelSpriteNum->setString(ss.str());
473}

引用了 _labelSpriteNum , 以及 totalSprites.

被这些函数引用 addSpritesCallback(), delSpritesCallback() , 以及 SpriteCreation().

+ 这是这个函数的调用关系图:

类成员变量说明

◆ _labelSpriteNum

cocos2d::Label* SpriteCreation::_labelSpriteNum = nullptr
protected

在文件 NewRendererTest.h143 行定义.

被这些函数引用 SpriteCreation() , 以及 updateSpriteCountLabel().

◆ labelCreate

cocos2d::Label* SpriteCreation::labelCreate = nullptr
protected

在文件 NewRendererTest.h144 行定义.

被这些函数引用 doTest() , 以及 SpriteCreation().

◆ labelDestory

cocos2d::Label* SpriteCreation::labelDestory = nullptr
protected

在文件 NewRendererTest.h145 行定义.

被这些函数引用 doTest() , 以及 SpriteCreation().

◆ suggestDelta

int SpriteCreation::suggestDelta = 100
protected

在文件 NewRendererTest.h142 行定义.

被这些函数引用 addSpritesCallback(), delSpritesCallback() , 以及 doTest().

◆ totalSprites

int SpriteCreation::totalSprites = 1000
protected

该类的文档由以下文件生成: