Flash на iPhone очень низкая производительность - PullRequest
4 голосов
/ 16 июня 2011

Я создаю приложение для iPhone во Flash и столкнулся с проблемами с производительностью.Я сократил все это до простого примера (ниже).Он рисует прямоугольник на экране и использует TouchEvent для отслеживания жестов пальцев.Вот в чем проблема: он очень вялый на iPhone 3G, на котором я тестирую.Окно заикается вверх и вниз по странице.

Режим GPU включен в application.xml, и когда я устанавливаю флаг -renderingdiagnostics, текст становится синим (это означает, что он отображается каждый раз, что правильно), но квадрат остается белым.Не включается ни один из трех цветов режима диагностики.Вот экран этого:

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

А вот видео о медлительности:

http://vimeo.com/25160240

Итак, учитывая, чтоэто только один кэшированный спрайт, перемещающийся по вертикали, я что-то упускаю из-за включения графического процессора или кэширования растрового изображения?Или это так хорошо, как это происходит на этом оборудовании?Другие приложения выглядят блестяще.

Кто-нибудь может помочь?

Большое спасибо!

-Whit

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;
    }
}
}

Кроме того, вот команды, которые яИспользую для компиляции:

.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

Ответы [ 3 ]

1 голос
/ 16 июня 2011

Если вы хотите добиться хорошей анимации на iPhone 3G (возможно, на любом устройстве iOS), напишите свое приложение в Objective C, используя предоставленные Apple инструменты Xcode.Результат будет работать намного быстрее и потреблять гораздо меньше батареи и памяти устройства вашего клиента.

1 голос
/ 17 июня 2011

Последние обновления Adobe предназначены для устройств.

Наша команда также столкнулась с той же проблемой и вроде как решила проблему, обновив продукты.

Мы обновлены до:

Flash professional CS5.5 
AIR 2.7 

и разница в производительности заметна.

1 голос
/ 16 июня 2011

Какую версию экспортера Flash вы используете?Обновление CS5.5 якобы получило некоторое увеличение скорости.

Кроме того, iPhone 3g на iOS 4 уже не хватает памяти, и я не удивлюсь, если у вас не хватает памяти с загруженной AIR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...