PuzzleSDK
TouchableSpriteTest类 参考

#include <NewEventDispatcherTest.h>

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

Public 成员函数

 CREATE_FUNC (TouchableSpriteTest)
 
virtual void onEnter () override
 
virtual std::string title () const override
 
virtual std::string subtitle () const 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
 

额外继承的成员函数

- 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
 

详细描述

在文件 NewEventDispatcherTest.h48 行定义.

成员函数说明

◆ CREATE_FUNC()

TouchableSpriteTest::CREATE_FUNC ( TouchableSpriteTest  )

◆ onEnter()

void TouchableSpriteTest::onEnter ( )
overridevirtual

重载 TestCase .

在文件 NewEventDispatcherTest.cpp69 行定义.

70{
72
73 Vec2 origin = Director::getInstance()->getVisibleOrigin();
74 Size size = Director::getInstance()->getVisibleSize();
75
76 auto containerForSprite1 = Node::create();
77 auto sprite1 = Sprite::create("Images/CyanSquare.png");
78 sprite1->setPosition(origin+Vec2(size.width/2, size.height/2) + Vec2(-80.0f, 80.0f));
79 containerForSprite1->addChild(sprite1);
80 addChild(containerForSprite1, 10);
81
82 auto sprite2 = Sprite::create("Images/MagentaSquare.png");
83 sprite2->setPosition(origin+Vec2(size.width/2, size.height/2));
84 addChild(sprite2, 20);
85
86 auto sprite3 = Sprite::create("Images/YellowSquare.png");
87 sprite3->setPosition(Vec2(0, 0));
88 sprite2->addChild(sprite3, 1);
89
90 // Make sprite1 touchable
91 auto listener1 = EventListenerTouchOneByOne::create();
92 listener1->setSwallowTouches(true);
93
94 listener1->onTouchBegan = [](Touch* touch, Event* event){
95 auto target = static_cast<Sprite*>(event->getCurrentTarget());
96
97 Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
98 Size s = target->getContentSize();
99 Rect rect = Rect(0, 0, s.width, s.height);
100
101 if (rect.containsPoint(locationInNode))
102 {
103 log("sprite began... x = %f, y = %f", locationInNode.x, locationInNode.y);
104 target->setOpacity(180);
105 return true;
106 }
107 return false;
108 };
109
110 listener1->onTouchMoved = [](Touch* touch, Event* event){
111 auto target = static_cast<Sprite*>(event->getCurrentTarget());
112 target->setPosition(target->getPosition() + touch->getDelta());
113 };
114
115 listener1->onTouchEnded = [=](Touch* touch, Event* event){
116 auto target = static_cast<Sprite*>(event->getCurrentTarget());
117 log("sprite onTouchesEnded.. ");
118 target->setOpacity(255);
119 if (target == sprite2)
120 {
121 containerForSprite1->setLocalZOrder(100);
122 }
123 else if(target == sprite1)
124 {
125 containerForSprite1->setLocalZOrder(0);
126 }
127 };
128
129 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, sprite1);
130 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite2);
131 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite3);
132
133
134 auto removeAllTouchItem = MenuItemFont::create("Remove All Touch Listeners", [this](Ref* sender){
135 auto senderItem = static_cast<MenuItemFont*>(sender);
136 senderItem->setString("Only Next item could be clicked");
137
138 _eventDispatcher->removeEventListenersForType(EventListener::Type::TOUCH_ONE_BY_ONE);
139
140 auto nextItem = MenuItemFont::create("Next", [=](Ref* sender){
142 });
143
144 nextItem->setFontSizeObj(16);
145 nextItem->setPosition(VisibleRect::right() + Vec2(-100.0f, -30.0f));
146
147 auto menu2 = Menu::create(nextItem, nullptr);
148 menu2->setPosition(Vec2(0, 0));
149 menu2->setAnchorPoint(Vec2(0, 0));
150 this->addChild(menu2);
151 });
152
153 removeAllTouchItem->setFontSizeObj(16);
154 removeAllTouchItem->setPosition(VisibleRect::right() + Vec2(-100.0f, 0.0f));
155
156 auto menu = Menu::create(removeAllTouchItem, nullptr);
157 menu->setPosition(Vec2(0, 0));
158 menu->setAnchorPoint(Vec2(0, 0));
159 addChild(menu);
160}
TestSuite * getTestSuite() const
Definition: BaseTest.h:83
virtual void onEnter() override
Definition: BaseTest.cpp:430
virtual void enterNextTest()
Definition: BaseTest.cpp:309
static cocos2d::Vec2 right()
Definition: VisibleRect.cpp:51

引用了 TestSuite::enterNextTest(), TestCase::getTestSuite(), TestCase::onEnter() , 以及 VisibleRect::right().

+ 函数调用图:

◆ subtitle()

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

重载 TestCase .

在文件 NewEventDispatcherTest.cpp167 行定义.

168{
169 return "Please drag the blocks";
170}

◆ title()

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

重载 EventDispatcherTestDemo .

在文件 NewEventDispatcherTest.cpp162 行定义.

163{
164 return "Touchable Sprite Test";
165}

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