actionscript-3 - AS3 - 正好有 23 个空的 Alpha channel ,下面的图像停止绘制

标签 actionscript-3 bitmap sprite depth

我注意到,在尝试绘制大量圆圈时,偶尔会出现某种视觉错误,某些圆圈无法正确绘制。好吧,我缩小了范围,并注意到如果在同一点上有 23 个或更多对象的 alpha 值为 00,那么下面的对象不会绘制。它似乎是逐个像素的,因为图像的某些部分仍在绘制。

最初,这个问题是在继承 Sprite 的类中发现的。已确认 Sprite 也有问题,现在 Bitmap 也有问题。如果有人能找到比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);
            }
        }
    }
}

最佳答案

我不知道你为什么把位图添加为 child 。我认为你应该使用 draw() 在单个 BitmapData 上绘制所有“形状”。您可以简单地绘制形状,然后将它们绘制到 BitmapData。如果您需要更多解释,我可以更具体。

关于actionscript-3 - AS3 - 正好有 23 个空的 Alpha channel ,下面的图像停止绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045461/

相关文章:

three.js - 三 js : Disable auto rotate of sprite

actionscript-3 - `root` 不同地方的变化

iphone - Actionscript 3.0 剪切和粘贴或删除对象

actionscript-3 - 我可以在 Actionscript 的 SQLite 查询中一次创建多个表吗?

apache-flex - 在 ActionScript/Flex 3 中将事件与类关联的最佳方法是什么?

iphone - if 语句将所有语句分组为一个 if 语句

android - Adapter中Bitmaps的异步下载,重点在Bitmap.recycle()

java - ArrayList优化内存

flash - 生成大量位图时,创建的位图会变成全黑

python - 如何在pygame中按下按键后更改屏幕上的 Sprite