我有相对简单但愚蠢的问题,但令人惊讶的是找不到解决方案:(
我是Corona SDK的新手并尝试显示图像。所有图像都放在相对于images
的目录main.lua
目录中。
现在我正在这样做
local IMAGE_DIR = "images";
local bg = display.newImageRect( IMAGE_DIR.. "/bg.png", 570, 360 )
mainScreenGroup:insert(bg)
它完美无缺。但根据文档,这是语法
display.newImageRect( [parentGroup,] filename, [baseDirectory] width, height )
我发现我可以指定IMAGE_DIR
而不是连接[baseDirectory]
,而不是手动插入到组mainScreenGroup
中,我可以在一行中指定[parentGroup,]
。但我无法使其发挥作用。我试过跟随。
local bg = display.newImageRect( [mainScreenGroup,] "bg.png", [IMAGE_DIR] 570, 360 )
local bg = display.newImageRect( [mainScreenGroup], "bg.png", [IMAGE_DIR], 570, 360 )
local bg = display.newImageRect( [mainScreenGroup], "/bg.png", [IMAGE_DIR], 570, 360 )
local bg = display.newImageRect( mainScreenGroup, "/bg.png", IMAGE_DIR, 570, 360 )
local bg = display.newImageRect( mainScreenGroup, "bg.png", IMAGE_DIR, 570, 360 )
但上述5个陈述中没有任何内容有效。我做错了吗?任何帮助表示赞赏。
答案 0 :(得分:4)
baseDirectory参数不能只是任何值,您只能使用此处提到的值填充它:http://docs.coronalabs.com/api/library/system/pathForFile.html
来自newImageRect doc:
baseDirectory(可选)
常数。从中加载图像数据的路径 文件名。默认为system.ResourceDirectory(项目文件夹;相同 位置为main.lua)。有关有效值,请参阅system.pathForFile()。
因此,在您的初始示例中,项目将执行的操作是查找system.ResourceDirectory / images / bg.png(system.ResourceDirectory与您的main.lua所在的文件夹相同)。
如果仍未显示,请检查newImageRect上的陷阱以确保您的图像可以加载。
此外,对于Android,您不能依赖使用system.ResourceDirectory:
的Android
Corona中的文件访问基于下划线操作系统 因平台而异。在iOS设备上,您可以访问所有文件 上面描述的目录。然而,在Android上,没有 literal system.ResourceDirectory,因为所有资源文件都驻留在那里 在压缩的APK文件中。
Corona允许使用直接加载图像和音频文件 适当的API,但它对资源文件的访问权限有限 Android使用文件I / O API。具体来说,以下类型可以 不能从资源目录中读取:.html,.htm。,。3gp,.m4v, .mp4,.png,.jpg和.ttf。
由于此限制,如果您捆绑了这些类型的文件 在你需要复制到另一个目录的核心目录中 必须更改文件名,以便文件I / O API可以访问它。 例如,如果要从资源目录中移动cat.png 到文件目录,必须将其重命名为cat.png.txt 复制。有关详细信息,请参阅http://docs.coronalabs.com/guide/data/readWriteFiles/index.html。
答案 1 :(得分:2)
在上一个示例中,您不应在文件名bg.png
之前使用“/”。
local bg = display.newImageRect( mainScreenGroup, "bg.png", IMAGE_DIR, 570, 360 )
答案 2 :(得分:0)
您不能将IMAGE_DIR用作baseDirectory,它必须是文档here和here中提到的4种之一:
在你的情况下,你仍然需要追加IMAGE_DIR,但你可以摆脱插入bg到组,所以你的代码:
local IMAGE_DIR = "images/";
local bg = display.newImageRect( IMAGE_DIR.. "/bg.png", 570, 360 )
mainScreenGroup:insert(bg)
可以更改为:
local IMAGE_DIR = "images/";
local bg = display.newImageRect( mainScreenGroup, IMAGE_DIR.."/bg.png", 570, 360 )
如Teddy Engel所述,如果您想在Android上使用system.ResourceDirectory,请务必小心 - 请参阅docs。