2009-12-30 126 views
0

截至目前,我正在尝试为我正在创建的游戏创建拼贴效果。我正在使用瓷砖,我正在将瓷砖加载到精灵像这样...更改小精灵位图

this.graphics.beginBitmapFill(tileImage); 
this.graphics.drawRect(30, 0,tWidth ,tHeight); 

var tileImage是bitMapData。 30是移动像素点的数量。那么tWidth和tHeight是矩形的大小。这是30×30

这是我做的更改位图时,我的角色在瓷砖

this.graphics.clear(); 
this.graphics.beginBitmapFill(tileImage); 
this.graphics.drawRect(60, 0,tWidth ,tHeight); 

我清除精灵画布。然后我重写到tileImage的另一个位置。

我的问题是....

它消除了旧砖完全,但新的瓦片位置更远的右侧,然后在旧的位图出现了。

我的瓷砖表只有90px宽,30px高。最重要的是,我的新瓷砖显示在旧瓷砖的后面。有没有更好的方法来完善这一点。

再次,我要的是位图改变颜色

回答

1

你可以尝试加载整个tilesheet在你的精灵,然后每次需要时间重新定义scrollRect财产。

this.scrollRect = new Rectangle(30, 0, tWidth ,tHeight); 

请注意,你不能只是编辑scrollRect.x.y.width.height;你必须每次重新定义一个新的Rectangle。

使用scrollRect可能会更快地重绘部分位图。

有关scrollRect的更多信息,您可以阅读this excellent article from Grant Skinner

+0

不要忘记,即使设置了scrollRect,显示对象的整个区域也将被重新渲染,除非您还设置了cacheAsBitmap。 – aaaidan 2010-04-06 03:45:24

+0

检出:http://files.jacksondunstan.com/articles/629/CacheAsBitmapTest.swf – aaaidan 2010-04-06 03:46:54

+0

(PS。该链接必须用调试闪存播放器查看,或者它没有帮助...) – aaaidan 2010-04-06 03:47:19