PuzzleSDK
NonBatchSprites类 参考

#include <NewRendererTest.h>

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

class  Ticker
 

Public 成员函数

 CREATE_FUNC (NonBatchSprites)
 
virtual std::string title () const override
 
virtual std::string subtitle () const override
 
virtual void update (float dt) override
 
- 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 成员函数

 NonBatchSprites ()
 
void createSprite ()
 
virtual ~NonBatchSprites ()
 

Protected 属性

Node * _spritesAnchor = nullptr
 
int _spriteIndex = 0
 
float _maDt = 1.0f / 60.0f
 
float _rmaDt = 1.0f/ 60.0f
 
const float DEST_DT_30FPS = 1.0f / 30.0f
 
cocos2d::Label * _totalSprites = nullptr
 
Ticker _contSlow = Ticker(20)
 
Ticker _contFast = Ticker(2)
 
Ticker _around30fps = Ticker(60 * 3)
 
- 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.h246 行定义.

构造及析构函数说明

◆ NonBatchSprites()

NonBatchSprites::NonBatchSprites ( )
protected

在文件 NewRendererTest.cpp997 行定义.

998{
999 Size s = Director::getInstance()->getWinSize();
1000 _spritesAnchor = Node::create();
1001 _spritesAnchor->setPosition(0, 0);
1002 addChild(_spritesAnchor);
1003
1004
1005 _totalSprites = Label::createWithTTF(TTFConfig("fonts/arial.ttf"), "sprites");
1006 _totalSprites->setColor(Color3B::YELLOW);
1007 _totalSprites->enableOutline(Color4B::RED, 2);
1008 _totalSprites->setPosition(s.width/2, s.height/2);
1009
1010 addChild(_totalSprites);
1011
1012 scheduleUpdate();
1013}
cocos2d::Label * _totalSprites

引用了 _spritesAnchor , 以及 _totalSprites.

◆ ~NonBatchSprites()

NonBatchSprites::~NonBatchSprites ( )
protectedvirtual

在文件 NewRendererTest.cpp1085 行定义.

1086{
1087
1088}

成员函数说明

◆ CREATE_FUNC()

NonBatchSprites::CREATE_FUNC ( NonBatchSprites  )

◆ createSprite()

void NonBatchSprites::createSprite ( )
protected

在文件 NewRendererTest.cpp1015 行定义.

1016{
1017
1018 Size s = Director::getInstance()->getWinSize();
1019 Sprite* sprite = nullptr;
1020 if (_spriteIndex % 2 == 0)
1021 {
1022 sprite = Sprite::create("Images/grossini_dance_05.png");
1023 }
1024 else
1025 {
1026 sprite = Sprite::create("Images/grossini_dance_01.png");
1027 }
1028
1029 if (!sprite) return;
1030 auto r = rand_0_1() * 0.6 + 0.2;
1031 sprite->setScale(r, r);
1032 float x = ((float)std::rand()) / RAND_MAX;
1033 float y = ((float)std::rand()) / RAND_MAX;
1034 sprite->runAction(RepeatForever::create(RotateBy::create(1, 45)));
1035
1036 sprite->setPosition(Vec2(x * s.width, y * s.height));
1037 _spritesAnchor->addChild(sprite);
1038
1039 _spriteIndex++;
1040 std::stringstream ss;
1041 ss << _spriteIndex << " sprites";
1042 _totalSprites->setString(ss.str());
1043}

引用了 _spriteIndex, _spritesAnchor , 以及 _totalSprites.

被这些函数引用 update().

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

◆ subtitle()

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

重载 MultiSceneTest .

在文件 NewRendererTest.cpp1095 行定义.

1096{
1097#if defined(COCOS2D_DEBUG) && COCOS2D_DEBUG == 1
1098 return "DEBUG: simulate lots of sprites, drop to 30 fps";
1099#else
1100 return "RELEASE: simulate lots of sprites, drop to 30 fps";
1101#endif
1102}

◆ title()

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

重载 MultiSceneTest .

在文件 NewRendererTest.cpp1090 行定义.

1091{
1092 return "Non Batched Sprites";
1093}

◆ update()

void NonBatchSprites::update ( float  dt)
overridevirtual

在文件 NewRendererTest.cpp1045 行定义.

1046{
1047
1048 if( dt <= 1.0f / 28.0f && dt >= 1.0f/ 31.0f)
1049 {
1050 _around30fps.hit();
1051 }
1052 else
1053 {
1055 }
1056
1057 _maDt = 0.7f * _maDt + 0.3f * dt;
1058 _rmaDt = 0.5f * _rmaDt + 0.5f * dt;
1059 if(_maDt <= DEST_DT_30FPS) {
1060 _contSlow.cancel();
1061 _contFast.hit();
1062 if(_contFast.ok()){
1063 auto t2 = DEST_DT_30FPS - _rmaDt;
1064 auto delta = (int)(t2 / _rmaDt * _spriteIndex * 0.1);
1065 delta =std::min(20, std::max(1, delta));
1066 for(int i =0 ;i< delta; i++) {
1067 createSprite();
1068 }
1069 }
1070 }else{
1071 _contSlow.hit();
1072 _contFast.cancel();
1073 }
1074
1075 if(_contSlow.ok() || _around30fps.ok())
1076 {
1077 unscheduleUpdate();
1078 std::stringstream ss;
1079 ss << _spriteIndex << " sprites, DONE!";
1080 _totalSprites->setString(ss.str());
1081 _totalSprites->setScale(1.2);
1082 }
1083}
const float DEST_DT_30FPS

引用了 _around30fps, _contFast, _contSlow, _maDt, _rmaDt, _spriteIndex, _totalSprites, NonBatchSprites::Ticker::cancel(), createSprite(), DEST_DT_30FPS, NonBatchSprites::Ticker::hit() , 以及 NonBatchSprites::Ticker::ok().

+ 函数调用图:

类成员变量说明

◆ _around30fps

Ticker NonBatchSprites::_around30fps = Ticker(60 * 3)
protected

在文件 NewRendererTest.h278 行定义.

被这些函数引用 update().

◆ _contFast

Ticker NonBatchSprites::_contFast = Ticker(2)
protected

在文件 NewRendererTest.h277 行定义.

被这些函数引用 update().

◆ _contSlow

Ticker NonBatchSprites::_contSlow = Ticker(20)
protected

在文件 NewRendererTest.h276 行定义.

被这些函数引用 update().

◆ _maDt

float NonBatchSprites::_maDt = 1.0f / 60.0f
protected

在文件 NewRendererTest.h272 行定义.

被这些函数引用 update().

◆ _rmaDt

float NonBatchSprites::_rmaDt = 1.0f/ 60.0f
protected

在文件 NewRendererTest.h273 行定义.

被这些函数引用 update().

◆ _spriteIndex

int NonBatchSprites::_spriteIndex = 0
protected

在文件 NewRendererTest.h271 行定义.

被这些函数引用 createSprite() , 以及 update().

◆ _spritesAnchor

Node* NonBatchSprites::_spritesAnchor = nullptr
protected

在文件 NewRendererTest.h270 行定义.

被这些函数引用 createSprite() , 以及 NonBatchSprites().

◆ _totalSprites

cocos2d::Label* NonBatchSprites::_totalSprites = nullptr
protected

在文件 NewRendererTest.h275 行定义.

被这些函数引用 createSprite(), NonBatchSprites() , 以及 update().

◆ DEST_DT_30FPS

const float NonBatchSprites::DEST_DT_30FPS = 1.0f / 30.0f
protected

在文件 NewRendererTest.h274 行定义.

被这些函数引用 update().


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