PuzzleSDK
UIPageViewTouchPropagationTest类 参考

#include <UIPageViewTest.h>

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

Public 成员函数

 CREATE_FUNC (UIPageViewTouchPropagationTest)
 
 UIPageViewTouchPropagationTest ()
 
 ~UIPageViewTouchPropagationTest ()
 
virtual bool init () override
 
void pageViewEvent (cocos2d::Ref *sender, cocos2d::ui::PageView::EventType type)
 
void onButtonClicked (cocos2d::Ref *sender, cocos2d::ui::Widget::TouchEventType type)
 
- Public 成员函数 继承自 UIScene
 UIScene ()
 
 ~UIScene ()
 
virtual void onEnter () override
 
- Public 成员函数 继承自 TestCase
 TestCase ()
 
 ~TestCase ()
 
virtual std::string title () const
 
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
 

Protected 属性

cocos2d::ui::Text * _displayValueLabel
 
- Protected 属性 继承自 UIScene
cocos2d::Layer * _uiLayer
 
cocos2d::ui::Layout * _widget
 
cocos2d::ui::Text * _sceneTitle
 
- 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
 

详细描述

在文件 UIPageViewTest.h65 行定义.

构造及析构函数说明

◆ UIPageViewTouchPropagationTest()

UIPageViewTouchPropagationTest::UIPageViewTouchPropagationTest ( )

在文件 UIPageViewTest.cpp255 行定义.

256: _displayValueLabel(nullptr)
257{
258
259}
cocos2d::ui::Text * _displayValueLabel

◆ ~UIPageViewTouchPropagationTest()

UIPageViewTouchPropagationTest::~UIPageViewTouchPropagationTest ( )

在文件 UIPageViewTest.cpp261 行定义.

262{
263}

成员函数说明

◆ CREATE_FUNC()

UIPageViewTouchPropagationTest::CREATE_FUNC ( UIPageViewTouchPropagationTest  )

◆ init()

bool UIPageViewTouchPropagationTest::init ( )
overridevirtual

重载 UIScene .

在文件 UIPageViewTest.cpp265 行定义.

266{
267 if (UIScene::init())
268 {
269 Size widgetSize = _widget->getContentSize();
270
271 // Add a label in which the dragpanel events will be displayed
272 _displayValueLabel = Text::create("Move by horizontal direction", "fonts/Marker Felt.ttf", 32);
273 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
274 _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f,
275 widgetSize.height / 2.0f +
276 _displayValueLabel->getContentSize().height * 1.5));
277 _uiLayer->addChild(_displayValueLabel);
278
279 // Add the black background
280 Text* alert = Text::create("PageView Touch Propagation", "fonts/Marker Felt.ttf", 30);
281 alert->setColor(Color3B(159, 168, 176));
282 alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
283 _uiLayer->addChild(alert);
284
285 Layout* root = static_cast<Layout*>(_uiLayer->getChildByTag(81));
286
287 Layout* background = dynamic_cast<Layout*>(root->getChildByName("background_Panel"));
288
289 // Create the page view
290 PageView* pageView = PageView::create();
291 pageView->setContentSize(Size(240.0f, 130.0f));
292 pageView->setAnchorPoint(Vec2(0.5f,0.5f));
293 Size backgroundSize = background->getContentSize();
294 pageView->setPosition(Vec2(widgetSize.width / 2.0f ,widgetSize.height / 2.0f));
295 pageView->setBackGroundColor(Color3B::GREEN);
296 pageView->setBackGroundColorType(Layout::BackGroundColorType::SOLID);
297
298 int pageCount = 4;
299 for (int i = 0; i < pageCount; ++i)
300 {
301 HBox* outerBox = HBox::create();
302 outerBox->setContentSize(Size(240.0f, 130.0f));
303
304 for (int k = 0; k < 2; ++k) {
305 VBox* innerBox = VBox::create();
306
307 for (int j = 0; j < 3; j++) {
308 Button *btn = Button::create("cocosui/animationbuttonnormal.png",
309 "cocosui/animationbuttonpressed.png");
310 btn->setName(StringUtils::format("button %d", j));
311 btn->addTouchEventListener( CC_CALLBACK_2(UIPageViewTouchPropagationTest::onButtonClicked, this));
312
313 innerBox->addChild(btn);
314 }
315
316 LinearLayoutParameter *parameter = LinearLayoutParameter::create();
317 parameter->setMargin(Margin(0.0f,0.0f,100.0f,0.0f));
318 innerBox->setLayoutParameter(parameter);
319
320 outerBox->addChild(innerBox);
321
322 }
323
324 pageView->insertCustomItem(outerBox, i);
325 }
326
327 pageView->addEventListener((PageView::ccPageViewCallback)CC_CALLBACK_2(UIPageViewTouchPropagationTest::pageViewEvent, this));
328 pageView->setName("pageView");
329 pageView->addTouchEventListener([](Ref* sender, Widget::TouchEventType type){
330 if (type == Widget::TouchEventType::BEGAN)
331 {
332 CCLOG("page view touch began");
333 }
334 else if(type == Widget::TouchEventType::MOVED)
335 {
336 CCLOG("page view touch moved");
337 }
338 else if(type == Widget::TouchEventType::ENDED)
339 {
340 CCLOG("page view touch ended");
341 }
342 else
343 {
344 CCLOG("page view touch cancelled");
345 }
346 });
347 _uiLayer->addChild(pageView);
348
349 Text *propagationText = Text::create("Allow Propagation", "Arial", 10);
350 propagationText->setAnchorPoint(Vec2(0.0f,0.5f));
351 propagationText->setTextColor(Color4B::RED);
352 propagationText->setPosition(Vec2(0.0f, pageView->getPosition().y + 50));
353 _uiLayer->addChild(propagationText);
354
355 Text *swallowTouchText = Text::create("Swallow Touches", "Arial", 10);
356 swallowTouchText->setAnchorPoint(Vec2(0.f,0.5f));
357 swallowTouchText->setTextColor(Color4B::RED);
358 swallowTouchText->setPosition(Vec2(0.0f, pageView->getPosition().y));
359 _uiLayer->addChild(swallowTouchText);
360
361 // Create the checkbox
362 CheckBox* checkBox1 = CheckBox::create("cocosui/check_box_normal.png",
363 "cocosui/check_box_normal_press.png",
364 "cocosui/check_box_active.png",
365 "cocosui/check_box_normal_disable.png",
366 "cocosui/check_box_active_disable.png");
367 checkBox1->setPosition(propagationText->getPosition() + Vec2(propagationText->getContentSize().width/2, -20.0f));
368
369 checkBox1->setName("propagation");
370 _uiLayer->addChild(checkBox1);
371
372
373 // Create the checkbox
374 CheckBox* checkBox2 = CheckBox::create("cocosui/check_box_normal.png",
375 "cocosui/check_box_normal_press.png",
376 "cocosui/check_box_active.png",
377 "cocosui/check_box_normal_disable.png",
378 "cocosui/check_box_active_disable.png");
379 checkBox2->setPosition(swallowTouchText->getPosition() + Vec2(swallowTouchText->getContentSize().width/2, -20.0f));
380
381 checkBox2->setName("swallow");
382 _uiLayer->addChild(checkBox2);
383
384
385 auto eventListener = EventListenerTouchOneByOne::create();
386 eventListener->onTouchBegan = [](Touch* touch, Event* event) -> bool{
387 CCLOG("layout receives touches");
388 return true;
389 };
390 _eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener, this);
391
392 return true;
393 }
394 return false;
395}
void onButtonClicked(cocos2d::Ref *sender, cocos2d::ui::Widget::TouchEventType type)
void pageViewEvent(cocos2d::Ref *sender, cocos2d::ui::PageView::EventType type)
cocos2d::Layer * _uiLayer
Definition: UIScene.h:44
virtual bool init() override
Definition: UIScene.cpp:46
cocos2d::ui::Layout * _widget
Definition: UIScene.h:45

