Flash是否只渲染movieClip的屏幕部分?

时间:2015-08-17 18:00:24

标签: actionscript-3

客户要求我使用包含平移/滚动类型功能的形状数据的巨大的4000 x 4000 px movieClip(或更大 - 不确定大小限制是多少)。这被建议作为编写平铺引擎的替代方案。

我担心Flash必须渲染整个区域并使用太多内存。我还没有跟上Flash内部的变化。任何人都可以确认Flash是否有"全部或全部"为特定的movieClip渲染策略,还是能够识别屏幕上的内容?

或者,是否有一个带有简单API的开源平铺引擎?我不想仅仅为了平铺功能而处理游戏引擎的复杂性。

该应用程序是一个地图演示工具

更新

我应该更明确一点:我在询问Flash如何渲染矢量数据 - 如果矢量数据的movieClip大于舞台,Flash是否只渲染可见部分?

enter image description here

1 个答案:

答案 0 :(得分:0)

  

是否有一个带有简单API的开源平铺引擎?我不想仅仅为了平铺功能来处理游戏引擎的复杂性。

如果只有一个源图像需要引擎,我认为你过于复杂了。

创建一个ifstream myfile("example.bin", ios::binary); // get filesize V2 myfile.seekg(0, ios::end); auto len = myfile.tellg(); myfile.close(); cout << "size is: " << len << " bytes.\n"; // works also for files > 4G ,其中包含您想要查看的部分的所需大小,即屏幕尺寸。

Rectangle

添加var rect:Rectangle = new Rectangle (/* size and position go here*/); Bitmap作为视图和模型(可以这么说),其大小与矩形相同:

BitmapData

然后只需将var bitmapData:BitmapData = new BitmapData(rect.width, rect.height); var bitmap:Bitmap = new Bitmap(bitmapData); 所需的矩形从源copyPixels()添加到您的bitmapData

bitmapData.copyPixels(sourceImage, rect, new Point());

要查看图像的其他区域,请修改Rectangle对象并重新复制。

上面的代码只是为了说明而且可能甚至没有编译,但它表明它没有多少,你应该能够在一些代码中获得所需的功能。

对大小的限制为this Stackoverflow question如下:

  

在AIR 1.5和Flash Player 10中,BitmapData对象的最大大小为宽度或高度为8,191像素,总像素数不能超过16,777,215像素。 (因此,如果BitmapData对象的宽度为8,191像素,则其高度仅为2,048像素。)在Flash Player 9及更早版本以及AIR 1.1及更早版本中,限制高度为2,880像素,宽度为2,880像素。