Создание изображения из листа спрайтов с использованием имени файла исходного изображения

Повсюду рекомендуется создавать листы спрайтов, известные как атласы текстур, а не использовать сотни отдельных изображений. У меня есть сотни изображений для игры по изучению слов; но есть сотни слов, нет анимационных последовательностей. Итак, сгенерировав файл данных и лист спрайтов, я ищу пример того, как создать изображение, когда это необходимо, из исходного имени файла изображения (как хранится в файле данных таблицы спрайтов (код lua) (оба созданы с помощью упаковщика текстур). .

Это кажется правильным:

local sprite = require("sprite")

local CN_70_tiles_corona = require("CN_70_tiles_corona")

local spriteDataCN = CN_70_tiles_corona.getSpriteSheetData()

local spriteSheet = sprite.newSpriteSheetFromData( "CN_70_tiles_corona.png", spriteDataCN )

перед созданием листа спрайтов я создал бы свое изображение примерно так:

t1 =    display.newImage(cnTiles[tileNO]) 

где cnTiles [1], например, - это значение, помещенное в массив из таблицы sqlite, такой как sit_word100.png.

в моем файле генерации lua теперь есть запись под функцией getSpritSheetData примерно так:

{
  name = "sit_word100.png",
  spriteColorRect = { x = 0, y = 0, width = 69, height = 69 },
  textureRect = { x = 2, y = 2, width = 69, height = 69 },
  spriteSourceSize = { width = 69, height = 69 },
  spriteTrimmed = false,
  textureRotated = false
},

я вижу, что ВСЕ имена моих файлов изображений теперь хранятся в данных, чтобы предоставить способ ссылаться на мое изображение в таблице спрайтов, но поскольку я НЕ хочу использовать «наборы спрайтов», я не могу найти пример просто получить одно изображение, когда оно есть.

Мне нужно что-то, что позволяет мне обращаться к моему изображению, теперь уже созданному в виде таблицы спрайтов, с использованием исходного имени изображения. Это возможно? например

t1 =    display.newImage(CN_70_tiles_corona.getSpriteSheetData(name = "sit_word100.png") 

person harry    schedule 22.01.2012    source источник
comment
Обновление: я нашел ответ Cocos2d IOS / objective C по ссылке Это показало: CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"myatlastexture.png"]; CCSprite *sprite = [CCSprite spriteWithTexture:texture rect:CGRectMake(0,0,32,32)]; Итак, я ищу версию Lua. проверит документы с этой подсказкой.   -  person harry    schedule 23.01.2012
comment
Этот вопрос также был задан здесь: ссылка, но ответил в temrs набора Sprite. Аргх. не хотите создавать спрайтсет из одной плитки - это ответ?   -  person harry    schedule 23.01.2012


Ответы (1)


Самый простой способ - создать листы с помощью TexturePacker и использовать SpriteGrabber, чтобы взять нужные вам спрайты.

Это отличное дополнение к Corona-SDK, которое можно найти здесь:

http://developer.anscamobile.com/code/spritegrabber-spritesheets-two-lines

person Andreas Löw    schedule 23.01.2012
comment
Андреас: Мне нравится ваш Texturepacker - вот почему у меня есть таблицы спрайтов, с которыми я могу работать. Я купил его и редактор физики, просто из-за хорошей цены на комбо. Фантастический и простой в использовании. Множество простых вариантов. Мне просто нужен был образец кода на lua, который извлекает спрайты с большого листа. SpriteGrabber - ИМЕННО решение !! @ спасибо! - person harry; 24.01.2012
comment
хороший спрайт граббер. @hangzhouharry, если ответ будет вам полезен, примите его. - person cctan; 03.02.2012