Я создаю приложение для 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