PuzzleSDK
SpritePolygonTestSlider类 参考

#include <SpritePolygonTest.h>

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

Protected 成员函数

cocos2d::Sprite * makeSprite (const std::string &filename, const cocos2d::Vec2 &pos)
 
virtual bool init () override
 
void initSliders ()
 
virtual void initSprites ()
 
void makeSprites (const std::string *list, const int count, const float y)
 
void changeEpsilon (Ref *pSender, cocos2d::ui::Slider::EventType type)
 
void updateLabel (const cocos2d::Sprite *sp, const cocos2d::PolygonInfo &pinfo)
 
- Protected 成员函数 继承自 SpritePolygonTestCase
virtual std::string title () const override
 
virtual std::string subtitle () const override
 
virtual void onEnter () override
 
virtual void onExit () override
 
 SpritePolygonTestCase ()
 
 ~SpritePolygonTestCase ()
 
void updateDrawNode ()
 

Protected 属性

cocos2d::Label * _epsilonLabel
 
int _tagIndex
 
- Protected 属性 继承自 SpritePolygonTestCase
std::string _title
 
std::string _subtitle
 
bool _isDebugDraw
 
bool _isNeedDebugMenu
 
cocos2d::Vector< cocos2d::DrawNode * > _drawNodes
 
- 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
 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
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 

详细描述

在文件 SpritePolygonTest.h76 行定义.

成员函数说明

◆ changeEpsilon()

void SpritePolygonTestSlider::changeEpsilon ( Ref *  pSender,
cocos2d::ui::Slider::EventType  type 
)
protected

在文件 SpritePolygonTest.cpp320 行定义.

321{
322 if (type == cocos2d::ui::Slider::EventType::ON_PERCENTAGE_CHANGED)
323 {
324 cocos2d::ui::Slider* slider = dynamic_cast<cocos2d::ui::Slider*>(pSender);
325 float epsilon = powf(slider->getPercent()/100.0,2)*19.0f + 1.0f;
326 for(auto child : _children)
327 {
328 if(child->getName().size())
329 {
330 Sprite *sp = (Sprite*)child;
331 auto file = sp->getName();
332 auto pinfo = AutoPolygon::generatePolygon(file, Rect::ZERO, epsilon);
333 sp->setPolygonInfo(pinfo);
334 updateLabel(sp, pinfo);
335 }
336 }
337 _epsilonLabel->setString("Epsilon: "+ Value(epsilon).asString());
339 }
340}
cocos2d::Label * _epsilonLabel
void updateLabel(const cocos2d::Sprite *sp, const cocos2d::PolygonInfo &pinfo)

引用了 _epsilonLabel, SpritePolygonTestCase::updateDrawNode() , 以及 updateLabel().

被这些函数引用 initSliders().

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

◆ init()

bool SpritePolygonTestSlider::init ( )
overrideprotectedvirtual

重载 SpritePolygonTestCase .

在文件 SpritePolygonTest.cpp278 行定义.

279{
281 {
282 initSliders();
283 initSprites();
284 return true;
285 }
286 return false;
287}
virtual bool init() override

引用了 SpritePolygonTestCase::init(), initSliders() , 以及 initSprites().

+ 函数调用图:

◆ initSliders()

void SpritePolygonTestSlider::initSliders ( )
protected

在文件 SpritePolygonTest.cpp289 行定义.

290{
291 auto vsize =Director::getInstance()->getVisibleSize();
292 cocos2d::ui::Slider* slider = cocos2d::ui::Slider::create();
293 slider->loadBarTexture("cocosui/sliderTrack.png");
294 slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", "");
295 slider->loadProgressBarTexture("cocosui/sliderProgress.png");
296 slider->setPosition(Vec2(vsize.width/2, vsize.height/4));
297
298 auto ttfConfig = TTFConfig("fonts/arial.ttf", 8);
299 _epsilonLabel = Label::createWithTTF(ttfConfig, "Epsilon: 2.0");
300 addChild(_epsilonLabel);
301 _epsilonLabel->setPosition(Vec2(vsize.width/2, vsize.height/4 + 15));
302 addChild(slider);
303
304 slider->addEventListener(CC_CALLBACK_2(SpritePolygonTestSlider::changeEpsilon, this));
305 slider->setPercent((int)(sqrtf(1.0f/19.0f)*100));
306
307}
void changeEpsilon(Ref *pSender, cocos2d::ui::Slider::EventType type)

