使用 Corona SDK 显示网格地图 - 我在哪里能找到内容/屏幕偏移量?

我正在使用 Corona SDK 显示一个网格地图,但是我的地图并不像在屏幕上看到的那样从左上角开始。zoomEven config.

-- 不需要关心这一行:
local graphics = require( "utilities.graphics" )

local M = {}

function count(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

local function displayMap( group, mapName )
    local map = require ( "maps." .. mapName )

    local max_row_num = count( map.tiles )
    local row

    local max_tile_num_in_a_row
    local tile

    for r = 1, max_row_num do
        row = map.tiles[ r ]

        max_tile_num_in_a_row = count( row )

        for t = 1, max_tile_num_in_a_row do
            local tile =  map.tiles[ r ][ t ]
            local tileSize = map.tileSize

            local j = r - 1
            local i = t - 1

            local x = i * tileSize
            local y = j * tileSize

            -- 此函数使用 display.newImageRect :
            graphics.displayImage( group, "tiles", tile, x, y, tileSize, tileSize, false, false )
        end

    end

end

M.displayMap = displayMap

return M

我的地图:

local M = {}

local tiles = {
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0 }
}

local tileSize = 16

M.tiles = tiles
M.tileSize = tileSize

return M

绘制函数:

local function fitImage( displayObject, fitWidth, fitHeight, enlarge )
    --
    -- 首先确定哪个边界超出界限
    --
    local scaleFactor = fitHeight / displayObject.height
    local newWidth = displayObject.width * scaleFactor
    if newWidth > fitWidth then
        scaleFactor = fitWidth / displayObject.width
    end
    if not enlarge and scaleFactor > 1 then
        return
    end
    displayObject:scale( scaleFactor, scaleFactor )
end

local function displayImage( sceneGroup, subfolders, imageName, x, y, width, height, centered, enlarge )
    local img

    if subfolders == nil then
        img = display.newImageRect( "assets/" .. imageName .. ".png", width, height )
    else
        img = display.newImageRect( "assets/" .. subfolders .. "/" .. imageName .. ".png", width, height )
    end

    if centered then
        img.x = display.contentCenterX
        img.y = display.contentCenterY
    else
        img.x = x
        img.y = y
    end

    if enlarge then
        fitImage( img, sceneGroup.width, sceneGroup.height, true )
    else
        fitImage( img, sceneGroup.width, sceneGroup.height, false ) end

    sceneGroup.scene:insert(img)

    return img
end

我试图改变锚点,但没有效果。有没有办法获取内容和可见部分屏幕之间的偏移量?

注意:添加 display.screenOriginX,Y 到 x,y 可以将地图稍微向右推,但无法解决问题。

enter image description here

点赞