如何更改 AS3 中的位图数据?

问题描述 投票:0回答:1

我正在构建一个 spritesheet 类。希望这对某人来说是容易实现的目标,但我很难过。

我有一个 spritesheet (.png),我在运行时加载了它,并使用构造函数方法的 Spritesheet 类 .as 文件 ouside 中的代码将其一部分放置在舞台上:

    private function onLoad(e:Event):void
{
    var loaderBmp:Bitmap = Bitmap(_loader.content);
    _bmpData.copyPixels(loaderBmp.bitmapData, new Rectangle(0,0,80,80),new Point(0,0));
}

效果很好。我的 .png 文件切片显示得很好。就我而言,精灵表用于为角色设置动画,因此我需要更新

BitmapData
但我没有任何运气。这是我在
Main
类中尝试的一个函数,我用它来根据角色的状态改变动画的帧:

c._thisSpriteSheet._loader.content.bitmapData.copyPixels(loaderBmp.bitmapData, new Rectangle(0,20,50,30),new Point(0,0));

loaderBmp
是一个变量,其值为
var loaderBmp: Bitmap = Bitmap(_spriteSheet._loader.content);

c
是对作为角色的
Runner
对象的引用。

_spriteSheet
Runner
类型的
Spritesheet
类的属性。

_loader
c._spriteSheet
的属性,并且是实例化 spritesheet 时使用的
Loader
对象。

它不会抛出错误,但也不会用新的 bitmapData 对象替换原始的 bitmapData 对象。我想这可能意味着我需要创建一个新的 BitmapData 对象并在

copyPixels
方法中使用它,但返回相同的结果(什么也没有)。当我在调试模式下单步执行代码时,一切看起来都正常,但我的显示对象没有使用新的位图数据进行更新。我被什么绊倒了?

actionscript-3
1个回答
1
投票

我做错的是我试图通过最初加载它的

BitmapData
来访问
Loader
对象。然后我突然意识到,我可以通过我创建的 SpriteSheet 类的属性直接引用 BitmapData。我认为这对其他人来说会很混乱。如果版主看到这个并认为它是垃圾,我不介意它被删除,但我想无论如何我都会保留它。新代码如下所示:

c._thisSpriteSheet._bmpDSheet.copyPixels(loaderBmp.bitmapData, new Rectangle(0,20,50,30),new Point(0,0));
    

_bmpDSheet
是类的bitmapdata属性。

© www.soinside.com 2019 - 2024. All rights reserved.