客户要求我使用包含平移/滚动类型功能的形状数据的巨大的4000 x 4000 px movieClip(或更大 - 不确定大小限制是多少)。这被建议作为编写平铺引擎的替代方案。
我担心Flash必须渲染整个区域并使用太多内存。我还没有跟上Flash内部的变化。任何人都可以确认Flash是否有"全部或全部"为特定的movieClip渲染策略,还是能够识别屏幕上的内容?
或者,是否有一个带有简单API的开源平铺引擎?我不想仅仅为了平铺功能而处理游戏引擎的复杂性。
该应用程序是一个地图演示工具
更新
我应该更明确一点:我在询问Flash如何渲染矢量数据 - 如果矢量数据的movieClip大于舞台,Flash是否只渲染可见部分?
答案 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像素。