0

我有一组大约 6 张大型高分辨率图像(每张大约 7000x7000),我正在尝试将它们加载到 Adob​​e AIR iPad 应用程序中,并使用 TransformGestureEvent 启用缩放和平移。在我的 PC 上的调试播放器中运行良好,但是当它到达设备时它崩溃了很多。我尝试了很多方法来优化它:

  • 使用Greensock BlitMask(有点帮助)
  • 加载后,将每个对象存储到一个 Vector 中,这样如果它已经加载,我就不需要使用另一个 Loader。
  • 尽可能重用 Loader 对象并避免实例化。

我考虑过压缩图像并将它们的大小减半,但如果可能的话,我想避免这种情况。

谢谢。

(抱歉没有发布代码,它在我的办公室电脑上)

4

1 回答 1

0

它在您的计算机上运行良好的原因是您的计算机的 RAM 比您的手机多。当一个应用程序使用过多内存时,您的手机会崩溃。要解决此问题,您可以通过以下方式简单地将图像保持为小尺寸:

[1] 制作一个盒子并将其转换为 MovieClip 并将其命名为Box.

[2] 在您的代码中,创建一个新形状 ( var shape:Shape = new Shape();)

[3] 在您的库中,为动作脚本导出位图并将其命名为“HighRes”。

[4] 将此代码放在 GestureEvent (Box.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom));中创建一个新的 HighRes 实例,并在缩放时将其填充到形状的图形中,例如:

var reshigh = new HighRes(); 
shape.graphics.width *= e.scaleX;
shape.graphics.height *= e.scaleY;
shape.graphics.beginBitmapFill((HighRes as Bitmap).bitmapData);
shape.graphics.lineTo(Box.width * 3, 0);
shape.graphics.lineTo(Box.width * 3, Box.height * 3);
shape.graphics.lineTo(0, Box.height * 3);
shape.graphics.lineTo(0, 0);
shape.graphics.endFill();

请注意,这是未经测试的代码,因此您可能需要进行调整。

于 2013-08-14T16:19:12.657 回答