PuzzleSDK
AssetsManagerExLoaderScene类 参考

#include <AssetsManagerExTest.h>

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

Public 成员函数

 AssetsManagerExLoaderScene (int testIndex)
 
void startDownloadCallback (cocos2d::Ref *sender)
 
virtual std::string title () const override
 
virtual bool init () override
 
virtual void onExit () override
 
- Public 成员函数 继承自 TestCase
 TestCase ()
 
 ~TestCase ()
 
virtual std::string subtitle () const
 
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
 

静态 Public 成员函数

static AssetsManagerExLoaderScenecreate (int testIndex)
 

Private 成员函数

void onLoadEnd ()
 

Private 属性

int _testIndex
 
cocos2d::Layer * _loadLayer
 
cocos2d::Menu * _downloadMenu
 
cocos2d::extension::AssetsManagerEx * _am
 
cocos2d::Label * _progress
 
cocos2d::extension::EventListenerAssetsManagerEx * _amListener
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

详细描述

在文件 AssetsManagerExTest.h33 行定义.

构造及析构函数说明

◆ AssetsManagerExLoaderScene()

AssetsManagerExLoaderScene::AssetsManagerExLoaderScene ( int  testIndex)

在文件 AssetsManagerExTest.cpp59 行定义.

60: _testIndex(testIndex)
61, _loadLayer(nullptr)
62, _downloadMenu(nullptr)
63, _am(nullptr)
64, _progress(nullptr)
65, _amListener(nullptr)
66{
67
68}
cocos2d::extension::EventListenerAssetsManagerEx * _amListener
cocos2d::extension::AssetsManagerEx * _am

被这些函数引用 create().

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

成员函数说明

◆ create()

AssetsManagerExLoaderScene * AssetsManagerExLoaderScene::create ( int  testIndex)
static

在文件 AssetsManagerExTest.cpp43 行定义.

44{
45 auto scene = new (std::nothrow) AssetsManagerExLoaderScene(testIndex);
46 if (scene && scene->init())
47 {
48 scene->autorelease();
49 }
50 else
51 {
52 delete scene;
53 scene = nullptr;
54 }
55
56 return scene;
57}

引用了 AssetsManagerExLoaderScene().

+ 函数调用图:

◆ init()

bool AssetsManagerExLoaderScene::init ( )
overridevirtual

在文件 AssetsManagerExTest.cpp70 行定义.

71{
72 if (!TestCase::init())
73 {
74 return false;
75 }
76
77 auto downloadLabel = Label::createWithTTF("Start Download", "fonts/arial.ttf", 16);
78 auto downloadItem = MenuItemLabel::create(downloadLabel, CC_CALLBACK_1(AssetsManagerExLoaderScene::startDownloadCallback, this));
79 downloadItem->setPosition(Vec2(VisibleRect::center().x, VisibleRect::bottom().y + 100));
80 _downloadMenu = Menu::create(downloadItem, nullptr);
81 _downloadMenu->setPosition(Vec2::ZERO);
82 this->addChild(_downloadMenu, 1);
83
84 _loadLayer = Layer::create();
85 addChild(_loadLayer);
86
87 auto sprite = Sprite::create("Images/Icon.png");
88 _loadLayer->addChild(sprite);
89 sprite->setPosition( VisibleRect::center() );
90
91 TTFConfig config("fonts/tahoma.ttf", 30);
92 _progress = Label::createWithTTF(config, "0%", TextHAlignment::CENTER);
93 _progress->setPosition( Vec2(VisibleRect::center().x, VisibleRect::center().y + 50) );
94 _loadLayer->addChild(_progress);
95
96 std::string manifestPath = sceneManifests[_testIndex], storagePath = FileUtils::getInstance()->getWritablePath() + storagePaths[_testIndex];
97 CCLOG("Storage path for this test : %s", storagePath.c_str());
98 _am = AssetsManagerEx::create(manifestPath, storagePath);
99 _am->retain();
100
101 return true;
102}
const char * storagePaths[]
const char * sceneManifests[]
void startDownloadCallback(cocos2d::Ref *sender)
static cocos2d::Vec2 center()
Definition: VisibleRect.cpp:69
static cocos2d::Vec2 bottom()
Definition: VisibleRect.cpp:63

引用了 _am, _downloadMenu, _loadLayer, _progress, _testIndex, VisibleRect::bottom(), VisibleRect::center(), sceneManifests, startDownloadCallback() , 以及 storagePaths.

+ 函数调用图:

◆ onExit()

void AssetsManagerExLoaderScene::onExit ( )
overridevirtual

在文件 AssetsManagerExTest.cpp209 行定义.

210{
211 _eventDispatcher->removeEventListener(_amListener);
212 _am->release();
213 TestCase::onExit();
214}

引用了 _am , 以及 _amListener.

◆ onLoadEnd()

void AssetsManagerExLoaderScene::onLoadEnd ( )
private

在文件 AssetsManagerExTest.cpp104 行定义.

