我是AS3的新手,我还不太了解所有的基本语法,尽管我每天都会阅读一些指南。我正在使用这个bitmapdata画布将spritesheets加载到画布上,并使用foor循环,我试图让地图填充瓷砖,但我没有运气。
for (var i:int = 0; i < columns; i++)
{
for (var j:int = 0; j < rows; j++)
{
smb3SpriteSheet = new SMB3(new SMB3SpriteSheet(), smb3XML.animation, 175);
smb3SpriteSheet.x = startX;
smb3SpriteSheet.y = startY;
canvas.addSprite(smb3SpriteSheet);
startX = startX + 16
}
startX = 0
startY = startY + 16
}
此代码应该创建一个新的位图数据,它将添加到空白背景位图上,设置x和y坐标,然后向下移动一个空格并重复,但是当我编译时,出现的唯一图块是最后一块瓷砖。我已经在线查看,但没有关于以这种方式使用位图数据的信息。我应该将它用于作业。
答案 0 :(得分:1)
我不知道SMB3类应该做什么,但我认为你只接收最后一张图片,因为你每次尝试绘制相同的画布时都会调用精灵表。因此,每次调用画布时,实际上即使要创建新的SMB3,也要用新的内容替换当前内容。您需要考虑显示对象不能超过父对象。
因此,要使代码正常工作,您要为每个图像使用单独的Sprite
,这绝对不建议使用,或者使用BitmapData
并执行画布的图像绘制,并且仅在之后将Bitmap
分配给精灵。
您有几种方法可以执行此操作。您可以使用BitmapData
的{{1}},copyPixels
或draw
方法。
以下是与您的问题相关的两种资源: