0
由于pixi.js新手我有一种感觉,做一些明显的事情错了 -试图从一个PNG文件创建的精灵,它始终是最后一个字母
对于一个文字游戏,我试图加载的33张照片字母(各为60×60像素)从PNG文件(1980×60像素大)用下面的代码:
var stage = new PIXI.Container();
var renderer = new PIXI.WebGLRenderer(1020, 1020);
var boardDiv = document.getElementById('board');
boardDiv.appendChild(renderer.view);
var darkSmallLetters = new Array(33);
var darkLargeLetters = new Array(33);
var whiteSmallLetters = new Array(33);
PIXI.loader
.add('board' ,'/drawable-mdpi/game_board.png')
.add('dark_small_letters', '/drawable-mdpi/dark-letters-1980x60.png')
.add('white_small_letters', '/drawable-mdpi/white-letters-1980x60.png')
.load(init);
function init() {
var board = new PIXI.Sprite(PIXI.loader.resources.board.texture);
stage.addChild(board);
for (var i = 0; i < 33; i++) {
var rect = new PIXI.Rectangle(i * 60, 0, 60, 60);
PIXI.loader.resources.dark_small_letters.texture.frame = rect;
darkSmallLetters[i] = new PIXI.Sprite(PIXI.loader.resources.dark_small_letters.texture);
darkSmallLetters[i].x = i * 60;
darkSmallLetters[i].y = i * 60;
stage.addChild(darkSmallLetters[i]);
PIXI.loader.resources.white_small_letters.texture.frame = rect;
whiteSmallLetters[i] = new PIXI.Sprite(PIXI.loader.resources.white_small_letters.texture);
whiteSmallLetters[i].x = 100 + i * 60;
whiteSmallLetters[i].y = i * 60;
stage.addChild(whiteSmallLetters[i]);
}
renderer.render(stage);
}
然而,只有最后一个字母(在z
)是全线绘制。
我不想使用TexturePacker或类似的程序,因为我的图形资源非常简单(只是一个游戏板和2个横条纹的字母图片:1234567abcdefghijklmnopqrstuvwxyz
)。
我在做上面的代码错了吗?
我自己没有这样做,所以我不知道如何手动设置帧(我就像是一个有pixi半经验的人)。但有一件事引起了我的注意: 您每次都这样做:PIXI.loader.resources.dark_small_letters.texture.frame = rect 您是否注意到您每次都更改相同的frame-property。因此,可能每个创建的sprites都具有与PIXI.loader.resources.dark_small_letters.texture.frame相同的引用,因为这不是任何闭包/创建的对象,但每次都是相同的对象,只有相同的frame-property引用发生更改。 – Hachi