好的,所以即时尝试使用以下方法将位图图像作为背景加载:
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通道,这是我在地图上移动时的结果:
如您所见,背景图像不会刷新。而我根本不知道该怎么做。我非常喜欢使用flash和as3而且我已经尝试了几天才能使它工作。我知道它与copypixel有关,或者在我再次绘制精灵之前重绘背景......有什么想法吗?
答案 0 :(得分: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 );