引用了 _displayValueLabel, UIScene::_uiLayer, UIScene::_widget, UIScene::init(), onButtonClicked() , 以及 pageViewEvent().

+ 函数调用图:

◆ onButtonClicked()

void UIPageViewTouchPropagationTest::onButtonClicked ( cocos2d::Ref *  sender,
cocos2d::ui::Widget::TouchEventType  type 
)

在文件 UIPageViewTest.cpp397 行定义.

398{
399 Button *btn = (Button*)pSender;
400 CheckBox *ck1 = (CheckBox*)_uiLayer->getChildByName("propagation");
401 CheckBox *ck2 = (CheckBox*)_uiLayer->getChildByName("swallow");
402 auto pageView = (PageView*)_uiLayer->getChildByName("pageView");
403
404 if (type == Widget::TouchEventType::BEGAN)
405 {
406 if (ck1->isSelected())
407 {
408 btn->setPropagateTouchEvents(true);
409 pageView->setPropagateTouchEvents(true);
410
411 }else
412 {
413 btn->setPropagateTouchEvents(false);
414 pageView->setPropagateTouchEvents(false);
415 }
416
417 if (ck2->isSelected())
418 {
419 btn->setSwallowTouches(true);
420 pageView->setSwallowTouches(true);
421 }else
422 {
423 btn->setSwallowTouches(false);
424 pageView->setSwallowTouches(false);
425 }
426 }
427 if (type == Widget::TouchEventType::ENDED) {
428 CCLOG("button clicked");
429 }
430}

引用了 UIScene::_uiLayer.

被这些函数引用 init().

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

◆ pageViewEvent()

void UIPageViewTouchPropagationTest::pageViewEvent ( cocos2d::Ref *  sender,
cocos2d::ui::PageView::EventType  type 
)

在文件 UIPageViewTest.cpp433 行定义.

434{
435 switch (type)
436 {
437 case PageView::EventType::TURNING:
438 {
439 PageView* pageView = dynamic_cast<PageView*>(pSender);
440
441 _displayValueLabel->setString(StringUtils::format("page = %ld", static_cast<long>(pageView->getCurrentPageIndex() + 1)));
442 }
443 break;
444
445 default:
446 break;
447 }
448}

引用了 _displayValueLabel.

被这些函数引用 init().

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

类成员变量说明

◆ _displayValueLabel

cocos2d::ui::Text* UIPageViewTouchPropagationTest::_displayValueLabel
protected

在文件 UIPageViewTest.h79 行定义.

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


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