引用了 _epsilonLabel , 以及 changeEpsilon().

被这些函数引用 init().

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

◆ initSprites()

virtual void SpritePolygonTestSlider::initSprites ( )
inlineprotectedvirtual

SpritePolygonTest3 , 以及 SpritePolygonTest4 重载.

在文件 SpritePolygonTest.h84 行定义.

84{};

被这些函数引用 init().

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

◆ makeSprite()

Sprite * SpritePolygonTestSlider::makeSprite ( const std::string &  filename,
const cocos2d::Vec2 &  pos 
)
protected

在文件 SpritePolygonTest.cpp350 行定义.

351{
352 //Sprite
353 auto quadSize = Sprite::create(filename)->getContentSize();
354 int originalSize = quadSize.width * quadSize.height;
355 auto pinfo = AutoPolygon::generatePolygon(filename);
356 auto ret = Sprite::create(pinfo);
357 ret->setName(filename);
358 ret->setTag(_tagIndex);
359 _tagIndex++;
360 ret->setPosition(pos);
361
362 //DrawNode
363 auto drawNode = DrawNode::create();
364 _drawNodes.pushBack(drawNode);
365 drawNode->setTag(ret->getTag());
366 drawNode->clear();
367 ret->addChild(drawNode);
368
369 //Label
370 auto ttfConfig = TTFConfig("fonts/arial.ttf", 8);
371 auto spArea = Label::createWithTTF(ttfConfig, filename+"\nVerts: "+Value((int)pinfo.getVertCount()).asString()+ "\nPixels: "+Value((int)(pinfo.getArea()/originalSize*100)).asString()+"%");
372 ret->addChild(spArea);
373 spArea->setAnchorPoint(Vec2(0.0f,1.0f));
374 spArea->setName(filename);
375 ret->setAnchorPoint(Vec2(0.5f, 0.0f));
376
378
379 return ret;
380}
cocos2d::Vector< cocos2d::DrawNode * > _drawNodes

引用了 SpritePolygonTestCase::_drawNodes, _tagIndex , 以及 SpritePolygonTestCase::updateDrawNode().

被这些函数引用 makeSprites().

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

◆ makeSprites()

void SpritePolygonTestSlider::makeSprites ( const std::string *  list,
const int  count,
const float  y 
)
protected

在文件 SpritePolygonTest.cpp309 行定义.

310{
311 auto vsize = Director::getInstance()->getVisibleSize();
312 for(int i = 0; i < count; i++)
313 {
314 float offset = (vsize.width/(count+1)) * (i+1);
315 auto sp = makeSprite(list[i], Vec2(offset, y));
316 addChild(sp);
317 }
318}
cocos2d::Sprite * makeSprite(const std::string &filename, const cocos2d::Vec2 &pos)

引用了 makeSprite().

被这些函数引用 SpritePolygonTest3::initSprites() , 以及 SpritePolygonTest4::initSprites().

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

◆ updateLabel()

void SpritePolygonTestSlider::updateLabel ( const cocos2d::Sprite *  sp,
const cocos2d::PolygonInfo &  pinfo 
)
protected

在文件 SpritePolygonTest.cpp342 行定义.

343{
344 Label *label = (Label*)(sp->getChildByName(sp->getName()));
345 auto filename = sp->getName();
346 auto size = pinfo.getRect().size/Director::getInstance()->getContentScaleFactor();
347 label->setString(filename+"\nVerts: "+Value((int)pinfo.getVertCount()).asString()+ "\nPixels: "+Value((int)(pinfo.getArea()/(size.width*size.height)*100)).asString()+"%");
348}

被这些函数引用 changeEpsilon().

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

类成员变量说明

◆ _epsilonLabel

cocos2d::Label* SpritePolygonTestSlider::_epsilonLabel
protected

在文件 SpritePolygonTest.h79 行定义.

被这些函数引用 changeEpsilon() , 以及 initSliders().

◆ _tagIndex

int SpritePolygonTestSlider::_tagIndex
protected

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