在数据驱动显示中使用掩码

时间:2013-08-09 22:20:00

标签: actionscript-3 flash flex flash-builder

我的应用程序在图表上显示数据。该图表从数据库中提取数据,并显示一系列在图表上水平显示的点。每个点由一条线连接,以帮助查看者查看数据点。直到最近,当我开始注意到线路未能出现时,这种方法运作良好。有趣的是,当数据库中有96个或更多数据点时,该行消失。我检查了数据,这不是数据库的问题。 我花了两天的时间试图追踪这个bug,发现如果我停止连接线作为面具,那么这个bug就会消失,但是后来我失去了一个重要的视觉效果。我怀疑问题可能与使用掩码有关,但无法在线查找类似的错误报告。 有没有人看到类似的问题或任何人都可以推荐我可能采取的方法来修复错误?我很乐意在下面发布的内容中添加更多代码,但由于代码非常复杂,所以没有这样做。

            //Draw a backgrond gradient for masking
        var gradientBoxMatrix:Matrix = new Matrix();
        gradientBoxMatrix.createGradientBox(gradientBoxWidth, 400, Math.PI/2, 0, 0);
        backgroundGradient.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0xFFFF00,0x00FF00, 0x00FFFF, 0x0000FF], [1, 1, 1, 1, 1], 
            [0, 64, 128, 192, 255], gradientBoxMatrix);
        backgroundGradient.graphics.drawRect(0, 0, gradientBoxWidth, 400);
        backgroundGradient.graphics.endFill();
        backgroundGradient.cacheAsBitmap = true;
        lineChartContainer.addChild(backgroundGradient) ;

        backgroundGradient.mask = myLine;
        myLine = new DataPoint_Line;

        //Set the line for masking and drawing
        myLine.cacheAsBitmap=true;
        lineChartContainer.addChild(myLine);

1 个答案:

答案 0 :(得分:0)

一旦图形对象成为位图(cacheAsBitmap = true),它就有一个最大尺寸。删除它,你会有一个较慢的渲染但可见的图形:)

将图形分成许多图像,并在每次滚动时需要滚动或至少重新渲染整个图形对象时“粘合”它们。