使用 Corona SDK 显示网格地图 - 我在哪里能找到内容/屏幕偏移量?
2017-7-27 12:1:45
收藏:0
阅读:70
评论:0
我正在使用 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 可以将地图稍微向右推,但无法解决问题。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