105{
106 removeChild(_loadLayer, true);
107 _loadLayer = nullptr;
108
109 auto backgroundSprite = Sprite::create(backgroundPaths[_testIndex]);
110 addChild(backgroundSprite, 1);
111 backgroundSprite->setPosition(VisibleRect::center());
112}
const char * backgroundPaths[]

引用了 _loadLayer, _testIndex, backgroundPaths , 以及 VisibleRect::center().

被这些函数引用 startDownloadCallback().

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

◆ startDownloadCallback()

void AssetsManagerExLoaderScene::startDownloadCallback ( cocos2d::Ref *  sender)

在文件 AssetsManagerExTest.cpp114 行定义.

115{
116 removeChild(_downloadMenu);
117 _downloadMenu = nullptr;
118
119 if (!_am->getLocalManifest()->isLoaded())
120 {
121 CCLOG("Fail to update assets, step skipped.");
122 onLoadEnd();
123 }
124 else
125 {
126 _amListener = cocos2d::extension::EventListenerAssetsManagerEx::create(_am, [this](EventAssetsManagerEx* event){
127 static int failCount = 0;
128 switch (event->getEventCode())
129 {
130 case EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST:
131 {
132 CCLOG("No local manifest file found, skip assets update.");
133 this->onLoadEnd();
134 }
135 break;
136 case EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION:
137 {
138 std::string assetId = event->getAssetId();
139 float percent = event->getPercent();
140 std::string str;
141 if (assetId == AssetsManagerEx::VERSION_ID)
142 {
143 str = StringUtils::format("Version file: %.2f", percent) + "%";
144 }
145 else if (assetId == AssetsManagerEx::MANIFEST_ID)
146 {
147 str = StringUtils::format("Manifest file: %.2f", percent) + "%";
148 }
149 else
150 {
151 str = StringUtils::format("%.2f", percent) + "%";
152 CCLOG("%.2f Percent", percent);
153 }
154 if (this->_progress != nullptr)
155 this->_progress->setString(str);
156 }
157 break;
158 case EventAssetsManagerEx::EventCode::ERROR_DOWNLOAD_MANIFEST:
159 case EventAssetsManagerEx::EventCode::ERROR_PARSE_MANIFEST:
160 {
161 CCLOG("Fail to download manifest file, update skipped.");
162 this->onLoadEnd();
163 }
164 break;
165 case EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE:
166 case EventAssetsManagerEx::EventCode::UPDATE_FINISHED:
167 {
168 CCLOG("Update finished. %s", event->getMessage().c_str());
169 this->onLoadEnd();
170 }
171 break;
172 case EventAssetsManagerEx::EventCode::UPDATE_FAILED:
173 {
174 CCLOG("Update failed. %s", event->getMessage().c_str());
175
176 failCount++;
177 if (failCount < 5)
178 {
179 _am->downloadFailedAssets();
180 }
181 else
182 {
183 CCLOG("Reach maximum fail count, exit update process");
184 failCount = 0;
185 this->onLoadEnd();
186 }
187 }
188 break;
189 case EventAssetsManagerEx::EventCode::ERROR_UPDATING:
190 {
191 CCLOG("Asset %s : %s", event->getAssetId().c_str(), event->getMessage().c_str());
192 }
193 break;
194 case EventAssetsManagerEx::EventCode::ERROR_DECOMPRESS:
195 {
196 CCLOG("%s", event->getMessage().c_str());
197 }
198 break;
199 default:
200 break;
201 }
202 });
203 Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_amListener, 1);
204
205 _am->update();
206 }
207}

引用了 _am, _amListener, _downloadMenu, _progress , 以及 onLoadEnd().

被这些函数引用 init().

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

◆ title()

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

重载 TestCase .

在文件 AssetsManagerExTest.cpp216 行定义.

217{
218 return "AssetsManagerExTest";
219}

类成员变量说明

◆ _am

cocos2d::extension::AssetsManagerEx* AssetsManagerExLoaderScene::_am
private

在文件 AssetsManagerExTest.h52 行定义.

被这些函数引用 init(), onExit() , 以及 startDownloadCallback().

◆ _amListener

cocos2d::extension::EventListenerAssetsManagerEx* AssetsManagerExLoaderScene::_amListener
private

在文件 AssetsManagerExTest.h54 行定义.

被这些函数引用 onExit() , 以及 startDownloadCallback().

◆ _downloadMenu

cocos2d::Menu* AssetsManagerExLoaderScene::_downloadMenu
private

在文件 AssetsManagerExTest.h50 行定义.

被这些函数引用 init() , 以及 startDownloadCallback().

◆ _loadLayer

cocos2d::Layer* AssetsManagerExLoaderScene::_loadLayer
private

在文件 AssetsManagerExTest.h49 行定义.

被这些函数引用 init() , 以及 onLoadEnd().

◆ _progress

cocos2d::Label* AssetsManagerExLoaderScene::_progress
private

在文件 AssetsManagerExTest.h53 行定义.

被这些函数引用 init() , 以及 startDownloadCallback().

◆ _testIndex

int AssetsManagerExLoaderScene::_testIndex
private

在文件 AssetsManagerExTest.h48 行定义.

被这些函数引用 init() , 以及 onLoadEnd().


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