PuzzleSDK
HoleDemo类 参考

#include <ClippingNodeTest.h>

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

Public 成员函数

 CREATE_FUNC (HoleDemo)
 
 ~HoleDemo ()
 
virtual void setup () override
 
virtual std::string title () const override
 
virtual std::string subtitle () const override
 
void pokeHoleAtPoint (cocos2d::Vec2 point)
 
void onTouchesBegan (const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
 
- Public 成员函数 继承自 BaseClippingNodeTest
 CREATE_FUNC (BaseClippingNodeTest)
 
 ~BaseClippingNodeTest ()
 
virtual bool init () 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
 

Private 属性

cocos2d::ClippingNode * _outerClipper
 
cocos2d::Node * _holes
 
cocos2d::Node * _holesStencil
 

额外继承的成员函数

- 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
 

详细描述

在文件 ClippingNodeTest.h133 行定义.

构造及析构函数说明

◆ ~HoleDemo()

HoleDemo::~HoleDemo ( )

在文件 ClippingNodeTest.cpp347 行定义.

348{
349 CC_SAFE_RELEASE(_outerClipper);
350 CC_SAFE_RELEASE(_holes);
351 CC_SAFE_RELEASE(_holesStencil);
352}
cocos2d::Node * _holesStencil
cocos2d::Node * _holes
cocos2d::ClippingNode * _outerClipper

引用了 _holes, _holesStencil , 以及 _outerClipper.

成员函数说明

◆ CREATE_FUNC()

HoleDemo::CREATE_FUNC ( HoleDemo  )

◆ onTouchesBegan()

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

在文件 ClippingNodeTest.cpp431 行定义.

432{
433 Touch *touch = (Touch *)touches[0];
434 Vec2 point = _outerClipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView()));
435 auto rect = Rect(0, 0, _outerClipper->getContentSize().width, _outerClipper->getContentSize().height);
436 if (!rect.containsPoint(point)) return;
437 this->pokeHoleAtPoint(point);
438}
void pokeHoleAtPoint(cocos2d::Vec2 point)

引用了 _outerClipper , 以及 pokeHoleAtPoint().

被这些函数引用 setup().

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

◆ pokeHoleAtPoint()

void HoleDemo::pokeHoleAtPoint ( cocos2d::Vec2  point)

在文件 ClippingNodeTest.cpp407 行定义.

408{
409 float scale = CCRANDOM_0_1() * 0.2 + 0.9;
410 float rotation = CCRANDOM_0_1() * 360;
411
412 auto hole = Sprite::create("Images/hole_effect.png");
413 hole->setPosition( point );
414 hole->setRotation( rotation );
415 hole->setScale( scale );
416
417 _holes->addChild(hole);
418
419 auto holeStencil = Sprite::create("Images/hole_stencil.png");
420 holeStencil->setPosition( point );
421 holeStencil->setRotation( rotation );
422 holeStencil->setScale( scale );
423
424 _holesStencil->addChild(holeStencil);
425
426 _outerClipper->runAction(Sequence::createWithTwoActions(ScaleBy::create(0.05f, 0.95f),
427 ScaleTo::create(0.125f, 1)));
428}

引用了 _holes, _holesStencil , 以及 _outerClipper.

被这些函数引用 onTouchesBegan().

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

◆ setup()

void HoleDemo::setup ( )
overridevirtual

重载 BaseClippingNodeTest .

在文件 ClippingNodeTest.cpp364 行定义.

365{
366 auto target = Sprite::create(s_pathBlock);
367 target->setAnchorPoint(Vec2::ZERO);
368 target->setScale(3);
369
370 _outerClipper = ClippingNode::create();
371 _outerClipper->retain();
372 AffineTransform transform = AffineTransform::IDENTITY;
373 transform = AffineTransformScale(transform, target->getScale(), target->getScale());
374
375 _outerClipper->setContentSize(SizeApplyAffineTransform(target->getContentSize(), transform));
376 _outerClipper->setAnchorPoint( Vec2(0.5f, 0.5f) );
377 _outerClipper->setPosition(Vec2(this->getContentSize()) * 0.5f);
378 _outerClipper->runAction(RepeatForever::create(RotateBy::create(1, 45)));
379
380 _outerClipper->setStencil( target );
381
382 auto holesClipper = ClippingNode::create();
383 holesClipper->setInverted(true);
384 holesClipper->setAlphaThreshold( 0.05f );
385
386 holesClipper->addChild(target);
387
388 _holes = Node::create();
389 _holes->retain();
390
391 holesClipper->addChild(_holes);
392
393 _holesStencil = Node::create();
394 _holesStencil->retain();
395
396 holesClipper->setStencil( _holesStencil);
397
398 _outerClipper->addChild(holesClipper);
399
400 this->addChild(_outerClipper);
401
402 auto listener = EventListenerTouchAllAtOnce::create();
403 listener->onTouchesBegan = CC_CALLBACK_2(HoleDemo::onTouchesBegan, this);
404 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
405}
void onTouchesBegan(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
static const char s_pathBlock[]
Definition: testResource.h:37

引用了 _holes, _holesStencil, _outerClipper, onTouchesBegan() , 以及 s_pathBlock.

+ 函数调用图:

◆ subtitle()

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

重载 TestCase .

在文件 ClippingNodeTest.cpp359 行定义.

360{
361 return "Touch/click to poke holes";
362}

◆ title()

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

重载 BaseClippingNodeTest .

在文件 ClippingNodeTest.cpp354 行定义.

355{
356 return "Hole Demo";
357}

类成员变量说明

◆ _holes

cocos2d::Node* HoleDemo::_holes
private

在文件 ClippingNodeTest.h146 行定义.

被这些函数引用 pokeHoleAtPoint(), setup() , 以及 ~HoleDemo().

◆ _holesStencil

cocos2d::Node* HoleDemo::_holesStencil
private

在文件 ClippingNodeTest.h147 行定义.

被这些函数引用 pokeHoleAtPoint(), setup() , 以及 ~HoleDemo().

◆ _outerClipper

cocos2d::ClippingNode* HoleDemo::_outerClipper
private

在文件 ClippingNodeTest.h145 行定义.

被这些函数引用 onTouchesBegan(), pokeHoleAtPoint(), setup() , 以及 ~HoleDemo().


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