現状でのモバイルFlash開発は、残念ながら「Painである」と言わざるを得ない
例えば、モバイルFlashではListアイテムのドラッグ&ドロップはサポートされない_| ̄|○
まず、ドキュメントにそう書いてある。
spark.components.List - Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
マジかよ?と思って、このようにやってみた。
このようにすれば、リストアイテムのドラッグ&ドロップはモバイルでもできる。しかし、痛い問題が。
interractionModeがtouchの時の右端の表示はこう。
mouseの時はこう。
つまり、interractionModeをmouseにすると右端にスクロールバーが出るべき数ピクセルが確保されてしまうのでカッコ悪いことに。
これには百歩譲って目をつぶるとしても、マウスカーソルが出るのは許せん!
上のキャプチャはMac上で動作させたものだが、iOSでもAndroidでも同様にマウスカーソルが表示されることを確認した。
要するに、アイテムのソートをサポートしなければならないリストとしては、spark.components.Listは使い物にならない。となると、自分で実装するほかないだろう・・・
現状のモバイルFlashは、こういった残念なことがまだ色々とあるなと痛感している。
例えば、ラジオボタンはなぜか当たり判定が大きすぎて使い物にならず、結局自分で作ってしまった。
また、モバイルFlashは遅くてViewの切り替えに時間がかかりすぎるので、Viewの切り替えが完了してからコンポーネントを追加するという、コンポーネントの遅延作成処理をする必要もあった。
さらには、コンポーネントの話ではないけれど、registerClassAlias()が使えないっぽいこととかも・・・
琴線探査: モバイルFlashではregisterClassAlias()が使えない?
最悪なのは、iOSへアプリをデプロイするのが手動であること_| ̄|○
こうなるとやはり・・・結局、最高のパフォーマンスを発揮でき、まともなコンポーネントや開発環境が揃っているネイティブ言語で開発したほうが、変なところで苦労する時間を減らせるのではないか?結局その方が早いのでは?と思ってしまう。
今年中にはモバイルFlashもかなり速くなりそうだけど、十分なパフォーマンを確保できるようになるだろうか。
琴線探査: モバイルのFlashは速度的にまだまだだけど、今年中にもある程度速くなりそうか?
また、今後のSDKのバージョンアップでコンポーネントの完成度も上がっていくだろうか。
残念ながら、現状でのモバイルFlash開発は「Painである」と言わざるを得ないと感じている。
やはり、マルチプラットフォームにおけるソフトウェア開発に対する「Pain Killer」は永遠に処方されないのか。
I DO want ペイン!ぺいんン!キラー!キラーァ!
もし1年後もこの状況が改善されていなければ、恐らくFlashプラットフォームは徐々に力を失っていくのだろうなとも感じている。
しかし、こういった問題が解決されれば、Flashのモバイルアプリ開発効率は相当なものだ。
1年後には是非、そういう状況になっていることを切に願いたい。
まず、ドキュメントにそう書いてある。
spark.components.List - Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
・・・
dragEnabled プロパティ
・・・
interactionMode が touch に設定されているモバイルデバイスでは、ドラッグ&ドロップがサポートされていません。
・・・
マジかよ?と思って、このようにやってみた。
/** * アカウント並べ替えボタンクリック時 * */ protected function onClickBtnOrganizeAccount():void { trace("onClickBtnOrganizeAccount() w=" + listAccount.width + " h=" + listAccount.height); currentState = "organize"; listAccount.setStyle("interactionMode", "mouse"); listAccount.dragEnabled = true; listAccount.dragMoveEnabled = true; listAccount.dropEnabled = true; listAccount.itemRenderer = new ClassFactory(AccountSortItemRenderer); } /** * アカウント並べ替え終了ボタンクリック時 * */ protected function onClickBtnOrganizeDone():void { trace("onClickBtnOrganizeDone() w=" + listAccount.width + " h=" + listAccount.height); currentState = "default"; listAccount.setStyle("interactionMode", "touch"); listAccount.dragEnabled = false; listAccount.dragMoveEnabled = false; listAccount.dropEnabled = false; listAccount.itemRenderer = new ClassFactory(AccountItemRenderer); }
このようにすれば、リストアイテムのドラッグ&ドロップはモバイルでもできる。しかし、痛い問題が。
interractionModeがtouchの時の右端の表示はこう。
mouseの時はこう。
つまり、interractionModeをmouseにすると右端にスクロールバーが出るべき数ピクセルが確保されてしまうのでカッコ悪いことに。
これには百歩譲って目をつぶるとしても、マウスカーソルが出るのは許せん!
上のキャプチャはMac上で動作させたものだが、iOSでもAndroidでも同様にマウスカーソルが表示されることを確認した。
要するに、アイテムのソートをサポートしなければならないリストとしては、spark.components.Listは使い物にならない。となると、自分で実装するほかないだろう・・・
現状のモバイルFlashは、こういった残念なことがまだ色々とあるなと痛感している。
例えば、ラジオボタンはなぜか当たり判定が大きすぎて使い物にならず、結局自分で作ってしまった。
また、モバイルFlashは遅くてViewの切り替えに時間がかかりすぎるので、Viewの切り替えが完了してからコンポーネントを追加するという、コンポーネントの遅延作成処理をする必要もあった。
さらには、コンポーネントの話ではないけれど、registerClassAlias()が使えないっぽいこととかも・・・
琴線探査: モバイルFlashではregisterClassAlias()が使えない?
最悪なのは、iOSへアプリをデプロイするのが手動であること_| ̄|○
こうなるとやはり・・・結局、最高のパフォーマンスを発揮でき、まともなコンポーネントや開発環境が揃っているネイティブ言語で開発したほうが、変なところで苦労する時間を減らせるのではないか?結局その方が早いのでは?と思ってしまう。
今年中にはモバイルFlashもかなり速くなりそうだけど、十分なパフォーマンを確保できるようになるだろうか。
琴線探査: モバイルのFlashは速度的にまだまだだけど、今年中にもある程度速くなりそうか?
また、今後のSDKのバージョンアップでコンポーネントの完成度も上がっていくだろうか。
残念ながら、現状でのモバイルFlash開発は「Painである」と言わざるを得ないと感じている。
やはり、マルチプラットフォームにおけるソフトウェア開発に対する「Pain Killer」は永遠に処方されないのか。
I DO want ペイン!ぺいんン!キラー!キラーァ!
もし1年後もこの状況が改善されていなければ、恐らくFlashプラットフォームは徐々に力を失っていくのだろうなとも感じている。
しかし、こういった問題が解決されれば、Flashのモバイルアプリ開発効率は相当なものだ。
1年後には是非、そういう状況になっていることを切に願いたい。
まとめ、ありがとうございます。painfulでしたね・・・orz
返信削除