scrollView 拖动对象时,对象移动到某个固定范围会有放大、缩小的效果
Vector<Sprite*> sp_vec;
//声明一个容器
sp_vec.pushBack(boy);
//将精灵
boy
对象放入容器中
bounce
/baʊns/
弹力,
弹起,反跳;弹跳;弹回
Zoom
/zuːm/
vi. (飞机、汽车等)急速移动,
(价格、费用等)急升, 猛涨
补充一些内容:我们应该知道,对象放到滚动层上(如scroll_layer->addChild(boy)),那么不管对象在scrollView上如何移动,它获得的坐标都是不会变的(如boy->getPosition()是不变的数值),这种情况下,如果我们想实现对象在某个坐标范围内会有缩放效果,那么只是去获取对象的坐标肯定是行不通的,所以肯定要找一个时刻在变化的”参照物”来利用下,该找什么呢?没错,就是scrollView的偏移坐标(scrollView->getContentOffset())!只要scrollView移动一下,那么它的 偏移量也随之改变。我这里就是利用对象的坐标与scrollView的偏移坐标之间不可告人的秘密,从而实现当前的目的。必看
http://cn.cocos2d-x.org/tutorial/show?id=1022
class
CC_EX_DLL
ScrollViewDelegate
virtual
void
scrollViewDidScroll(
ScrollView
* view) {};
/**
* @js NA
* @lua NA
*/
virtual void scrollViewDidZoom(ScrollView* view) {};
enum
class
Direction
{
NONE = -
1
,
HORIZONTAL =
0
,
VERTICAL,
BOTH
};
setContentSize
设置内容大小(可滚动大小) 比
setViewSize 大
#include
"cocos-ext.h"
//******
USING_NS_CC_EXT
;
//******
//
视图滚动时响应
virtual
void
scrollViewDidScroll(
ScrollView
* view);
//
视图缩放时响应
virtual
void
scrollViewDidZoom(
ScrollView
* view);
private
:
Size size;
#include
"cocos-ext.h"
//******
USING_NS_CC_EXT
;
//******
size
=
Director
::
getInstance
()->
getWinSize
();
//
创建一个滚动视图
auto
scrollView =
ScrollView
::
create
();
//
创建一个容器
auto
containLayer =
Layer
::
create
();
addChild
(scrollView);
//
准备容器内容
auto
sp1 =
Sprite
::
create
(
"HelloWorld.png"
);
sp1->
setPosition
(
size
/
2
);
auto
sp2 =
Sprite
::
create
(
"HelloWorld.png"
);
sp2->
setPosition
(
Vec2
(
size
.
width
/
2
+sp2->
getContentSize
().
width
,
size
.
height
/
2
));
auto
label =
Label
::
createWithTTF
(
"first page"
,
"fonts/Marker Felt.ttf"
,
25
);
label->
setPosition
(
Vec2
(
size
.
width
/
2
+sp2->
getContentSize
().
width
*
0.4
,
size
.
height
/
2
+sp2->
getContentSize
().
height
*
0.4
));
label->
setColor
(
Color3B
(
255
,
0
,
0
));
//
添加内容节点
containLayer->
addChild
(sp1);
containLayer->
addChild
(sp2);
containLayer->
addChild
(label);
//
设置内容大小(可滚动大小)
***********
containLayer->
setContentSize
(
Size
(
1330
,
750
));
//
设置可见大小
scrollView->
setViewSize
(
Size
(
480
,
750
));
//
设置容器
scrollView->
setContainer
(containLayer);
//
设置方向:水平
// scrollView->setDirection(cocos2d::extension::ScrollView::Direction eDirection);
scrollView->
setDirection
(
ScrollView
::
Direction
::
HORIZONTAL
);
//
设置委托
scrollView->
setDelegate
(
this
);
// //
关闭弹性效果
(
系统默认开启
)
// scrollView->setBounceable(false);
//
视图滚动时响应
void
HelloWorld
::scrollViewDidScroll(
ScrollView
* view){
CCLOG
(
"scroll"
);
}
//
视图缩放时响应
void
HelloWorld
::scrollViewDidZoom(
ScrollView
* view){
CCLOG
(
"zoom"
);
}