四 getBoundingBox,getContentSize
2017-11-05 本文已影响28人
亮亮同学
cocos2d-x技术群新群:117871561
c++技术交流群:593010226
这里不死抠cocos-lua组件的原理, 重在快速上手使用, 只针对快速开发,所以我尽量用简洁 易懂的 文笔去阐述。
在一个公司里能运用手上的知识 快速的完成一个功能才是最好的,也可已根据自己的能力和时间 去选择是不是要深入的了解这些组件及功能。
当然我的文章 也会根据我对cocos2d-lua的了解程度 不断更新,完善,希望能帮助在职场打拼的朋友从菜鸟到大神
1,总述
getBoundingBox 中得 Size.width .height 显示图片真实大小 (考虑缩放和不缩放)
getContentSize 纹理图片大小
图片有缩放 就用 getBoundingBox ,不考虑缩放用 getContentSize 这样次能获得想要的效果
2,示例代码(主要看这条)
getBoundingBox
--假设x.y是某个触摸点
lcoal x = 100
local y = 200
local image = cc.Sprite:create("xx.png")
--该图片放大10倍
image:setScale(10)
--获取该图片放大后的大小
lcoal rec = image:getBoundingBox()
--判断触摸点是否在该范围内 不在 则隐藏图片
if rec
then
if not cc.rectContainsPoint(rec,cc.p(x,y))
then
image:setVisible(false)
end
end
getContentSize
--假设x.y是某个触摸点
lcoal x = 100
local y = 200
local image = cc.Sprite:create("xx.png")
--获取该图片放大后的大小
lcoal rec = image:getContentSize()
--判断触摸点是否在该范围内 不在 则隐藏图片
if rec
then
if not cc.rectContainsPoint(rec,cc.p(x,y))
then
image:setVisible(false)
end
end
3,项目实例(判断菜单按钮的显示)
--初始化Csb
function GameViewLayer:_initCsbRes()
--点击事件
--创建一个层
local touch = display.newLayer()
:setLocalZOrder(10)
:addTo(self)
--打开该层的触发开关
touch:setTouchEnabled(true)
--注册事件 参数为回调函数此处用的是lua的匿名函数,此函数有三个参数 触摸按钮的标签,横坐标,纵坐标
touch:registerScriptTouchHandler(function(eventType, x, y)
return self:onTouch(eventType, x, y)
end)
end
--处理回调
function GameView:onTouch(evenType,x,y)
if eventType == "began" then
if self._MenuCtrl.SHOWN == true then
local rc = self._MenuCtrl:getBoundingBox()
if rc then
if not cc.rectContainsPoint(rc,cc.p(x,y)) then
self:showMenu(false)
return true
end
end
end
end