PuzzleSDK
Sprite3DReskinTest类 参考

#include <Sprite3DTest.h>

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

Public 成员函数

 CREATE_FUNC (Sprite3DReskinTest)
 
 Sprite3DReskinTest ()
 
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)
 
void menuCallback_reSkin (cocos2d::Ref *sender)
 
- Public 成员函数 继承自 Sprite3DTestDemo
virtual ~Sprite3DTestDemo ()
 
- 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 类型

enum class  SkinType {
  UPPER_BODY = 0 , PANTS , SHOES , HAIR ,
  FACE , HAND , GLASSES , MAX_TYPE
}
 

Protected 成员函数

void applyCurSkin ()
 

Protected 属性

std::vector< std::string > _skins [(int) SkinType::MAX_TYPE]
 
int _curSkin [(int) SkinType::MAX_TYPE]
 
cocos2d::Sprite3D * _sprite
 
- 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
 

详细描述

在文件 Sprite3DTest.h315 行定义.

成员枚举类型说明

◆ SkinType

enum class Sprite3DReskinTest::SkinType
strongprotected
枚举值
UPPER_BODY 
PANTS 
SHOES 
HAIR 
FACE 
HAND 
GLASSES 
MAX_TYPE 

在文件 Sprite3DTest.h329 行定义.

330 {
331 UPPER_BODY = 0,
332 PANTS,
333 SHOES,
334 HAIR,
335 FACE,
336 HAND,
337 GLASSES,
338 MAX_TYPE,
339 };

构造及析构函数说明

◆ Sprite3DReskinTest()

Sprite3DReskinTest::Sprite3DReskinTest ( )

在文件 Sprite3DTest.cpp1290 行定义.

1291 : _sprite(nullptr)
1292{
1293 auto s = Director::getInstance()->getWinSize();
1294 addNewSpriteWithCoords(Vec2(s.width / 2, s.height / 2));
1295
1296 auto listener = EventListenerTouchAllAtOnce::create();
1297 listener->onTouchesEnded = CC_CALLBACK_2(Sprite3DReskinTest::onTouchesEnded, this);
1298 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
1299 TTFConfig ttfConfig("fonts/arial.ttf", 20);
1300 auto label1 = Label::createWithTTF(ttfConfig, "Hair");
1301 auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_reSkin, this));
1302 auto label2 = Label::createWithTTF(ttfConfig, "Glasses");
1303 auto item2 = MenuItemLabel::create(label2, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_reSkin, this));
1304 auto label3 = Label::createWithTTF(ttfConfig, "Coat");
1305 auto item3 = MenuItemLabel::create(label3, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_reSkin, this));
1306 auto label4 = Label::createWithTTF(ttfConfig, "Pants");
1307 auto item4 = MenuItemLabel::create(label4, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_reSkin, this));
1308 auto label5 = Label::createWithTTF(ttfConfig, "Shoes");
1309 auto item5 = MenuItemLabel::create(label5, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_reSkin, this));
1310 item1->setPosition(Vec2(VisibleRect::left().x + 50, VisibleRect::bottom().y + item1->getContentSize().height * 4));
1311 item2->setPosition(Vec2(VisibleRect::left().x + 50, VisibleRect::bottom().y + item1->getContentSize().height * 5));
1312 item3->setPosition(Vec2(VisibleRect::left().x + 50, VisibleRect::bottom().y + item1->getContentSize().height * 6));
1313 item4->setPosition(Vec2(VisibleRect::left().x + 50, VisibleRect::bottom().y + item1->getContentSize().height * 7));
1314 item5->setPosition(Vec2(VisibleRect::left().x + 50, VisibleRect::bottom().y + item1->getContentSize().height * 8));
1315 item1->setUserData((void*)SkinType::HAIR);
1316 item2->setUserData((void*)SkinType::GLASSES);
1317 item3->setUserData((void*)SkinType::UPPER_BODY);
1318 item4->setUserData((void*)SkinType::PANTS);
1319 item5->setUserData((void*)SkinType::SHOES);
1320 auto pMenu1 = Menu::create(item1, item2, item3, item4, item5, nullptr);
1321 pMenu1->setPosition(Vec2(0.0f, 0.0f));
1322 this->addChild(pMenu1, 10);
1323
1324}
cocos2d::Sprite3D * _sprite
Definition: Sprite3DTest.h:343
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
void menuCallback_reSkin(cocos2d::Ref *sender)
void addNewSpriteWithCoords(cocos2d::Vec2 p)
static cocos2d::Vec2 bottom()
Definition: VisibleRect.cpp:63
static cocos2d::Vec2 left()
Definition: VisibleRect.cpp:45

引用了 addNewSpriteWithCoords(), VisibleRect::bottom(), GLASSES, HAIR, VisibleRect::left(), menuCallback_reSkin(), onTouchesEnded(), PANTS, SHOES , 以及 UPPER_BODY.

+ 函数调用图:

成员函数说明

◆ addNewSpriteWithCoords()

void Sprite3DReskinTest::addNewSpriteWithCoords ( cocos2d::Vec2  p)

在文件 Sprite3DTest.cpp1344 行定义.

