【问题标题】:Corona - create regular display objects from sprite sheets?Corona - 从精灵表创建常规显示对象?
【发布时间】:2011-08-05 00:46:28
【问题描述】:

这是显示图像的正常方式:

local img = display.newImage("image.png");

但是将所有图像放在一张大图像中并从 Zwoptex 导出不是节省内存吗?有从精灵表创建动画精灵的文档,但是从精灵表中提取单个图像呢?

local zwoptexData = require "sheet1"
local data = zwoptexData.getSpriteSheetData()
//then what?

【问题讨论】:

  • 加载图像的命令已经过时了。最新的命令是 newImageRect,因为它支持动态图像分辨率。不过不会改变你的问题。

标签: image lua coronasdk sprite-sheet


【解决方案1】:

从平铺表生成静态图像的命令如下所示:

local tileSheet = sprite.newSpriteSheet("tiles.png", 64, 64)
local tileSet = sprite.newSpriteSet(tileSheet, 1, 10)
local tile = sprite.newSprite(tileSet)
tile.currentFrame = 5

假设工作表上的所有图块都是 64x64,但您可以轻松调整这些命令以使用您的 sprite 工作表数据。需要注意的重要事项是 newSprite() 和 .currentFrame

编辑:您评论说您无法弄清楚如何使用精灵数据,所以修改后的代码是

local data = require("tiles.lua")
local tileSheet = sprite.newSpriteSheetFromData("tiles.png", data.getSpriteSheetData())
local tileSet = sprite.newSpriteSet(tileSheet, 1, 3)
local tile = sprite.newSprite(tileSet)
tile.currentFrame = 2

要了解其工作原理,请参阅 http://developer.anscamobile.com/reference/sprite-sheets

【讨论】:

  • 这只是一个例子。在我的代码中有 10 帧,我将精灵设置为第 5 帧。这两个值对你来说都是不同的。
  • 很难让它发挥作用。我有一个名为“sheet1.lua”的精灵数据文件和一个名为“sheet1.png”的精灵表,其中包含3张图像。如何从精灵表中获取第二张图像并将其显示为显示对象?
猜你喜欢
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多