0

好的,所以我尝试使用以下方法将位图图像加载为背景:

screenBitmapData.copyPixels(tilesBitmapData,new Rectangle(sourceX,sourceY,tileSize,tileSize),new Point(destX,destY));
screenBitmap = new Bitmap(screenBitmapData);
addChild(screenBitmap);

这会正确加载我的平铺地图并将其显示在屏幕上。

现在我想添加另一个将用作我的角色的图像,显​​示它的框架包含我的角色移动,然后显示如下图像:

screenBitmapData.copyPixels(playerSheetBitmapData, new Rectangle(currentSpriteColumn * CHAR_SPRITE_WIDTH, currentSpriteRow * CHAR_SPRITE_HEIGHT, CHAR_SPRITE_WIDTH, CHAR_SPRITE_HEIGHT), new Point(xPos, yPos), null, null,true);

我在我的角色图像上设置了 alpha 通道,这是我在地图上移动时的结果:

http://snag.gy/L2uuR.jpg

如您所见,背景图像不会刷新。我根本不知道该怎么做。我对 flash 和 as3 很陌生,我已经尝试了好几天才能让它工作。我知道在我再次绘制精灵之前它与复制像素或重绘背景有关......有什么想法吗?

4

1 回答 1

1

您需要重新绘制整个场景。你现在所做的就是在你之前的抽签结果之上绘制玩家。

在您的情况下,您需要做的就是在绘制角色之前每帧绘制整个背景。它可能看起来像这样:

function renderScene():void
{
    // Draw the background, which will replace all the current graphics
    // on the Bitmap.
    screenBitmapData.copyPixels(tilesBitmapData,new Rectangle(sourceX,sourceY,tileSize,tileSize),new Point(destX,destY));

    // Then draw the player.
    screenBitmapData.copyPixels(playerSheetBitmapData, new Rectangle(currentSpriteColumn * CHAR_SPRITE_WIDTH, currentSpriteRow * CHAR_SPRITE_HEIGHT, CHAR_SPRITE_WIDTH, CHAR_SPRITE_HEIGHT), new Point(xPos, yPos), null, null,true);
}

但是,要真正清除位图,您可以使用fillRect()一种颜色(例如黑色)填充它:

// Fill the Bitmap with black.
screenBitmapData.fillRect( screenBitmapData.rect, 0x000000 );
于 2013-04-04T04:24:28.153 回答