我正在构建一个spritesheet类。希望这对某人来说是微不足道的果实,但我很难过。
我有一个spritesheet(.png),我在运行时加载并使用Spritesheet类中的代码将其中的一部分放在舞台上。构造函数方法的文件 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文件的切片。在我的情况下,spritesheet用于动画角色,所以我需要更新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对象并在copyPixels
方法中使用它,但返回相同的结果(没有)。当我在调试模式中单步执行代码时,一切看起来都在工作,但我的显示对象不会使用新的bitmapData进行更新。我踩到了什么?
感谢您的期待!
答案 0 :(得分:2)
好吧,可能没有人会读到这个,因为我很快就回答了这个问题,但我花了3天的时间试图解决这个问题。有时试图以简洁的方式提出问题有助于人们回答他们自己的问题,不久之后,瞧!瞧!
因此,如果有人遇到类似的问题,我错误的是我试图通过最初加载它的BitmapData
访问Loader
对象。然后我突然意识到我可以通过我所做的SpriteSheet类的属性直接引用BitmapData。我认为这对其他人来说会非常困惑。如果主持人看到这个并认为它是垃圾,我不会介意它被删除,但我想我还是要保持它。新代码看起来像这样:
c._thisSpriteSheet._bmpDSheet.copyPixels(loaderBmp.bitmapData, new Rectangle(0,20,50,30),new Point(0,0));
和_bmpDSheet
是该类的bitmapdata属性。