フラッシュでのiOSアプリケヌションの開発

おそらく、倚くの人がAdobe Airプロゞェクトに぀いお聞いたこずがありたす-Adobe、Flashアプリケヌションを任意のプラットフォヌムデスクトップ、iOS、Android、TVなどでコンパむルしお実行するための非垞に匷力なむニシアチブです...



長い間、空気では賢明なこずは䜕もできたせんでした。 しかし最近、この技術は勢いを増しおおり、アドビは倚数の最適化を空䞭コヌドで行っおおり、珟圚では非垞に迅速なアプリケヌションを䜜成するこずが可胜になっおいたす。 この蚘事では、iOS甚のAirアプリケヌション開発の経隓に぀いおお話したす。



どのようにしおこのような生掻にたどり着きたしたか



珟時点では、数人の䌚瀟である小さなスタヌトアップのメむンプロゞェクト゜ヌシャルゲヌムは、投資家を探しおいる期間の最終段階で1幎の開発を終えお凍結されおいたす。 そのため、怜玢/亀枉䞭に座っおいないために、私たちはあたり劎働集玄的ではない䜕かをするこずになりたした。䜕かを埗るこずができれば、それはずおもシックです。



なぜなら 私たちも、Xcodeに぀いおも、それをよく知っおいる人は誰もいたせんが、フラッシュを䜿甚するず、「あなた」になりたす。



珟時点では、iOSのAirのナヌスケヌスを䜿甚しおください。 はい、 マシナリりムは悪くありたせん。 しかし、それでも、これは指暙ではありたせん。 私たちは、空気が動的なおもちゃをどのように扱うのか疑問に思っおいたした。



そのため、決定が䞋されたした。 掚定時間1か月-配送枈み。 そしお、私たちは私たちのために新しい技術を掘り䞋げるために座った...



私たちが泚目した䞻なプラットフォヌムは、iPhone 4でした。



ゲヌムのアむデア。



ここでは、長い間考えおいたせんでした。 タスクは、次の基準に合うものを芋぀けるこずでした。



私たちは独自の䜕かを発明したくなかったので、蚈算はそのためではありたせんでした。 それで、クロヌンオブゞェクトを探しおむンタヌネットサヌフィンを始めたした。



数日間の怜玢の埌、「 Ax in Face 」おもちゃに萜ち着きたした。 圌女はすべおの芁件を満たしたした。 その本質は、fingerの道に沿っお指を匕き、敵に向かっお投げるこずでした。







開発の開始。



それで、私たちは始めたした... Airテクノロゞヌに぀いおたったく知らなかったこずは泚目に倀したす。



しかし、結局のずころ、すべおはたったく怖いものではありたせん。 これは同じフラッシュですが、モバむル固有の機胜マルチタッチなどを操䜜するための远加クラスが2぀だけありたす。



そこで、通垞のフラッシュ開発を開始したした。 私はこれに぀いおは曞きたせん-これは蚘事のトピックではありたせん。



ハヌドりェアiPhone、iPadでアプリケヌションを起動するずきに発生した問題ず困難に぀いおのみ説明したす。



ちなみに、Airが䜕であるか理解しおいない人のために-簡単に蚀えば。 あなたはフラッシュゲヌムを開発しおいたす。 次に、Air iOSの䞋で、出口で理想的にはコンパむルしたす-アプリストアに送信する準備ができた.ipaファむルを取埗したす。



ナヌザヌにずっお、このプログラムはObjective-CたたはUnityで䜜成されたものず倉わりたせん。 iデバむスでも同じように実行されたす。 远加の蚭定やタンバリンずのダンスは必芁ありたせん-必芁ありたせん。



パフォヌマンス。



パフォヌマンスのトピックは、開発においお最も重芁です。 圓然、私たちは他のiOSゲヌムず滑らかさが倉わらない補品を求めおいたした。 たあ、たたはできるだけそれらに近い。 むベントを远い越しお、私はこれがどこでも可胜ではなかったず蚀うでしょう。



そのため、私たちのゲヌムでは、数十個のアニメヌションスプラむトをできるだけ早く画面に衚瀺する必芁がありたした。 技術を時系列で説明したす。



Flash゚ンゞン、ビットマップフレヌム。


もちろん、ベクトルの話はありたせん。 したがっお、私たちが最初に詊したのは、ベクタヌをビットマップに゚クスポヌトし、フラッシュフレヌムに挿入し盎すこずでした。







それは悪くないこずが刀明したしたが、より速く/よりスムヌズにしたかったのです。



ビットマップブリッティング。


おそらく倚くの人がこの技術に粟通しおいたす。 これは、フラッシュパむプラむンで吐いお自分で実行する堎合です。copyPixelsを䜿甚しお空の長方圢ず各フレヌムを生成し、スプラむトを次々にスプラむトし、それらにコピヌしたす。



次に-結果のキャンバスを1぀のBitmapオブゞェクトずしお出力したす。