1345{
1346 std::string fileName = "Sprite3DTest/ReskinGirl.c3b";
1347 auto sprite = Sprite3D::create(fileName);
1348 sprite->setScale(4);
1349 sprite->setRotation3D(Vec3(0.0f, 0.0f, 0.0f));
1350 addChild(sprite);
1351 sprite->setPosition(Vec2(p.x, p.y - 60));
1352 auto animation = Animation3D::create(fileName);
1353 if (animation)
1354 {
1355 auto animate = Animate3D::create(animation);
1356
1357 sprite->runAction(RepeatForever::create(animate));
1358 }
1359 _sprite = sprite;
1360
1361 auto& body = _skins[(int)SkinType::UPPER_BODY];
1362 body.push_back("Girl_UpperBody01");
1363 body.push_back("Girl_UpperBody02");
1364
1365 auto& pants = _skins[(int)SkinType::PANTS];
1366 pants.push_back("Girl_LowerBody01");
1367 pants.push_back("Girl_LowerBody02");
1368
1369 auto& shoes = _skins[(int)SkinType::SHOES];
1370 shoes.push_back("Girl_Shoes01");
1371 shoes.push_back("Girl_Shoes02");
1372
1373 auto& hair = _skins[(int)SkinType::HAIR];
1374 hair.push_back("Girl_Hair01");
1375 hair.push_back("Girl_Hair02");
1376
1377 auto& face = _skins[(int)SkinType::FACE];
1378 face.push_back("Girl_Face01");
1379 face.push_back("Girl_Face02");
1380
1381 auto& hand = _skins[(int)SkinType::HAND];
1382 hand.push_back("Girl_Hand01");
1383 hand.push_back("Girl_Hand02");
1384
1385 auto& glasses = _skins[(int)SkinType::GLASSES];
1386 glasses.push_back("");
1387 glasses.push_back("Girl_Glasses01");
1388
1389 memset(_curSkin, 0, (int)SkinType::MAX_TYPE * sizeof(int));
1390
1391 applyCurSkin();
1392}
std::vector< std::string > _skins[(int) SkinType::MAX_TYPE]
Definition: Sprite3DTest.h:341
int _curSkin[(int) SkinType::MAX_TYPE]
Definition: Sprite3DTest.h:342

引用了 _curSkin, _skins, _sprite, applyCurSkin(), FACE, GLASSES, HAIR, HAND, MAX_TYPE, PANTS, SHOES , 以及 UPPER_BODY.

被这些函数引用 Sprite3DReskinTest().

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

◆ applyCurSkin()

void Sprite3DReskinTest::applyCurSkin ( )
protected

在文件 Sprite3DTest.cpp1398 行定义.

1399{
1400 for (ssize_t i = 0; i < _sprite->getMeshCount(); i++) {
1401 auto mesh = _sprite->getMeshByIndex(static_cast<int>(i));
1402 bool isVisible = false;
1403 for (int j = 0; j < (int)SkinType::MAX_TYPE; j++) {
1404 if (mesh->getName() == _skins[j].at(_curSkin[j]))
1405 {
1406 isVisible = true;
1407 break;
1408 }
1409 }
1410 _sprite->getMeshByIndex(static_cast<int>(i))->setVisible(isVisible);
1411 }
1412}

引用了 _curSkin, _skins, _sprite , 以及 MAX_TYPE.

被这些函数引用 addNewSpriteWithCoords() , 以及 menuCallback_reSkin().

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

◆ CREATE_FUNC()

Sprite3DReskinTest::CREATE_FUNC ( Sprite3DReskinTest  )

◆ menuCallback_reSkin()

void Sprite3DReskinTest::menuCallback_reSkin ( cocos2d::Ref *  sender)

在文件 Sprite3DTest.cpp1325 行定义.

1326{
1327 long index = (long)(((MenuItemLabel*)sender)->getUserData());
1328 if (index < (int)SkinType::MAX_TYPE)
1329 {
1330 _curSkin[index] = (_curSkin[index] + 1) % _skins[index].size();
1331 applyCurSkin();
1332 }
1333}

引用了 _curSkin, _skins, applyCurSkin() , 以及 MAX_TYPE.

被这些函数引用 Sprite3DReskinTest().

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

◆ onTouchesEnded()

void Sprite3DReskinTest::onTouchesEnded ( const std::vector< cocos2d::Touch * > &  touches,
cocos2d::Event *  event 
)

在文件 Sprite3DTest.cpp1394 行定义.

1395{
1396}

被这些函数引用 Sprite3DReskinTest().

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

◆ subtitle()

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

重载 TestCase .

在文件 Sprite3DTest.cpp1339 行定义.

1340{
1341 return "";
1342}

◆ title()

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

重载 Sprite3DTestDemo .

在文件 Sprite3DTest.cpp1335 行定义.

1336{
1337 return "Testing Sprite3D Reskin";
1338}

类成员变量说明

◆ _curSkin

int Sprite3DReskinTest::_curSkin[(int) SkinType::MAX_TYPE]
protected

在文件 Sprite3DTest.h342 行定义.

被这些函数引用 addNewSpriteWithCoords(), applyCurSkin() , 以及 menuCallback_reSkin().

◆ _skins

std::vector<std::string> Sprite3DReskinTest::_skins[(int) SkinType::MAX_TYPE]
protected

在文件 Sprite3DTest.h341 行定义.

被这些函数引用 addNewSpriteWithCoords(), applyCurSkin() , 以及 menuCallback_reSkin().

◆ _sprite

cocos2d::Sprite3D* Sprite3DReskinTest::_sprite
protected

在文件 Sprite3DTest.h343 行定义.

被这些函数引用 addNewSpriteWithCoords() , 以及 applyCurSkin().


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