- ベストアンサー
数字キーでのフォーカス制御について(FlashLite1.1)
- flash初心者でもわかる数字キーでのフォーカス制御についての解説です。
- FlashLite1.1を使用して、簡単なボタン選択肢を操作する方法について説明します。
- 選択肢を数字キーでフォーカス上下に移動させる方法や制約についても解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
騙しの手品を作れば良いでしょう。 たとえば4つのボタンが必要だとします。 [ ボタン1 ] [ ボタン2 ] [ ボタン3 ] [ ボタン4 ] この4つのボタンはボタンとして作成はしません。 「4つ並んだボタンの絵」 として作成します。 ボタン用のムービークリップを用意して, 例えば, そのムービークリップ内のフレーム1には, [ ボタン1 ] が選択された状態の絵を用意します。 :*:[ ボタン1 ]:*: [ ボタン2 ] [ ボタン3 ] [ ボタン4 ] 同じムービークリップ内のフレーム2には, [ ボタン2 ] が選択された状態の絵を用意します。 [ ボタン1 ] :*:[ ボタン2 ]:*: [ ボタン3 ] [ ボタン4 ] 同じムービークリップ内のフレーム3には, [ ボタン3 ] が選択された状態の絵を用意します。 [ ボタン1 ] [ ボタン2 ] :*:[ ボタン3 ]:*: [ ボタン4 ] 同じムービークリップ内のフレーム3には, [ ボタン4 ] が選択された状態の絵を用意します。 [ ボタン1 ] [ ボタン2 ] [ ボタン3 ] :*:[ ボタン4 ]:*: そして,それとは別に, 同じムービークリップ内の各キーフレームに, 見えない(透明 とか ステージ外とか)のボタンを用意します【図↓】。 ムービークリップ内のフレーム1には次のように書いて ムービークリップ内の再生をフレーム1で停止させておきます。 --------------------------------- // このムービークリップ内の再生を停止 stop(); --------------------------------- ムービークリップ内のフレーム1の見えないボタンには次のように書きます。 --------------------------------- // キー2 を押したとき on (keyPress "2") { // このムービークリップ内を次のフレームに進めて停止 nextFrame(); } // キーEnter を押したとき(あくまでも例) on (keyPress "<Enter>") { // _root を tellTarget ("/") { // フレーム11 に進めて再生 gotoAndPlay(11); } } --------------------------------- ムービークリップ内のフレーム2の見えないボタンには次のように書きます。 --------------------------------- // キー2 を押したとき on (keyPress "2") { // このムービークリップ内を次のフレームに進めて停止 nextFrame(); } // キー8 を押したとき on (keyPress "8") { // このムービークリップ内を前のフレームに戻して停止 prevFrame(); } // キーEnter を押したとき(あくまでも例) on (keyPress "<Enter>") { // _root を tellTarget ("/") { // フレーム21 に進めて再生 gotoAndPlay(21); } } --------------------------------- ムービークリップ内のフレーム3の見えないボタンには次のように書きます。 --------------------------------- // キー2 を押したとき on (keyPress "2") { // このムービークリップ内を次のフレームに進めて停止 nextFrame(); } // キー8 を押したとき on (keyPress "8") { // このムービークリップ内を前のフレームに戻して停止 prevFrame(); } // キーEnter を押したとき(あくまでも例) on (keyPress "<Enter>") { // _root を tellTarget ("/") { // フレーム31 に進めて再生 gotoAndPlay(31); } } --------------------------------- ムービークリップ内のフレーム4の見えないボタンには次のように書きます。 --------------------------------- // キー8 を押したとき on (keyPress "8") { // このムービークリップ内を前のフレームに戻して停止 prevFrame(); } // キーEnter を押したとき(あくまでも例) on (keyPress "<Enter>") { // _root を tellTarget ("/") { // フレーム41 に進めて再生 gotoAndPlay(41); } } --------------------------------- > ASを利用して座標でコントロールするのが主流のようですが フォーカスの枠線の擬似移動 "だけ"を考えると座標でも簡単にできますが, そのときに押すボタンの動作などを考えると,複雑になると思いますよ。 擬似フォーカス枠の座標移動をさせる場合でも, 手品 を考えることには変わりないと思います。 どっちにしても, 見かけ(擬似フォーカス移動)と実体(見えないボタンの動作)は別に作成する必要があると思います。 もっと複雑(高度?)な例↓。 「携帯アイコンメニューのフォーカスのデフォルト位置を中央にしたい※初心者」 http://okwave.jp/qa4321185.html > 変動する選択肢数に対して,どのように座標をコントロールすれば この 「変動」 の意味がよくわかりません。 上で書いた方法は, FLA作成時点(SWFパブリッシュ前)だと, ボタンをいくつに変動させても問題はありません。 単純で極端な話, ボタンが 1000個 必要であれば ムービークリップ内を 1000フレーム にして同様のことをすれば良いわけです。 移動方向も縦に限らず自由自在です。 円形の順番でも対応できます。 擬似スクロールなどさせればボタンの数もいくらでも増やせます。 「変動」するとは, SWFパブリッシュ前ではなく,パブリッシュ後に 何かの要因によって,選択肢の数が動的に変わるのでしょうか? もしそうであれば, 全く別の手品を考えなければならないと思います。 しかしそれには 具体的状況がわからないと何とも答えようがありませんね。 具体的状況によって手品も変えるべきだと思います。
お礼
返答が遅くなり申し訳ございません! 丁寧な解説ありがとうございました。 おかげさまで解決する事ができました。