1

我试图在在线文档中找到更多信息,但他们在这方面仍然有点缺乏。

使用新的纹理图集 API 处理多个分辨率的正确方法是什么?我应该为每种分辨率提供不同的数据文件吗?Corona SDK 会自动找到正确的文件还是需要我自己处理分辨率检测?

即使只是一个指向应用它的文档页面的指针就足够了!

非常感谢!

4

1 回答 1

0

Corona 将正确加载图像文件(.png 或 .jpg),并将手动加载工作表文件,然后对其进行缩放...

如果您在制作适用于所有分辨率的工作表文件时遇到困难,一个好方法是手动加载适合该分辨率的工作表,然后使用 .xScale 和 .yScale 来更正分辨率。

我将为 Atlas 发布我自己的分辨率处理代码:

-- Mauricio Gomes
-- Kidoteca point class

local scaleString = "";
local scaleNumber = 1;
local errorMessage = "ERROR: Please call autoResolution.init";
local errorFunction = function() print(errorMessage); return errorMessage end;

local autoResolution = {};

function autoResolution.requireSheet( sheet )
    if autoResolution.SCALE == errorFunction then
        return errorFunction();
    end
    sheet = string.gsub(sheet, "/", ".");
    return require(sheet .. scaleString).sheet;
end

function autoResolution.requireInfo( sheet )
    if autoResolution.SCALE == errorFunction then
        return errorFunction();
    end
    sheet = string.gsub(sheet, "/", ".");
    return require(sheet .. scaleString);
end

function autoResolution.imageName( fileName, extension )
    if autoResolution.SCALE == errorFunction then
        return errorFunction();
    end
    return fileName .. scaleString .. "." .. extension;
end

-- variables about the scale settings

function autoResolution.init()
    if display.contentScaleX <= 0.25 then
        scaleString = "@4";
        scaleNumber = 0.25;
    elseif display.contentScaleX <= 0.7 then
        scaleString = "@2";
        scaleNumber = 0.5;
    end

    autoResolution.SCALE = scaleNumber;
end

autoResolution.SCALE = errorFunction;

return autoResolution;

init 函数当然使用我公司 (Kidoteca) 使用的设置:后缀是 @2 和 @4,而不是 0.5 是 @2,因为我们的一些内部原因。

于 2012-08-15T21:23:05.593 回答