首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪存到iPhone的性能非常低

闪存到iPhone的性能非常低
EN

Stack Overflow用户
提问于 2011-06-16 06:15:11
回答 3查看 1.5K关注 0票数 4

我正在用闪存创建一个iPhone应用程序,我遇到了性能问题。我已经将整个过程简化为一个简单的示例(如下所示)。它在屏幕上绘制一个方框,并使用TouchEvent跟踪手指的手势。问题是:在我正在测试的iPhone 3G上,它的速度非常慢。盒子在一页纸上上下卡顿。

GPU模式在application.xml中启用,当我设置-renderingdiagnostics标志时,文本变为蓝色(这意味着每次都会渲染,这是正确的),但正方形保持白色。它不会打开诊断模式的三种颜色中的任何一种。这是其中的一个屏幕:

http://whit.info/dev/flashapp/screen.jpg

这是一段行动迟缓的视频:

http://vimeo.com/25160240

那么,假设这只是一个垂直移动的缓存子画面,我是不是错过了启用GPU或位图缓存的某些东西?或者这是它在这个硬件上得到的最好的结果吗?其他的应用程序看起来运行的很好。

有人能帮上忙吗?

非常感谢!

-Whit

代码语言:javascript
复制
package {

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.TouchEvent;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;

[SWF(width='320', height='480', backgroundColor='#BACC00', frameRate='60')]

public class Main extends MovieClip{
    private var square:Sprite;  
    private var txt:TextField;  
    private var startDragY:Number;
    private var startObjY:Number;

    public function Main(){
        Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT;

        stage.addEventListener(TouchEvent.TOUCH_BEGIN, beginhandler); 
        stage.addEventListener(TouchEvent.TOUCH_MOVE, movehandler); 
        stage.addEventListener(TouchEvent.TOUCH_END, endhandler);

        drawBox(0xffffff);
        makeOutput();
    }

    private function beginhandler(evt:TouchEvent): void { 
        startDragY = evt.stageY;
        startObjY = square.y;
    }

    private function movehandler(evt:TouchEvent): void { 
        out(String(evt.stageY));
        square.y = startObjY - (startDragY - evt.stageY); 
    }

    private function drawBox(fill:Number):void {
        square = new Sprite();

        square.graphics.beginFill(fill);
        square.graphics.drawRect(20,60,40,40);
        square.graphics.endFill();

        stage.addChild(square);
        square.cacheAsBitmap = true;
    }

    private function makeOutput():void {
        txt = new TextField();
        stage.addChild(txt);
        txt.selectable = false; 
        txt.autoSize = TextFieldAutoSize.CENTER;
        txt.defaultTextFormat = new TextFormat("Arial", 22, 0x000000);
        txt.text = "Touch Screen";
        txt.x = stage.stageWidth/2 - txt.width/2;
        txt.y = stage.stageHeight/2 - txt.height/2;
    }

    private function out(str:String):void {
        txt.text = str;
    }
}
}

另外,下面是我用来编译的命令:

代码语言:javascript
复制
.amxmlc ~/Files/Code/iOS/MyApp/Main.as

.pfi -package -renderingdiagnostics -target ipa-test -provisioning-profile MyApp.mobileprovision -storetype pkcs12 -keystore Certificates.p12 -storepass MyPass MyApp.ipa application.xml Main.swf Default.png icons
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-17 12:39:45

最新的Adobe更新是针对这些设备的。

我们的团队也面临着同样的问题,通过更新产品在某种程度上解决了这个问题。

我们更新为:

代码语言:javascript
复制
Flash professional CS5.5 
AIR 2.7 

而且性能差异是显而易见的。

票数 1
EN

Stack Overflow用户

发布于 2011-06-16 08:32:26

您使用的是哪个版本的Flash exporter?据称,CS5.5的更新带来了一些速度提升。

此外,iOS 4上的iPhone 3g已经内存不足,如果你在加载AIR的情况下内存不足,我也不会感到惊讶。

票数 1
EN

Stack Overflow用户

发布于 2011-06-16 09:13:24

如果你想在Xcode3G(也许是任何iOS设备)上有很好的动画效果,使用苹果提供的iPhone工具用Objective C编写你的应用程序。这样运行速度会快很多,消耗客户设备的电池和内存也会少得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6365069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档