2012-02-07 9 views
0

明らかに、スコアカウンタについての記事がたくさんあります。うまく動作するすべてのフレーム(Enter_frame関数)を更新するカウンタがあります。スコア変数はフレームごとに増加するため、テキストフィールドが変化してスコアが表示されます。Flash AS3 - スコアカウンタ

私の問題は、iOS上でアプリケーションにいくつかの深刻なフレームレートの問題があることです。私はスコアティッカーが有効になっているときに5-10fpsの低下を話しています、それは非常に面倒です。これを取り巻くいくつかの方法では、フレームごとにテキストフィールドを更新して再描画する必要があると考えていますが、その周りの方法はわかりません。

歓迎、

ありがとう!

答えて

0

スコアを時間の関数として再定義する必要があります。

score = t/100; //where t is in milliseconds 

ゲームの開始時に、タイマー変数を初期化します。

あなた ENTER_FRAMEリスナーで次に
var start:Number = getTimer(); 

、フレーム数、実際の時間からスコアを計算していない:

score = (getTimer() - s)/100; 

これは時間のスコアをベースにするパフォーマンス独立した方法です。

+0

パフォーマンスの問題を回避するために使用してんですよ!しかし、これを実装しても、まだfpsの問題は解決していません。 – Artharos

+0

@Artharosアプリケーションをモバイル向けに最適化するには、さまざまな手順を踏む必要があります。モバイル用の開発は、ターゲットデバイスで一般的にリソースが少なくなるため、常に難しくなります。最大の最適化を確保する必要があります。 「モバイル/ iOS向けのFlashの最適化」に関する情報を見つけ、概略を説明したベストプラクティスに従っているかどうかを確認することをおすすめします。 – joncys

+0

@joncys私はモバイルを念頭に置いて最適化しています。他のすべてがうまく動いています(オブジェクトを生成して管理している)。ちょっと奇妙なのはちょっと奇妙なことですが、私はもう少し狩りをして何かを見つけることができるでしょう。 – Artharos

1

背景が不透明なTextFieldを使用するか、またはビットマップフォントに変更すると、パフォーマンスが向上します。

たとえば、別々のビットマップイメージを事前に作成することも、実行時にbitmapData.drawを使用して、必要な数ごとに個別のBitmapDataインスタンスを生成することもできます。次に、正しいスコアカウントを表示するためにビットマップをスワップできます。

将来はNMEを使用することも考えられますが、これはFlashとよく似ていますが、Adobe AIR for mobileプラットフォームより3〜9倍高速です。たとえば、Iain LobbのBunnyMarkベンチマークでは、iPhone 4でAdobe AIRを使用して、16 FPSで回転とアルファを使用して500のバニーをレンダリングできます。NMEは同じデバイスで30 FPSで4750のバニーをレンダリングします。

良いアイデア、感謝だこと私は

http://www.haxenme.org

+0

あなたの返信ありがとう!ビットマップ番号を使用して新しい番号を表示するように変更するという考えは良い考えですが、そのことは考えていません。 NMEについて私に知らせてくれてありがとう、ちょっと見ただけで本当にいいよ、そしてそのfpsの増加は本当に素晴らしいです!私はそれをインストールし、私は家に帰って報告するときにそれを再生します。 – Artharos