PuzzleSDK
UIListViewTest_Magnetic类 参考abstract

#include <UIListViewTest.h>

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

Protected 成员函数

virtual bool init () override
 
virtual cocos2d::ui::ScrollView::Direction getListViewDirection () const =0
 

Protected 属性

cocos2d::ui::ListView * _listView
 
cocos2d::ui::Text * _titleLabel
 
cocos2d::ui::Text * _indexLabels [5]
 
- 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 成员函数 继承自 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
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 

详细描述

在文件 UIListViewTest.h157 行定义.

成员函数说明

◆ getListViewDirection()

virtual cocos2d::ui::ScrollView::Direction UIListViewTest_Magnetic::getListViewDirection ( ) const
protectedpure virtual

UIListViewTest_MagneticVertical , 以及 UIListViewTest_MagneticHorizontal 内被实现.

被这些函数引用 init().

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

◆ init()

bool UIListViewTest_Magnetic::init ( )
overrideprotectedvirtual

重载 UIScene .

在文件 UIListViewTest.cpp728 行定义.

729{
730 if(!UIScene::init())
731 {
732 return false;
733 }
734
735 Size layerSize = _uiLayer->getContentSize();
736
737 _titleLabel = Text::create("Magnetic scroll", "fonts/Marker Felt.ttf", 32);
738 _titleLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
739 _titleLabel->setPosition(Vec2(layerSize / 2) + Vec2(0.0f, _titleLabel->getContentSize().height * 3.15f));
740 _uiLayer->addChild(_titleLabel, 3);
741
742 // Create the list view
743 _listView = ListView::create();
744 _listView->setDirection(getListViewDirection());
745 _listView->setBounceEnabled(true);
746 _listView->setBackGroundImage("cocosui/green_edit.png");
747 _listView->setBackGroundImageScale9Enabled(true);
748 _listView->setContentSize(layerSize / 2);
749 _listView->setScrollBarPositionFromCorner(Vec2(7, 7));
750 _listView->setItemsMargin(2.0f);
751 _listView->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
752 _listView->setPosition(layerSize / 2);
753 _uiLayer->addChild(_listView);
754
755 // Guide line for center align
756 {
757 DrawNode* pNode = DrawNode::create();
758 Vec2 center = layerSize / 2;
759 if(getListViewDirection() == ScrollView::Direction::HORIZONTAL)
760 {
761 float halfY = 110;
762 pNode->drawLine(Vec2(center.x, center.y - halfY), Vec2(center.x, center.y + halfY), Color4F(0, 0, 0, 1));
763 }
764 else
765 {
766 float halfX = 150;
767 pNode->drawLine(Vec2(center.x - halfX, center.y), Vec2(center.x + halfX, center.y), Color4F(0, 0, 0, 1));
768 }
769 pNode->setLineWidth(2);
770 _uiLayer->addChild(pNode);
771 }
772
773 // Show the indexes of items on each boundary.
774 {
775 for(int i = 0; i < 5; ++i)
776 {
777 _indexLabels[i] = Text::create(" ", "fonts/Marker Felt.ttf", 12);
778 _indexLabels[i]->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
779 _uiLayer->addChild(_indexLabels[i]);
780 }
781 float deltaX = 145, deltaY = 90;
782 _indexLabels[0]->setPosition(_uiLayer->getContentSize() / 2 + Size(-deltaX, 0.0f)); // left
783 _indexLabels[1]->setPosition(_uiLayer->getContentSize() / 2 + Size(deltaX, 0.0f)); // right
784 _indexLabels[2]->setPosition(_uiLayer->getContentSize() / 2 + Size(0.0f, deltaY)); // top
785 _indexLabels[3]->setPosition(_uiLayer->getContentSize() / 2 + Size(0.0f, -deltaY)); // bottom
786 _indexLabels[4]->setPosition(_uiLayer->getContentSize() / 2 + Size(deltaX, deltaY)); // center
787
788 // Callback
789 _listView->ScrollView::addEventListener([this](Ref* ref, ScrollView::EventType eventType) {
790 ListView* listView = dynamic_cast<ListView*>(ref);
791 if(listView == nullptr || eventType != ScrollView::EventType::CONTAINER_MOVED)
792 {
793 return;
794 }
795 auto left = listView->getLeftmostItemInCurrentView();
796 auto right = listView->getRightmostItemInCurrentView();
797 auto top = listView->getTopmostItemInCurrentView();
798 auto bottom = listView->getBottommostItemInCurrentView();
799 auto center = listView->getCenterItemInCurrentView();
800
801 _indexLabels[0]->setString(StringUtils::format("Left\nindex=%zd", listView->getIndex(left)));
802 _indexLabels[1]->setString(StringUtils::format("RIght\nindex=%zd", listView->getIndex(right)));
803 _indexLabels[2]->setString(StringUtils::format("Top index=%zd", listView->getIndex(top)));
804 _indexLabels[3]->setString(StringUtils::format("Bottom index=%zd", listView->getIndex(bottom)));
805 _indexLabels[4]->setString(StringUtils::format("Center\nindex=%zd", listView->getIndex(center)));
806 });
807 }
808
809 // Initial magnetic type
810 _listView->setMagneticType(ListView::MagneticType::NONE);
811 _titleLabel->setString("MagneticType - NONE");
812
813 // Magnetic change button
814 auto pButton = Button::create("cocosui/backtotoppressed.png", "cocosui/backtotopnormal.png");
815 pButton->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT);
816 pButton->setScale(0.8f);
817 pButton->setPosition(Vec2(layerSize / 2) + Vec2(130.0f, -60.0f));
818 pButton->setTitleText("Next Magnetic");
819 pButton->addClickEventListener([this](Ref*) {
820 ListView::MagneticType eCurrentType = _listView->getMagneticType();
821 ListView::MagneticType eNextType = ListView::MagneticType::NONE;
822 std::string sString;
823 if(eCurrentType == ListView::MagneticType::NONE)
824 {
825 eNextType = ListView::MagneticType::CENTER;
826 sString = "CENTER";
827 }
828 else if(eCurrentType == ListView::MagneticType::CENTER)
829 {
830 eNextType = ListView::MagneticType::BOTH_END;
831 sString = "BOTH_END";
832 }
833 else if(eCurrentType == ListView::MagneticType::BOTH_END)
834 {
835 if(getListViewDirection() == ScrollView::Direction::HORIZONTAL)
836 {
837 eNextType = ListView::MagneticType::LEFT;
838 sString = "LEFT";
839 }
840 else
841 {
842 eNextType = ListView::MagneticType::TOP;
843 sString = "TOP";
844 }
845 }
846 else if(eCurrentType == ListView::MagneticType::LEFT)
847 {
848 eNextType = ListView::MagneticType::RIGHT;
849 sString = "RIGHT";
850 }
851 else if(eCurrentType == ListView::MagneticType::RIGHT)
852 {
853 eNextType = ListView::MagneticType::NONE;
854 sString = "NONE";
855 }
856 else if(eCurrentType == ListView::MagneticType::TOP)
857 {
858 eNextType = ListView::MagneticType::BOTTOM;
859 sString = "BOTTOM";
860 }
861 else if(eCurrentType == ListView::MagneticType::BOTTOM)
862 {
863 eNextType = ListView::MagneticType::NONE;
864 sString = "NONE";
865 }
866 _listView->setMagneticType(eNextType);
867 _titleLabel->setString(StringUtils::format("MagneticType - %s", sString.c_str()));
868 });
869 _uiLayer->addChild(pButton);
870
871 // Add list items
872 static const Size BUTTON_SIZE(100, 70);
873 for (int i = 0; i < 40; ++i)
874 {
875 auto pButton = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png");
876 pButton->setContentSize(BUTTON_SIZE);
877 pButton->setScale9Enabled(true);
878 pButton->setTitleText(StringUtils::format("Button-%d", i));
879 _listView->pushBackCustomItem(pButton);
880 }
881 return true;
882}
cocos2d::ui::Text * _titleLabel
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const =0
cocos2d::ui::ListView * _listView
cocos2d::ui::Text * _indexLabels[5]
cocos2d::Layer * _uiLayer
Definition: UIScene.h:44
virtual bool init() override
Definition: UIScene.cpp:46

引用了 _indexLabels, _listView, _titleLabel, UIScene::_uiLayer, getListViewDirection() , 以及 UIScene::init().

+ 函数调用图:

类成员变量说明

◆ _indexLabels

cocos2d::ui::Text* UIListViewTest_Magnetic::_indexLabels[5]
protected

在文件 UIListViewTest.h165 行定义.

被这些函数引用 init().

◆ _listView

cocos2d::ui::ListView* UIListViewTest_Magnetic::_listView
protected

在文件 UIListViewTest.h163 行定义.

被这些函数引用 init().

◆ _titleLabel

cocos2d::ui::Text* UIListViewTest_Magnetic::_titleLabel
protected

在文件 UIListViewTest.h164 行定义.

被这些函数引用 init().


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