2016-10-05 41 views
0

我有一个在Android和iOS平台上运行的Adobe AIR应用程序。在应用程序中,我打电话给几个电影剪辑,所以总会有几个电影剪辑进入舞台。确实,我有6个不同的电影剪辑,每次6/5/4次我都会打电话给他们。
我想让它们变成动画,就像进入图库,进入影片剪辑,并通过帧动画创建一个帧。

我试图创建25个PNG图像,300 dpi,40x40大小。动画能够正常工作,但问题是每当我在任何设备上运行应用程序时,响应时间将非常巨大,导致应用程序有时会崩溃。看起来,如果我通过帧动画制作了帧高分辨率PNG,该应用将无法使用。

我需要对影片剪辑中的每个图像都有一个很好的质量,但我想这样做对于高质量的PNG并不是最佳的使用方法。我想可能会导入几个illustrator文件,并在每一帧上传播它们。但我不确定移动设备是否能够实现最佳的质量/性能比。

因此,如何在Flash CS6,AS3 adobe air定位移动设备中实现最佳质量/性能比?在电影剪辑AS3中创建逐帧动画 - Adob​​e air

编辑:

我创建的影片剪辑,在图书馆,它里面我都装一个PNG图像。我试图:
将该影片剪辑中的图像转换为影片剪辑,并照顾所有需要的名称,以确认所提供的答案。父亲的电影剪辑链接到一个AS类,我尝试插入建议的代码,但是发生的是,电影剪辑停止出现在舞台上。我错过了什么吗?

+1

300dpi没有意义,只与打印有关。性能问题可能来自您使用图像的方式。但是你没有显示你的代码。另外,为什么不在Flash中通过帧动画创建该帧?毕竟它是一个动画软件。 – null

+0

您应该将所有内容放入位图中。位图使用GPU,矢量和PNG使用CPU。位图优化对于移动设备上的流畅动画绝对是必需的。因为你在做Android和Android有很多不同的屏幕尺寸和dpi,你应该在矢量中绘制东西,调整矢量的大小以适应设备,将矢量转换为位图。如果你认为这是你的问题的答案,我可以给你更多的信息和示例代码。 – moot

+0

@moot我想是的这是正确的方式来通过,我已经创建了几个插图文件,每一个代表动画的一帧,你认为我应该将它们保存为位图,并将它们逐帧导入到影片剪辑在闪光?或者我可以将它们导入为eps或其他东西?你认为最好的方法是什么? –

回答

0

您应该将所有内容放在位图中。位图使用GPU,矢量和PNG使用CPU。位图优化对于移动设备上的流畅动画绝对是必需的。因为你在做Android和Android有很多不同的屏幕尺寸和dpi,你应该在矢量中绘制东西,调整矢量的大小以适应设备,将矢量转换为位图。

下面是将movieclip转换为位图的示例代码。原始影片剪辑 - mcCircleVector - 位于持有人影片剪辑 - mcCircle中。该代码将mcCircleVector转换为位图,将其删除,并将该位图添加到mcCircle,以便最终生成一个动画片段。

var bmpTemp: Bitmap; 
bmpTemp = new Bitmap(); 
bmpTemp = fConvertToBMP(mcCircle.mcCircleVector, 150, 150); 
mcCircle.removeChild(mcCircle.mcCircleVector); 
mcCircle.mcCircleVector = null; 
mcCircle.addChild(bmpTemp); 
bmpTemp = null; 


private function convertBMP(pClip: MovieClip, pWidth: int, pHeight: int): Bitmap { 
    var bd: BitmapData = new BitmapData(pWidth, pHeight, true, 0x00000000); 
    bd.draw(pClip, null, null, null, null, true); 
    var bmp: Bitmap = new Bitmap(bd, "auto", false); 
    bmp.smoothing = true; 
    return bmp; 
} 
+0

请检查我的编辑,我试过了,但我想我错过了一些东西 –