1

我对 AS3 非常陌生,虽然我每天都阅读一些指南,但我还不是很了解所有基本语法。我正在使用这个 bitmapdata 画布将 spritesheets 加载到画布上,并使用 foo 循环,我试图让地图填充瓷砖,但我没有运气。

        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 坐标,然后向下移动一个空格并重复,但是当我编译时,唯一出现的图块是最后一个图块. 我在网上查看过,但没有找到有关以这种方式使用位图数据的信息。我应该用它来完成任务。

4

1 回答 1

1

我不知道 SMB3 类应该做什么,但我认为您收到最后一张图像只是因为每次在同一画布中尝试绘制时都调用您调用的精灵表。因此,每次调用画布时,实际上都是在用新内容替换当前内容,即使您正在创建新的 SMB3。您需要考虑一个显示对象不能有多个父对象。

因此,要使您的代码正常工作,您可以Sprite为每个图像使用单独的,这是绝对不推荐的,或者使用BitmapData并执行画布的图像绘制,然后才将 分配Bitmap给 Sprite。

您有几种方法可用于此操作。您可以使用BitmapData'scopyPixelsdraw方法clone

以下是与您的问题相关的两个资源:

添加 Sprite 的多个实例?

显示精灵的另一个实例

于 2012-10-30T19:45:49.890 回答