标签:
1 //
2 // extensionScrollView.h
3 // VerticalScroll
4 //
5 // Created by students on 16/1/7.
6 //
7 //
8
9 #ifndef __VerticalScroll__extensionScrollView__
10 #define __VerticalScroll__extensionScrollView__
11
12 #include <stdio.h>
13 #include <cocos2d.h>
14 #include <extensions/cocos-ext.h>
15 USING_NS_CC;
16 USING_NS_CC_EXT;
17 class ScrollViewTest:public ScrollViewDelegate,public Layer
18 {
19 public:
20 CREATE_FUNC(ScrollViewTest);
21 bool init();
22
23 virtual void scrollViewDidScroll(ScrollView* view) override;
24 virtual void scrollViewDidZoom(ScrollView* view) override;
25
26 bool bagan(Touch* touch,Event* event);
27 void moved(Touch* touch,Event* event);
28 void ended(Touch* touch,Event* event);
29 void canceled(Touch* touch,Event* event);
30 };
31
32 #endif /* defined(__VerticalScroll__extensionScrollView__) */
1 //
2 // extensionScrollView.cpp
3 // VerticalScroll
4 //
5 // Created by students on 16/1/7.
6 //
7 //
8
9 #include "extensionScrollView.h"
10 bool ScrollViewTest::init()
11 {
12 Layer::init();
13
14 auto Visiblesize = Director::getInstance()->getVisibleSize();
15 auto tempSpr = Sprite::create("HelloWorld.png");
16 auto sprSize = tempSpr->getContentSize();
17 auto layer = Layer::create();
18 layer->setContentSize(Size(sprSize.width,sprSize.height*3));
19
20 Sprite* spr = nullptr;
21 Label* lab = nullptr;
22
23 for (int i=0; i<3; i++) {
24 spr=Sprite::create("HelloWorld.png");
25 spr->setAnchorPoint(Vec2::ZERO);
26
27 std::string str = StringUtils::format("%d",i);
28 lab=Label::createWithSystemFont(str, "", 40);
29 lab->setColor(Color3B::RED);
30 lab->setPosition(sprSize/2);
31 spr->addChild(lab);
32 spr->setPosition(Vec2(0, i*sprSize.height));
33 layer->addChild(spr);
34 }
35 using namespace extension;
36 auto scroll = ScrollView::create(sprSize,layer);
37 scroll->setContentOffsetInDuration(Vec2(0, -640), 3.0);
38 scroll->setPosition(Visiblesize/2-sprSize/2);//??
39 scroll->setDirection(ScrollView::Direction::VERTICAL);
40 scroll->setBounceable(true);
41 scroll->setTag(1);
42
43 scroll->setDelegate(this);
44 addChild(scroll);
45
46 auto listener = EventListenerTouchOneByOne::create();
47 listener->onTouchBegan = CC_CALLBACK_2(ScrollViewTest::bagan, this);
48 listener->onTouchMoved = CC_CALLBACK_2(ScrollViewTest::moved, this);
49 listener->onTouchEnded = CC_CALLBACK_2(ScrollViewTest::ended, this);
50 listener->onTouchCancelled = CC_CALLBACK_2(ScrollViewTest::canceled, this);
51 Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
52
53 return true;
54 }
55
56 void ScrollViewTest::scrollViewDidScroll(ScrollView* view)
57 {
58 auto offset = view->getContentOffset();
59 log("%f,%f",offset.x,offset.y);
60 }
61 void ScrollViewTest::scrollViewDidZoom(ScrollView* view)
62 {
63 auto scale = view->getZoomScale();
64 log("%4.2f",scale);
65 }
66
67 bool ScrollViewTest::bagan(Touch* touch,Event* event)
68 {
69 // return false;
70
71 auto view = (ScrollView*)getChildByTag(1);
72 auto bb = view->getBoundingBox();
73 if (bb.containsPoint(touch->getLocation())) {
74 return true;
75 }
76 return false;
77 }
78 void ScrollViewTest::moved(Touch* touch,Event* event)
79 {
80
81 }
82 void ScrollViewTest::ended(Touch* touch,Event* event)
83 {
84 auto view = (ScrollView*)getChildByTag(1);
85 view->unscheduleAllCallbacks();
86 auto offset = view->getContentOffset();
87 int topn = ((int)offset.y)/320;
88 int buttom = topn-1;
89 if (touch->getStartLocation().y<touch->getLocation().y) {
90 view->setContentOffsetInDuration(Vec2(0, topn*320), 0.2);
91 }else
92 {
93 view->setContentOffsetInDuration(Vec2(0, buttom*320), 0.2);
94 }
95 }
96 void ScrollViewTest::canceled(Touch* touch,Event* event)
97 {
98
99 }
cocos2d-x-3.3 中采用extension的ScrollView实现纵向分页
标签:
原文地址:http://www.cnblogs.com/lsy137/p/5110619.html