ScrollView 滚动视图
看看效果图:
代码:
-- 来一个sprite 当容器背景
local scrollViewBack = cc.Sprite:create("image/back2.png")
scrollViewBack:setAnchorPoint(0,0)
local scrollView = cc.ScrollView:create()
scrollView:setPosition(winSize.width/2-500,winSize.height/2-200)
self:addChild(scrollView)
-- setContentSize 和 setContainer 都是 设置真实区域的大小(也可以理解为容器大小) 包括不可见部分
-- setContainer: 设置容器,可以根据一个node设置背景内容和真实区域的大小,没有设置的情况下 默认是个node(大小貌似是200*200)
scrollView:setContainer(scrollViewBack)
-- setContentSize: 设置大小,不改变容器本身内容,但是设置了真实区域的大小
scrollView:setContentSize(cc.size(1920,640))
scrollView:setViewSize(cc.size(1000,400)) --设置可见部分的大小
scrollView:setBounceable(false) --设置是否回弹
for i=1,5 do
local img = cc.Sprite:create("image/"..tostring(i)..".png")
img:setPosition(220*(i-1)+500,200)
scrollView:addChild(img)
end
--设置 滑动 方向
scrollView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL)
-- cc.SCROLLVIEW_DIRECTION_NONE
-- cc.SCROLLVIEW_DIRECTION_HORIZONTAL<span style="white-space:pre"> --水平
-- cc.SCROLLVIEW_DIRECTION_VERTICAL<span style="white-space:pre"> --垂直
-- cc.SCROLLVIEW_DIRECTION_BOTH
local function scrollViewEvent()
--print("滚动")
-- 可以获取当前滑动的百分
-- <span style="font-family: Arial,Helvetica,sans-serif;">滑动量 --两种写法</span>
--local offsetX = scrollView:getContainer():getPositionX() local offsetX = scrollView:getContentOffset().x -- 总长度 - 可视长度 --两种写法 --local lenth = scrollView:getContainer():getContentSize().width - scrollView:getViewSize().width local lenth = scrollView:getContentSize().width - scrollView:getViewSize().width print( offsetX / lenth * -100)
end
scrollView:setDelegate() --开启代理 没开启则回调无效
--设置回调
--设置滚动时候回调scrollView:registerScriptHandler(scrollViewEvent,cc.SCROLLVIEW_SCRIPT_SCROLL)
还有一些其他的接口:
-- 设置内容的偏移 参数2 是否开启动画
-- setContentOffset(cc.p(x,y),bool animated)
-- 设置内容的偏移 参数2 时间
-- setContentOffsetInDuration(Vec2 offset,float dt)
-- getContentOffset()
-- 设置缩放 参数 缩放比例 是否开启动画 (设置缩放不知道是bug还没修正还是自己代码没写对,没有效果)
-- setZoomScale(float s) 参数 缩放比例
-- setZoomScale(float s,bool animated) 参数 缩放比例 是否开启动画
-- setZoomScaleInDuration(float s,float dt )参数 缩放比例 动画时间
-- local function scrollViewEvent2()
--print("ZOOM")
-- end
-- 设置回调
-- 设置缩放时候回调
-- scrollView:registerScriptHandler(scrollViewEvent2,cc.SCROLLVIEW_SCRIPT_ZOOM)