- ベストアンサー
AS3.0でComboBox
プログラム超初心者です AS3.0でComboBoxをつかってmcを操作できませんか? ComboBoxに配列で入れて、ComboBoxの3番目を表示させると mc.gotoAndStop(2);←が実行されるようにしたいです 変更しやすくするためスクリプトに書いて使いたいです よろしくお願いします
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Flashの任意のタイムライン(例:メインのタイムライン)に ムービークリップ 「mc」 と ComboBox 「my_cb」 とが すでに配置されているものとします。 それら 「mc」 と 「my_cb」 が存在するフレーム(フレーム1ならフレーム1)に書くスクリプト例です。 //----------------------------------- //ComboBox「my_cb」の初期表示を設定 my_cb.prompt = "あいさつの魔法。"; //ComboBox「my_cb」の表示ラベルとデータを設定 my_cb.addItem( { label: "こんにちワン", data:4 } ); my_cb.addItem( { label: "ありがとウサギ", data:3 } ); my_cb.addItem( { label: "こんばんワニ", data:2 } ); my_cb.addItem( { label: "さよなライオン", data:1 } ); //「my_cb」チェンジ時に 関数 changeFunc を実行 my_cb.addEventListener(Event.CHANGE, changeFunc); //関数 changeFunc の定義 function changeFunc(e:Event):void { //もし選択されたアイテムのdataが2であれば if(my_cb.selectedItem.data == 2){ //mc内の再生をフレーム2で停止 mc.gotoAndStop(2); } } //----------------------------------- もっとも上のスクリプトの場合, 関数 changeFunc 内には 必ずしも if文 が必要なわけではありませんよね。 仮にあらかじめ 「ComboBox の data には mc を停止させるフレーム数を入れる」 というルールを決めておいたとすれば次のようにもできます。 //関数 changeFunc の定義 function changeFunc(e:Event):void { //mc内の再生を選択アイテムのdataフレームで停止 mc.gotoAndStop(my_cb.selectedItem.data); } あと ComboBox などを始めとする UIコンポーネント は Flash に付属する オマケ 的な存在ですから 本にもあまり使い方は書かれていませんし ネットでもそういうものを一々解説してません。 (UIコンポーネント は Adobe の人が ActionScript を駆使して作ったムービークリップの一種です。) ですからUIコンポーネント系は,基本的に ヘルプを見て,簡単な実験を繰り返して,その仕様を理解するのが誰でもがする普通の使い方です。 わからないことがあれば一にも二にも「ヘルプ」です。 http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/fl/controls/ComboBox.html http://help.adobe.com/ja_JP/FlashPlatform/reference/actionscript/3/fl/controls/ComboBox.html
お礼
できました! 質問する前に自分でやってみたんですが、ここで間違ってました selectedItem.data == 2 これをselectedItem == 2にしてました(汗 SharedObjectのようにdataで指定してやればよかったんですね。なるほどです 丁寧な解説、ありがとうございました