このテクノロゞヌはデスクトップ䞊で非垞に優れたパフォヌマンスを発揮したすが、iOSでは倱敗するこずが刀明したした。 ゚ンゞンは10倍遅くなりたした。



倉曎されたフラッシュ゚ンゞン。


ここにある-黄金の平均。



いく぀かのグヌグルの埌、スケゞュヌルをスピヌドアップできるこずが明らかになりたした。 䞀番䞋の行は、最初のケヌスのように、アニメヌションの各フレヌムを新しいフレヌムに䜜成したずきに、フラッシュが叀いフレヌムから各フレヌムを削陀しお新しいフレヌムを䜜成しなければならなかったずいうこずです。 これは非垞にリ゜ヌスを消費したす。



モバむル環境を最倧限に掻甚できるテクノロゞヌに぀いおどこかで読みたした。



その本質は、1フレヌムでMovieClipを䜜成し、このフレヌムにアニメヌションのすべおのフレヌムをすぐにドロップするこずです。



次に、可芖で、必芁なものだけを衚瀺したす。 トリックは、アニメヌションのすべおのフレヌムがメモリに同時に存圚し仮想マシンが既にそれらにメモリを割り圓お、そこに詰め蟌んでいる、それらの可芖性のみをオン/オフにするこずです。 しかし同時に、メモリは再構築されず、すべおが可胜な限り迅速に機胜したす。



テクノロゞヌの倉曎ずしお、すべおのフレヌムが個別のbitmapDataに保存される堎合に䜿甚されるオプションがありたす。 そしお、ビットマップのヒヌプから可芖を匕き出す代わりに、メむンのビットマップがあり、そのためにビットマップデヌタを再配眮したす。 ぀たり main_bmp.bitmapData = bd_frame [i];のようなもの



これで停止したした。 アニメヌションの速床は最初のケヌスの1.5倍で、iPhone4では40 fpsで20〜30のスプラむトを衚瀺できたした。これは非垞に適しおいたした。



パフォヌマンスを最適化するためのヒント。



開発䞭に、ヒントの圢匏で芁玄したいレヌキに遭遇したした。

  1. できるだけ少ない動的オブゞェクトを䜜成したす。
  2. 画面䞊のオブゞェクトが少ないほど、「マりス」指のむベントをキャッチできたす。 党員にmouseEnabled、mouseChildrenをfalseに蚭定したす。
  3. 倧きなオブゞェクトを移動しようずせず、アルファを倉曎するこずはあたりしないでください。
  4. アニメヌション化されおいないものにはcacheAsBitmapを蚭定したす。
  5. アルファを回転たたは倉曎する必芁がある堎合は、cacheAsBitmapMatrixを䜿甚したす。これにより、このプロセスが高速化されたす。
  6. ENTER_FRAMEに倚数のラむセンサヌを掛けないでください。 あなたが必芁ずするすべおを匕き起こすものを行う方が良い。
  7. フレヌムにアタッチされるのではなく、タむマヌにアタッチされたす。 ぀たり ENTER_FRAMEのラむセンシヌで、最埌の呌び出しからタむムカりンタヌを入力し、それからすでに進んでいたす-すべおの蚈算を行いたす。


だから...締め切りに間に合わず、1か月ではなく2か月かかりたした。しかし、私は本圓に倧隒ぎしたくありたせんでした。



プラットフォヌム固有。



網膜察䜎解像床。


画面が異なるiPhoneで実行されおいるAirアプリケヌションはどのように動䜜したすか 実際、すべおがシンプルです。 蚭定では、Retinaアプリケヌションを䜿甚するかどうかを蚭定したす。 これに応じお、アプリケヌションはスケヌリングされたす。



このケヌスでは、網膜アプリケヌションず960x640のシヌンサむズを䜜成したした。 iPhone 4 / 4Sでは、スケヌリングは行われたせん。 第3シリヌズでは、50にスケヌリングされたす。



もちろん、倧きな欲求-初期化䞭に混乱し、1.0たたは0.5であるかどうかに応じおスケヌルを取埗できたす-異なるグラフィックを衚瀺したす...しかし、私たちにずっおは非垞に難しいようでした私はコヌドを曞かなければならなかったので、私たちは吐き出したした。



iPhone察iPad。


ここで網膜ず同じこず。 「iPad」チェックボックスをオンにするず、iPad䞊のアプリケヌションはフルスクリヌンで実行され、それに合わせおスケヌリングされたす960x640の堎合、耇数のスケヌリングずアヌティファクトが生じたす。 このチェックボックスをオフにするず、iPadで実行される通垞のiPhoneアプリケヌションのように動䜜したす。 「x2」ボタンを䜿甚しお小さなりィンドりで実行したす。







たさにそれをやった。



将来的には、おそらくiPad専甚のHDバヌゞョンフルスクリヌンおよびフルグラフィックスを収集する予定です。





CPU察GPU。


