我之前写过一个九宫格平铺图片的demo,在2.2.5的时候,所有分辨率下都是正确的。
但我使用quick3.3之后,首先就发现这个在iphone5s的分辨率下时错误的,会超出屏幕外。
然后我发现,我根据display的屏幕矩形做一些操作时,点击点位置也会出现相应的偏移!!!
我不知道是我代码有错,还是3.3改过些什么。
以下这段代码就是九宫格代码,在2.2.5和3.3下都能运行,但在2.2.5下所有分辨率都是对的,3.3下某些屏幕分辨率不对。
–九宫格
–九宫格背景图,无拉伸,只是图片复制
function nineSlotSetting(uiParent,rootPath,nineSlotNameAffix,zOrder,bgRect)
local layer = cc.Layer:create()
uiParent:addChild(layer,zOrder)
uiParent = layer
rootPath = rootPath or “images”
nineSlotNameAffix = nineSlotNameAffix or “ninePicture_”
local leftTop = nil
local rightTop = nil
local leftBottom = nil
local rightBottom = nil
–四个角
–左上
local sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“1.png”)
sprite:setPosition(cc.p(bgRect.left + sprite:getContentSize().width / 2,bgRect.top - sprite:getContentSize().height / 2))
leftTop = sprite
–右上
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“3.png”)
sprite:setPosition(cc.p(bgRect.right - sprite:getContentSize().width / 2,bgRect.top - sprite:getContentSize().height / 2))
rightTop = sprite
–左下
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“7.png”)
sprite:setPosition(cc.p(bgRect.left + sprite:getContentSize().width / 2,bgRect.bottom + sprite:getContentSize().height / 2))
leftBottom = sprite
–右下
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“9.png”)
sprite:setPosition(cc.p(bgRect.right - sprite:getContentSize().width / 2,bgRect.bottom + sprite:getContentSize().height / 2))
rightBottom = sprite
–中间块
local widthTop = bgRect.right - leftTop:getContentSize().width - rightTop:getContentSize().width - bgRect.left
local widthBottom = bgRect.right - leftBottom:getContentSize().width - rightBottom:getContentSize().width - bgRect.left
local heightLeft = bgRect.top - leftTop:getContentSize().height - leftBottom:getContentSize().height - bgRect.bottom
local heightRight = bgRect.top - rightTop:getContentSize().height - rightBottom:getContentSize().height - bgRect.bottom
sprite = display.newTilesSprite(rootPath…"/"…nineSlotNameAffix…“5.png”,cc.rect(bgRect.left,bgRect.right,bgRect.right-bgRect.left,bgRect.top-bgRect.bottom))
sprite:setPosition(bgRect.left,bgRect.bottom)
uiParent:addChild(sprite,zOrder)
–四条边
–中上
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“2.png”)
sprite = display.newTilesSprite(rootPath…"/"…nineSlotNameAffix…“2.png”,cc.rect(0,0,widthTop,sprite:getContentSize().height))
sprite:setPosition(cc.p(leftTop:getContentSize().width,bgRect.top - sprite:getContentSize().height))
uiParent:addChild(sprite,zOrder)
–中下
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“8.png”)
sprite = display.newTilesSprite(rootPath…"/"…nineSlotNameAffix…“8.png”,cc.rect(0,0,widthBottom,sprite:getContentSize().height))
sprite:setPosition(cc.p(leftBottom:getContentSize().width,bgRect.bottom))
uiParent:addChild(sprite,zOrder)
–左中
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“4.png”)
sprite = display.newTilesSprite(rootPath…"/"…nineSlotNameAffix…“4.png”,cc.rect(0,0,sprite:getContentSize().width,heightLeft))
sprite:setPosition(cc.p(0,bgRect.bottom + leftBottom:getContentSize().height))
uiParent:addChild(sprite,zOrder)
–右中
sprite = cc.Sprite:create(rootPath…"/"…nineSlotNameAffix…“6.png”)
sprite = display.newTilesSprite(rootPath…"/"…nineSlotNameAffix…“6.png”,cc.rect(0,0,sprite:getContentSize().width,heightRight))
sprite:setPosition(cc.p(bgRect.right - sprite:getContentSize().width,bgRect.bottom + rightBottom:getContentSize().height))
uiParent:addChild(sprite,zOrder)
–最后加入四个角
uiParent:addChild(leftTop,zOrder)
uiParent:addChild(rightTop,zOrder)
uiParent:addChild(leftBottom,zOrder)
uiParent:addChild(rightBottom,zOrder)
return layer
end