我注意到,在尝试绘制大量圆圈时,偶尔会出现某种视觉错误,某些圆圈无法正确绘制。好吧,我把它缩小了,并注意到如果有23个或更多的物体在同一个地方有一个100的alpha值,那么下面的物体就不会画。它似乎是逐个像素的,因为部分图像仍在绘制。
最初,这个问题被一个继承了Sprite的类注意到了。它被证实也是Sprites的问题,现在也是Bitmaps。如果任何人都可以找到比没有这个问题的Bitmap更低级别的课程,请说出来,以便我们可以尝试找到问题的根源。
我准备了一个小型的测试课程来演示我的意思。您可以更改第20行的整数值,以便查看我提出的三个测试,以清楚地显示问题。
是否有任何形式的解决方法,或者这只是我必须使用的限制?有谁之前经历过这个吗?尽管实施起来很糟糕,我是否有可能做错事?
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Bitmap;
import flash.display.BitmapData;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
Test(3);
}
private function Test(testInt:int):void {
if(testInt==1){
addChild(new Bitmap(new BitmapData(200, 200, true, 0xFFFF0000)));
for (var i:int = 0; i < 22; i++) {
addChild(new Bitmap(new BitmapData(100, 100, true, 0x00000000)));
}
}
if(testInt==2){
addChild(new Bitmap(new BitmapData(200, 200, true, 0xFFFF0000)));
for (var j:int = 0; j < 23; j++) {
addChild(new Bitmap(new BitmapData(100, 100, true, 0x00000000)));
}
}
if(testInt==3){
addChild(new Bitmap(new BitmapData(200, 200, true, 0xFFFF0000)));
for (var k:int = 0; k < 22; k++) {
addChild(new Bitmap(new BitmapData(100, 100, true, 0x00000000)));
}
var M:Bitmap = new Bitmap(new BitmapData(100, 100, true, 0x00000000));
M.x += 50;
M.y += 50;
addChild(M);
}
}
}
}
答案 0 :(得分:1)
我不知道你为什么要把Bitmap作为孩子添加。我想你应该使用draw()在一个BitmapData上绘制所有“形状”。您可以简单地绘制形状,然后将它们绘制到BitmapData。如果你需要更多解释,我可以更具体。
答案 1 :(得分:0)
将bmp.cacheAsBitmap = ture设置为每个位图
答案 2 :(得分:0)
除了绘制到单个BitmapData之外,另一种尝试方法可能是将位图放入单个Sprite中。为您的Sprite容器设置cacheAsBitmap=true
。