PuzzleSDK
UIListViewTest.h
浏览该文件的文档.
1/****************************************************************************
2 Copyright (c) 2013 cocos2d-x.org
3 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
4
5 http://www.cocos2d-x.org
6
7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to deal
9 in the Software without restriction, including without limitation the rights
10 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in
15 all copies or substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 THE SOFTWARE.
24 ****************************************************************************/
25
26#ifndef __TestCpp__UIListViewTest__
27#define __TestCpp__UIListViewTest__
28
29#include "../UIScene.h"
30#include "ui/UIScrollView.h"
31
32DEFINE_TEST_SUITE(UIListViewTests);
33
35{
36public:
38
41
42 virtual bool init() override;
43 void selectedItemEvent(cocos2d::Ref* sender, cocos2d::ui::ListView::EventType type);
44 void selectedItemEventScrollView(cocos2d::Ref* sender, cocos2d::ui::ScrollView::EventType type);
45 virtual void update(float dt) override;
46
47protected:
48 float getItemPositionYInView(cocos2d::ui::Widget* item) const;
49 void updateItem(int itemID, int templateID);
50
51 cocos2d::ui::Text* _displayValueLabel = nullptr;
52 // How many items we actually spawn, these items will be reused.
53 // Should > listview.width / templateWidth + 2.
54 int _spawnCount = 5;
55 // How many items we need for the ListView. Usually this is a big number.
56 int _totalCount = 50;
57 // when item is away from bufferSzone, we relocate it.
58 // Should be larger than List item width.
59 float _bufferZone = 45.f;
61 // Could tweak this value to adjust ListView data update rate.
62 float _updateInterval = (1.0f / 24);
63 float _updateTimer = 0.f;
64 // Use this value to detect if we are scrolling left or right
65 float _lastContentPosY = 0.f;
66 float _reuseItemOffset = 0.f;
67 cocos2d::ui::ListView* _listView =nullptr;
68 std::vector<std::string> _array;
69 cocos2d::ui::Text* _indexLabels[3] = {nullptr};
70};
71
73{
74public:
76
79
80 virtual bool init() override;
81 void selectedItemEvent(cocos2d::Ref* sender, cocos2d::ui::ListView::EventType type);
82 virtual void update(float dt) override;
83protected:
84 float getItemPositionXInView(cocos2d::ui::Widget* item) const;
85 void updateItem(int itemID, int templateID);
86
87 cocos2d::ui::Text* _displayValueLabel = nullptr;
88 // How many items we actually spawn, these items will be reused.
89 // Should > listview.width / templateWidth + 2.
90 int _spawnCount = 4;
91 // How many items we need for the ListView. Usually this is a big number.
92 int _totalCount = 50;
93 // when item is away from bufferSzone, we relocate it.
94 float _bufferZone = 140.f;
95 float _itemTemplateWidth = 0.f;
96 // Could tweak this value to adjust ListView data update rate.
97 float _updateInterval = 1.0f / 24;
98 float _updateTimer = 0.f;
99 float _lastContentPosX = 0.f;
100 float _reuseItemOffset = 0.f;
101 cocos2d::ui::ListView* _listView = nullptr;
102
103 std::vector<std::string> _array;
104};
105
106class Issue12692 : public UIScene
107{
108public:
110
111 virtual bool init() override;
112};
113
114class Issue8316 : public UIScene
115{
116public:
118
119 virtual bool init() override;
120};
121
122
123// Test for scroll to item
125{
126protected:
127 virtual bool init() override;
128 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const = 0;
129
130 cocos2d::ui::ListView* _listView;
131 cocos2d::ui::Text* _titleLabel;
133};
134
136{
137public:
139 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
140 {
141 return cocos2d::ui::ScrollView::Direction::VERTICAL;
142 }
143};
144
146{
147public:
149 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
150 {
151 return cocos2d::ui::ScrollView::Direction::HORIZONTAL;
152 }
153};
154
155
156// Test for magnetic scroll
158{
159protected:
160 virtual bool init() override;
161 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const = 0;
162
163 cocos2d::ui::ListView* _listView;
164 cocos2d::ui::Text* _titleLabel;
165 cocos2d::ui::Text* _indexLabels[5];
166
167};
168
170{
171public:
173 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
174 {
175 return cocos2d::ui::ScrollView::Direction::VERTICAL;
176 }
177};
178
180{
181public:
183 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
184 {
185 return cocos2d::ui::ScrollView::Direction::HORIZONTAL;
186 }
187};
188
189
190// Test for setting padding
192{
193protected:
194 virtual bool init() override;
195 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const = 0;
196
197 void sliderEvent(cocos2d::Ref *pSender, cocos2d::ui::Slider::EventType type);
198
199 cocos2d::ui::ListView* _listView;
200 cocos2d::ui::Text* _titleLabel;
201 cocos2d::ui::Text* _indexLabels[5];
202 cocos2d::ui::Text* _paddingLabels[4];
203
204};
205
207{
208public:
210 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
211 {
212 return cocos2d::ui::ScrollView::Direction::VERTICAL;
213 }
214};
215
217{
218public:
220 virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
221 {
222 return cocos2d::ui::ScrollView::Direction::HORIZONTAL;
223 }
224};
225
226#endif /* defined(__TestCpp__UIListViewTest__) */
DEFINE_TEST_SUITE(UIListViewTests)
CREATE_FUNC(Issue12692)
virtual bool init() override
virtual bool init() override
CREATE_FUNC(Issue8316)
virtual bool init() override
CREATE_FUNC(UIListViewTest_Horizontal)
void selectedItemEvent(cocos2d::Ref *sender, cocos2d::ui::ListView::EventType type)
virtual void update(float dt) override
float getItemPositionXInView(cocos2d::ui::Widget *item) const
std::vector< std::string > _array
cocos2d::ui::ListView * _listView
cocos2d::ui::Text * _displayValueLabel
void updateItem(int itemID, int templateID)
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
CREATE_FUNC(UIListViewTest_MagneticHorizontal)
cocos2d::ui::Text * _titleLabel
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const =0
virtual bool init() override
cocos2d::ui::ListView * _listView
cocos2d::ui::Text * _indexLabels[5]
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
CREATE_FUNC(UIListViewTest_MagneticVertical)
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
CREATE_FUNC(UIListViewTest_PaddingHorizontal)
virtual bool init() override
cocos2d::ui::Text * _titleLabel
cocos2d::ui::Text * _indexLabels[5]
void sliderEvent(cocos2d::Ref *pSender, cocos2d::ui::Slider::EventType type)
cocos2d::ui::ListView * _listView
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const =0
cocos2d::ui::Text * _paddingLabels[4]
CREATE_FUNC(UIListViewTest_PaddingVertical)
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
CREATE_FUNC(UIListViewTest_ScrollToItemHorizontal)
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const =0
cocos2d::ui::Text * _titleLabel
cocos2d::ui::ListView * _listView
virtual bool init() override
CREATE_FUNC(UIListViewTest_ScrollToItemVertical)
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const
virtual void update(float dt) override
std::vector< std::string > _array
cocos2d::ui::Text * _displayValueLabel
virtual bool init() override
float getItemPositionYInView(cocos2d::ui::Widget *item) const
cocos2d::ui::ListView * _listView
void selectedItemEvent(cocos2d::Ref *sender, cocos2d::ui::ListView::EventType type)
void updateItem(int itemID, int templateID)
cocos2d::ui::Text * _indexLabels[3]
void selectedItemEventScrollView(cocos2d::Ref *sender, cocos2d::ui::ScrollView::EventType type)
CREATE_FUNC(UIListViewTest_Vertical)