Я бы хотел кэшировать мою таблицу спрайтов (плитку листов) в массив.Я делаю это потому, что каждая spritesheet должна кэшироваться внутри массива, чтобы мои объекты могли легко извлекать из них свои тайлы.Но мой кеш, похоже, не работает, потому что из него абсолютно ничего не выводится.Я ничего не вижу.
В моем кеше что-то есть (вероятно, bitmapData), и оно не равно нулю, поэтому в настоящее время я не знаю, где может быть проблема.
Может кто-то помочьмне с этой проблемой, пожалуйста?
эта функция должна рендерить каждую плитку массива в фон с помощью copypixels
public function renderCachedTile(canvasBitmapData:BitmapData, tileArray:Array):void
{
tileCache = tileArray;
tileArray = [];
x = nextX;
y = nextY;
point.x = x;
point.y = y;
tileRect.x = tileWidth;
tileRect.y = tileHeight;
if (animationCount >= animationDelay)
{
animationCount = 0;
if(reverse)
{
currentTile--;
if (currentTile < 1)
{
currentTile = tilesLength - 1;
}
} else {
currentTile++;
if (currentTile >= tilesLength - 1)
{
currentTile = 0;
}
}
} else {
animationCount++;
}
canvasBitmapData.lock();
canvasBitmapData.copyPixels(tileCache[currentTile], tileRect, point);
canvasBitmapData.unlock();
}
эта функция 'разделяет' мою таблицу спрайтов на плитки и выбрасывает их вмассив
private function tileToCache():void {
var tileBitmapData:BitmapData = new BitmapData(tileWidth, tileHeight, true, 0x00000000);
var tilePt:Point = new Point(0, 0);
var tileRect:Rectangle = new Rectangle;
tileCache = [];
for (var tileCtr:int = 0; tileCtr < tilesLength; tileCtr++) {
tileBitmapData.lock();
tileRect.x = int((tileCtr % spritesPerRow)) * tileWidth;
tileRect.y = int((tileCtr / spritesPerRow)) * tileHeight;
tileBitmapData.copyPixels(tileSheet, tileRect, tilePt);
tileBitmapData.unlock();
tileCache.push(tileBitmapData);
}
}