• ベストアンサー

AS3.0でComboBox

プログラム超初心者です AS3.0でComboBoxをつかってmcを操作できませんか? ComboBoxに配列で入れて、ComboBoxの3番目を表示させると mc.gotoAndStop(2);←が実行されるようにしたいです 変更しやすくするためスクリプトに書いて使いたいです よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.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

flash0
質問者

お礼

できました! 質問する前に自分でやってみたんですが、ここで間違ってました selectedItem.data == 2 これをselectedItem == 2にしてました(汗 SharedObjectのようにdataで指定してやればよかったんですね。なるほどです 丁寧な解説、ありがとうございました

関連するQ&A

  • ComboBoxについて

    ComboBoxのアイテムリストからアイテムを選んだら 選んだアイテムに対応した別の文字列 をComboboxに表示したいと思います。 動き的には Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  ComboBox1.Text = ""  ComboBox1.Items.Add("000")  ComboBox1.Items.Add("001")  ComboBox2.Text = ""  ComboBox2.Items.Add("0個目")  ComboBox2.Items.Add("1個目")  ComboBox2.Visible = False End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged  Select Case ComboBox1.SelectedIndex   Case 0    ComboBox1.Visible = False    ComboBox2.Visible = True    ComboBox2.SelectedIndex = 0   Case 1    ComboBox1.Visible = False    ComboBox2.Visible = True    ComboBox2.SelectedIndex = 1  End Select End Sub Private Sub ComboBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.GotFocus  ComboBox1.Visible = True  ComboBox1.DroppedDown = True  ComboBox2.Visible = False End Sub こんな感じで、ComboBoxを二つ使えば実現できるのですが一つだけでも実現できる方法が ありましたら、教えてくださいませ。

  • ComboBox1_Changeについて

    Private Sub ComboBox1_Change() Dim si As Integer With UserForm1 .ComboBox2.Text = "" si = .ComboBox1.ListIndex ' ComboBox1 の何番目が選択されたかを得る Select Case si Case 0 ' 0番が選択されていたらComboBox2 の内容をC列から作成する .ComboBox2.RowSource = "Sheet1!C1" Case 1 .ComboBox2.RowSource = "Sheet1!C2" End Select End With End Sub コンボボックス1で選択された値に対して『Sheet1!C1』が 表示されるようにするには、『.RowSource』の部分に 適切な言語がありますでしょうか。 また、『.RowSource』は、こういう効果がある等 紹介しているサイトをご存知あれば教えてください。 (探してみたのですが、めぐり合えず)

  • VB.2010 ComboBox 項目選択

    Builder C++ではかなりのプログラムを作成していますが、拠点でプログラムを変更出来る様にVBでプログラムを作成し直しているVBに関してはほぼ初心者です。 VBでComboBoxを使用して内容を選択させようとして居ます。 プログラムの最初でComboBoxのTextに初期値(前回選択値)を設定して居ます。 ComboBoxで選択された内容はComboBoxの内容が変更された時に次回プログラム実行時の初期表示の為にiniファイルに書き込みをして居ます。 問題はプログラムの最初に初期値を書き込んだ時にもComboBoxの内容が変更される為、内容変更の割り込みが入り、iniファイルの書き込みルーチンが動作してしまう事です。 ComboBoxのTextの書き込の時に割り込みをしなくて、選択をした時のみ割り込みが発生する割り込みがあると良いのですが、調べた範囲では無い様でした。 Builder C++ではMouseUPイベントの割り込みを使って同じ機能を実現させたのですが、VBのMouseUpイベントでは一つ前に選択された内容しか入って来て居ない様です。 MouseUpのイベント割り込み先には以下のコーディングをして居ます。 Private Sub ComboBox1_MouseUp(ByVal sender・・・・・ Label1.Text = ComboBox1->Text End Sub しかし、これだと選択した時は前回選択された内容が表示されてしまいます。 当然 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender ・・・ Label1.Text = ComboBox1->Text End Sub の場合は選択された内容が表示されます。 双方共、実行後のComboBox自体の表示内容は選択されたものになって居ます。 MouseUpのイベントの時にも選択された内容が表示されれば、このイベントでは ComboBox1->Text 初期値を設定した時はイベントが発生しないので都合が良いのですが、一つ前に選択された内容しか表示されません。 MouseUpの時には未だ内部処理が終了していないので新しい内容が表示出来ないのでしょうか。 Builder C++ には Application->ProcessMessages()と言う、他のタスクを先に実行させる関数がありますが、多分VBにもその様な関数があると思いますので、それを挿入すれば最新の状態を入手できるものでしょうか。 上記目的を達成出来る方法はありますでしょうか。 無ければフラグを使用して、ComboBox1->Text に初期値を設定した時には割り込み先でiniファイルの書き込みをしない様にプログラムする予定です。 当然、初期値を表示して居るのですから初期値設定時に再度iniファイルに書き込みがあっても問題は無いのですが、実際には動作していけないプログラムを書きますので、初期値書き込み時には割り込みが無い様にしたいのです。 VBでの処理方法がありましたらお教え下さい。宜しくお願い致します。

  • Comboboxを連動するには?。

    はじめまして、どなたか教えてくれませんか。 Microsoft Visual Basic 2005を使ってCombobox1で選らんだ項目を WebBrowser1で表示させたい。 URLをCombobox1に表示させて表示はできますが項目を変えて表示するやり方がわかりまでいたのでおしえてくれませんか。 よろしくお願いします。 Combobox1で表示させたい項目 ヤフー グーグル goo Navigateで誘導したいURL http://www.yahoo.co.jp/ http://www.google.com/ http://www.goo.ne.jp/ Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged WebBrowser1.Navigate(ComboBox1.Text) End Sub

  • 関数を順番に実行したい AS3

    ムービークリップ(mc)の3つのフレームを順番に1秒づつAS3で表示させたい。 フレームレートは12fpsの場合、 関数 play1,play2,play3 の順番で12回ずつ実行すればよいのでは? と思いましたがどうしたら良いか教えてください。 (12fpsで1秒づつ表示したい、ループはしない) function play1(evt:Event):void { evt.target.gotoAndStop(1); } function play2(evt:Event):void { evt.target.gotoAndStop(2); } function play3(evt:Event):void { evt.target.gotoAndStop(3); }

    • ベストアンサー
    • Flash
  • VBAのComboBoxについて

    UserForm1にComboBoxが8個(ComboBox1~8)あります。 各ComboBoxはSheet1の下記列に入力されているリストを表示します。 ComboBox1 : A列 ComboBox2 : B列 ComboBox3 : C列 ComboBox4 : D列 ComboBox5 : E列 ComboBox6 : F列 ComboBox7 : G列 ComboBox8 : H列 ComboBox9 : I列 ComboBox10 : J列 そこで、UserForm1の各ComboBoxでデータ選択する際に、リストにある場合はそれを選択し、リストにない場合はComboBoxに新しいデータを入力し、UserForm1のCommandButton1を押下時にその新しいデータをSheet1の各列に追加したいのですが、どのようにしたらよいのでしょうか。 Sheet1にあるリストをComboBoxに表示するところまではできています。 ※ComboBoxの番号とリストの列番号を一致させています。 --------------------------------------------------------------- Private Sub UserForm_Initialize() Dim lastrw As Integer, retu As Integer, i As Integer For retu = 1 To 10 lastrw = Sheet1.Cells(1, retu).End(xlDown).Row For i = 1 To lastrw - 1 Controls("ComboBox" & retu).AddItem Sheet1.Cells(i + 1, retu).Value Next i Next retu End Sub ---------------------------------------------------------------

  • AS2をAS3にしたい

    AS2で書かれたスクリプトの一部があります。下記をAS3にしたいのですが。 ちなみに、mcはインスタンス名です。  onClipEvent (load) {      pointX = 10;     pointY = 20;  }  onClipEvent (mouseMove) {       _root.mc._x = _root._xmouse + pointX;       _root.mc._y = _root._ymouse + pointY;     }

    • ベストアンサー
    • Flash
  • ASファイルについて

    関数などをまとめてasファイルにして読み込みたいとかんがえているのですが、可能なのでしょうか? たとえば レイヤー2にあるボタンオブジェクト"btn"をクリックすると レイヤー1で#include "function.as"としたなかの function hoge() { gotoAndStop(5); } とうい関数を実行したいっていうふうに考えいます。 btn.on(press) = hoge(); やってはみたのですが、Flash初心者でどうもうまくいきません。 どうかご教授ください。 よろしくお願いします。

  • 左右ボタンで方向切替

    FLASH CS3 AS2.0で作っています。 ステージの幅120とします。画像を7枚つなげてインスタンス名をmy_mc。 my_mcの左上を基準として左右ボタンを使い、移動させようとしています。 左右ボタンの配置が次の3種類になるためタイムラインが3フレーム必要になります。 1フレーム → 2フレーム ← → 3フレーム ←    こうした場合、パブリッシュすると連続して再生するため止める必要があり1フレームに stop();を入れます。それでは、アクションスクリプトはそれぞれのボタンに記述しなければなりません。 疑問(1)通常、こんな使い方になるのでしょうか? 1フレームめにアクションスクリプトを記述するのが当たり前と思っているのですがこれは間違いになりますか。 →ボタン(画像は左方向に動く)  7番目の画像が出たら3フレームに進み←ボタンを表示はできました。 on (release) { my_mc._x -=120;//左へ移動 if(my_mc._x<=-720){ //trace(my_mc._x); gotoAndStop(3); } } 次に2から6番目の画像では、←と→が出なければならなく、この方法がわかりません。 7番目から1番にもどるまで← →の表示はできました。 on (release) { my_mc._x +=120;//右へ移動 if(my_mc._x<=0){ //trace(my_mc._x); gotoAndStop(2); } } しかし、1番目は→だけが必要です。 こうなってくると何がなんやらとても混乱しています。疑問(1)回答ととアクションスクリプトの方法 について教えてください。

    • ベストアンサー
    • Flash
  • VB.net comboboxの操作で

    下記ソースでiiによってCombobox1の値を変更したいのですが 「ComboBox1.Text =」にすると ComboBox1_SelectedIndexChanged にかかれたプログラムが動いてしまいます。 ComboBox1_SelectedIndexChangedが動かずに ComboBox1に値設定する方法ないでしょうか。 ------------------------------------------------program ComboBox1.Items.Add("みかん") ComboBox1.Items.Add("りんご") ComboBox1.Items.Add("すいか") if ii=1 then ComboBox1.Text = "みかん" if ii=2 then ComboBox1.Text = "りんご" if ii=3 then ComboBox1.Text = "すいか" 環境 VB 2008 express OS Windows XP