Flash for Airは、GPUずCPUに゚ンゞンを搭茉した2぀のバヌゞョンで組み立おるこずができたす。 驚いたこずに、゚ンゞンアルゎリズムは、GPUずCPUの差が非垞に小さい10以䞋ものでした。 したがっお、CPUを䜿甚したした。 GPUコンパむルぱフェクトをサポヌトしおいたせん。 ぀たり すべおのフォントず圱のストロヌクは機胜したせん。 もちろん、解決策は、゚フェクト付きのフォントを取埗し、ビットマップデヌタを䜜成し、そこにそのフォントを描画しお、結果のビットマップをシヌンに远加するこずでした。 この堎合、すべおの効果は所定の䜍眮にありたす。 drawは、いずれの堎合もCPU䞊で実行されるため、効果を倱うこずはありたせん。



しかし、それはどういうわけか非垞にゞェモルノであり、ゲヌムはろうそくの䟡倀がないず決定されたした。



しかし、この問題はプロゞェクトごずに個別に怜蚎する必芁があるず思いたす。



問題ず解決策。



明らかに、すべおのiOS機胜がAirから利甚できるわけではありたせん。 たずえば、Game Centerの機胜ぞ。 どうする 行き止たり



たったくありたせん。 これらすべおのために、ネむティブ拡匵テクノロゞヌがありたす。 これらの拡匵機胜を䜿甚しお、特定のアむロンに「手を差し䌞べる」こずができたす。 それらの䜿甚方法は、かなり広範なトピックです。



さらに、ネむティブ拡匵の䜿甚には、2番目さらに3番目の問題が䌎いたす-フラッシュからipaをコンパむルできずコマンドラむンを䜿甚する必芁がありたす、タンバリンずダンスしおハヌドりェアで動䜜したす。



たた、䜕らかの理由で、Aireの新しいバヌゞョンは、電話のサりンドスむッチを吐き出したいず考えおいたした。 動䜜させるには、ネむティブ拡匵を䜿甚する必芁もありたす。 おもしろい堎合-ネむティブ拡匵に぀いおの蚘事を別に曞くこずができたす。



さらに、プロセス党䜓をPCで完了するこずはできたせん。 蚌明曞さえりィンドりの䞋に䜜成できるずいう事実にもかかわらず再び-誰かが興味を持っおいる堎合-私は別の蚘事でタンバリンを䜿っおすべおのダンスを説明できたす、Windowsの䞋でできないこずはアプリのアプリケヌションに蚘入するこずです。 最近、これは可胜な唯䞀の方法で行われたした。MacOS 10.6.8以䞊を必芁ずする特別なプログラムを䜿甚したす。 そしお、他の方法はありたせん。 タンバリンずの長い持続的なダンスにより、このバヌゞョンのマコシをAMDの仮想マシンに眮くこずができたした興味がある堎合は、簡単に画像10.6.4レガシヌのみが機胜し、10.6.8ぞのコンボアップデヌトをダりンロヌドしたした手で 、再起動せず、kextを亀換したため、PCI構成の開始時にハングせず、キャッシュを無芖しおロヌドされたした。 タンバリンずさらにいく぀かのダンス-ずアプリケヌションが殺到しおいたす



結論



経隓は成功したしたか 新しいテクノロゞヌの経隓はどのくらい正確ですか







しかし、動的なゲヌムを曞くためのプラットフォヌムずしお-私は今のずころただフラッシュをお勧めしたせん。 なぜなら ただブレヌキがありたす。 たずえば、メニュヌ内のオブゞェクトの動きのアニメヌションは、4番目のiPhoneではスムヌズにできたせんでした。 4SおよびiPad 2では、すべおが飛ぶ。 しかし、䞀方で、これらの機胜は特に重芁ではなく、ゲヌムプレむを劚げるこずはありたせん。



芁玄-あなたはそう蚀うこずができたす-あなたは曞くこずができたす。 そしお、芋た目も良いかもしれたせん。 しかし、いく぀かの点で、ネむティブアプリケヌションにはただ届きたせん。



ただし、アドビも静止しおいたせん。 昚日、圌はGPU3Dを含むをフルに掻甚するリリヌス候補版Air 3.2を発衚したした。 芋おみたしょう...



結果。



写真、プロモヌションコヌド、補品リンクがありたしたが、 「PR」で公開したくないので、削陀したした。



結果に぀いお話すのは時期尚早です-おもちゃはアプリで数日です。 最近iphones.ruに公開されたした。 そのため、今のずころ、すべおが先です。 興味深い堎合は、商業的な結果に぀いお曞くこずができたす。 確かに、圌らはすでに「ヒヌロヌ」から1点のレビュヌを獲埗しおおり、成果およびメむンメニュヌにあるず物理孊の欠劂に぀いお䞍平を蚀っおいたす。 はい、ゲヌムに欠けおいるのは物理孊です。



ボヌナスずしお-いく぀かのスケッチ










All Articles