FLASH8(Win-XP)使用者です。
現在コンボボックスをいじっています。
文字の大きさを変えるのはわかったのですが、わくを大きくしないと文字が欠けてしまいます。
コンボボックスのタテヨコを変えるにはどうしたらいいのでしょうか?
お詳しい方、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ComboBox コンポーネントは、リストをたたんだ状態であるプルダウン部分と、プルダウン部分や▼マークをクリックした時に出てくるドロップダウンリスト部分に分かれています。


ドロップダウンリスト部分は List という別のコンポーネントになっていて、ComboBox コンポーネントの内部で動的に生成されます。

ムービー内に配置した ComboBox のインスタンスを変形ツールで大きさを変更すると、プルダウン部分の大きさは変わります。
しかし、変形ツールによる変形の情報はドロップダウンリスト(正確には、リスト内の行=セル)に伝えられないために、リスト部分の1行あたりの大きさ、特に高さが変化せず、文字の大きさを変更している場合は下端が欠けてしまいます。


どちらも同様に大きさが変わるようにするには setSize メソッドを使います。
例えば ComboBox のインスタンス” combo ”があるとすると、リストの1行あたりの幅×高さを 200 × 50 px にするスクリプトは

 combo.setSize( 200 , 50 );

です。

大きさを調整する setSize と外観・書式などを変更する setStyle は、いろいろなコンポーネントに共通するメソッドです。
機会がありましたら、他のコンポーネントの使用例も研究してみてください。
    • good
    • 0
この回答へのお礼

_root.cb1.addItem("項目1", 1);
_root.cb1.addItem("項目2", 2);
_root.cb1.setStyle("fontSize", 50);
_root.cb1.setSize( 300 , 60 );

でできました。
ありがとうございました!

お礼日時:2007/02/16 00:38

コンボボックスの上で右クリック→[自由変形]


でできます。
    • good
    • 0
この回答へのお礼

やってみましたがプルダウンで降りてくる部分は変わらないようです…。

お礼日時:2007/02/14 10:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【FLASH】コンボボックスがあるとIEでスクロールできない。バグ?

FLASH8(Win-XP)使用者です。
仕事でFLASHを作っています。
FLASHの中にコンボボックス(UI)が存在しているだけでブラウザ上でマウスホイールでのスクロールができなくなってしまい困っています。(スペースキーでのスクロールも不可)
余裕があれば試していただきたいのですが、

(1)FLASHに単純にコンボボックスを貼り付ける。
(2)SWFをHTMLに貼り付ける。
(3)IEで閲覧
(4)FLASH画像をクリック(アクティブ化)
→マウスホイールでブラウザをスクロールできない!

といった感じです。
ちなみにNetscape7.1なら問題ありません。

環境は、
IE6
FLASHプレイヤー8
パブリッシュは8で
です。
解決策をご存知の方、よろしくお願いいたします。

Aベストアンサー

バグではなく、Flash Player やコンポーネントの仕様と思われます。

スペースキーはさておきマウスホイールでのスクロールができなくなる原因は、ホイールが動いた時に指定の処理を呼び出せるイベントハンドラ onMouseWheel です。
ですから、UI コンポーネントを使わなくても、onMouseWheel を利用する作品では同様の現象が起こります。
自分では onMouseWheel を使っていないのにコンポーネントが存在するだけでスクロールできなくなるというのは、一部のコンポーネントはマウスホイールに対応するために内部で onMouseWheel を利用しているからです。


HTML ページ内で、マウスホイールの動作を監視する onMouseWheel を利用している Flash ムービーにフォーカスがある時にマウスホイールを動かしても、ページ全体はスクロールしません。
これは、Flash Player がマウスホイールの動作を監視し、本来の動作であるページのスクロール処理を onMouseWheel で定義された処理に置き換えるためです。

onMouseWheel というイベントハンドラが作られた意味を考えると、これは当然の仕様です。
Flash 内でマウスホイールの独自の動作を実現しようという目的なのに、Flash ムービーにフォーカスがあるにも関わらずページ全体がスクロールしてしまうようでは意味がありません。


Flash Player がキーボードやマウスの操作を監視して独自の処理を行うことができるのは、フォーカスが自分にある時だけです。
従って、他の部分をクリックしたなどで Flash ムービーからフォーカスが失われると、onMouseWheel を定義していてもページ全体がスクロールするようになります。

また、Flash ムービーにフォーカスがある場合でも、onMouseWheel を無効にするとマウスホイールでのページのスクロールが可能になります。


簡単なサンプルを作ってみると分かります。
例えば、ステージにダイナミックテキストのテキストフィールド” status_disp ”、ボタンシンボルのインスタンス” on_btn ”と” off_btn ”を配置し、次のようなスクリプトをメインのタイムラインに設定してみてください。

(↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)



 //テキストフィールドを複数行対応にする
 status_disp.multiline = true;


 /*マウスホイールが動いた時の処理*/
 wheel_obj = new Object();
 wheel_obj.onMouseWheel = function( delta )
 {
  //ホイールカウンタを出力
  status_disp.text += "\n" + delta;
 };


 /*ONボタンでマウスホイールの監視をスタート*/
 on_btn.onRelease = function()
 {
  status_disp.text = "ホイール監視スタート";

  Mouse.addListener( wheel_obj );
 };


 /*OFFボタンでマウスホイールの監視をやめる*/
 off_btn.onRelease = function()
 {
  status_disp.text = "ホイール監視ストップ";

  Mouse.removeListener( wheel_obj );
 };



「パブリッシュ」で HTML ファイルを作成し、この HTML に他の文章や画像などを追加してスクロールが必要な長さのページにし、ブラウザで確認してみてください。

ページを開いた直後は Flash Player にフォーカスがありませんので、スペースキー・マウスホイールのどちらでもページ全体をスクロールできます。
Flash ムービーをクリックしてフォーカスを与えても、最初は onMouseWheel を利用していないため、マウスホイールを動かすとページがスクロールします。

Flash ムービーにフォーカスを与えた状態でボタン” on_btn ”をクリックすると、onMouseWheel が有効になります。
この状態でマウスホイールを動かすと、onMouseWheel で定義された処理に従い、テキストフィールドにホイールのカウンタが出力されます。
この時はマウスホイールを動かしてもページがスクロールしません。

onMouseWheel が有効の時にボタン” off_btn ”をクリックすると、onMouseWheel の処理が呼び出されなくなります。
マウスホイールも本来の動作に戻りますから、Flash ムービーにフォーカスがあってもページがスクロールするようになります。

Flash ムービー以外のところをクリックした場合は、Flash Player はマウスホイールの動作を制御する権限を失います。
従って、onMouseWheel が有効か無効かに関係なく、マウスホイールでページをスクロールできるようになります。


Windows XP の IE 6.0 ・ Flash Player 9 と Netscape 7.1 ・ Flash Player 8 の両方で同じ HTML ファイルを見てみましたが、どちらも同様の動作でした。

------------------------------------------------------------------

一部の UI コンポーネントの内部では、スクロールバーなどをマウスホイールで操作できるようにするために onMouseWheel を利用しています。
(ちなみに、ComboBox コンポーネントのドロップダウンリストに付くスクロールバーは、マウスホイールで動かすことができます)
更に、UI コンポーネントを利用するとフォーカスを独自に管理する FocusManager というクラスが組み込まれたムービークリップが自動的に挿入され、Flash Player 本来のキー操作やタブ順・フォーカス処理などを上書きしてしまいます。
他にも、コンポーネントとともに裏方として働く様々なクラスがいくつかあるようです。

つまり、コンポーネントがあるとマウスホイールでページのスクロールができなくなる理由は、コンポーネントが onMouseWheel を利用しているためと思われます。
そして、onMouseWheel を利用している時にマウスホイールでページをスクロールできないのは Flash Player の仕様です。
フォーカスや一部のキー入力の反応が変わってしまうのは、おそらく FocusManager やその他の裏方クラスの仕業だと思います。

コンポーネントで利用している onMouseWheel を外すのは難しいですし、下手にいじるとコンポーネントの動作にも支障をきたしかねません。
また、JavaScript で強制的に Flash Player からフォーカスを外すとしても、JavaScript が無効になっている環境ではそもそも JavaScript が機能しません。
確実にマウスホイールによるページのスクロールを実現したいのなら、onMouseWheel を使わないコンボボックスを自作するしかないと思います。
コンポーネントの UIScrollBar を利用すれば同じことになってしまいますので、スクロールが必要なコンボボックスならスクロールバーも自作ということになります。


なお、FocusManager は”ライブラリに”UI コンポーネントのシンボルが1つでもある限り有効です。
ステージにコンポーネントのインスタンスがなくても、ライブラリにシンボルがあると組み込まれてしまいます。
コンポーネント内部で使われる数々のクラスも同様に、インスタンスがなくても自動的に定義されます。
(インスタンスがないのに、勝手に onMouseWheel が定義されてホイールでページをスクロールできなくなる理由も、ここにあるものと思われます)
コンポーネントが不要になった時はシンボルごと削除してください。

バグではなく、Flash Player やコンポーネントの仕様と思われます。

スペースキーはさておきマウスホイールでのスクロールができなくなる原因は、ホイールが動いた時に指定の処理を呼び出せるイベントハンドラ onMouseWheel です。
ですから、UI コンポーネントを使わなくても、onMouseWheel を利用する作品では同様の現象が起こります。
自分では onMouseWheel を使っていないのにコンポーネントが存在するだけでスクロールできなくなるというのは、一部のコンポーネントはマウスホイールに対応するために内...続きを読む

QFlash8 チェックボックスのラベルの文字で

Flash8をWindowsXP SP2で使用しております。

チェックボックスのラベルの文字の色を変更したのですが、どなたか教えて頂けなしでしょうか?

すごく基本的なことだと思うのですが、ヘルプやネットで検索しても全然見つからないので、知っている方ぜひ教えて下さい。

よろしくお願いします。

Aベストアンサー

ヘルプではココに書いてあります↓。

コンポーネントクラスのスタイルの設定
http://livedocs.adobe.com/flash/8_jp/main/00002996.html
(これはネット上のヘルプですが,ネット上でなくても普通のヘルプにあります。)

チェックボックスが存在するフレームに,
上記 URL のスクリプトをコピペして,
色を好きな色に変えれば良いだけです。



===以下余談================

場合によりますから一概には言えませんが,
個人的にチェックボックスなどの簡単なものは,
コンポーネントを使うのではなく,
ムービークリップで自作する方が色々融通が利いて良いと思います。

例えば,
ムービークリップ内の フレーム1 に,
チェックされていない状態の □ を用意して,
ムービークリップ内の フレーム2 には,
チェックされている状態の □ を用意して,
その ムービークリップ を クリック したときに,
そのムービークリップ内のタイムラインを フレーム2 に進ませるとともに,
ムービークリップ内の変数を何かに変えれば良いだけでしょう。


そのムービークリップに書くスクリプト例
---例--------------------------------
onClipEvent (load) {
this.stop();
this.hensuu = 0;
}
on (release) {
if (this._currentframe == 1) {
this.gotoAndStop(2);
this.hensuu = 2;
} else {
this.gotoAndStop(1);
this.hensuu = 1;
}
}
--------------------------------------

そしてそのムービークリップの横に,
適当な文字を書けば良いだけです。
これだと,
チェックボックスが複数あっても,
チェックボックスごとにラベルの文字が変えられたり,
そのレイアウトも自由自在になります。

構造その他の説明はココでは難しいですが,
もし,ムービークリップなど Flash の特性を理解していれば,
コンポーネント を使うより自作した方が簡単だということです。

ヘルプではココに書いてあります↓。

コンポーネントクラスのスタイルの設定
http://livedocs.adobe.com/flash/8_jp/main/00002996.html
(これはネット上のヘルプですが,ネット上でなくても普通のヘルプにあります。)

チェックボックスが存在するフレームに,
上記 URL のスクリプトをコピペして,
色を好きな色に変えれば良いだけです。



===以下余談================

場合によりますから一概には言えませんが,
個人的にチェックボックスなどの簡単なものは,
コンポ...続きを読む

QTextFieldで、文字の大きさや色を変えたいAC3・Flash

ActionScript3.0で、
TextFieldに表示される文字の大きさや色を変えたいです。
現在、下記のように記載して、文字を表示させていますが、
いくらネットや本で調べても、文字の大きさを変える方法が分かりませんでした。数時間以上調べました。

ぜひ教えてください!

var n:int=5;
var abc = new TextField();
stage.addChild(abc);

abc.border = false;
abc.x = 100;
abc.y = 60;
abc.width = 50;
abc.height = 50;

abc.htmlText =n;

たとえばこの場合5という数字が大きく表示されるようにしたいです。

よろしくお願いいたします!

Aベストアンサー

var n:int=5;
var abc = new TextField();
//ここからが追加
var format:TextFormat = new TextFormat();
format.size = 50;//フォントサイズを50に
abc.defaultTextFormat = format;
//ここまでが追加
stage.addChild(abc);
abc.border = false;
abc.x = 100
abc.y = 60;
abc.width = 50;
abc.height = 50;
abc.htmlText =n;


ヘルプのTextFormatを参照するとより詳しい説明があります。

QFLASHの文字を変えるには?

FLASH初心者です。
最近ソフトと参考書を買って勉強しています。

FLASHテンプレートのモンスタージャパン(http://www.templatemonster.co.jp/)にて、サンプルをダウンロードし、一生懸命flaファイルをいじっているのですが、文字が変えられません。

Flashイントロ付サイト サンプル(****://www.templatemonster.co.jp/sample/sample_flash_intro.zip)をダウンロードし、その中に入っているflaファイルをいじっているのですが、

Flashムービーが流れてくる際に文字がスライドインしてくるのですが(your companyとかkeyword1とかkeyword2とか)、その文字を自分の会社名に変えようとしてもできません。

どうすれば変えられるのでしょう?

たぶんおそらく(超初心者)の質問だと思いますが、
本当に困っていてどうすれば良いかわからない状況です。

なるべくわかりやすく御解説願えないでしょうか?
御回答よろしくお願いします。

FLASH初心者です。
最近ソフトと参考書を買って勉強しています。

FLASHテンプレートのモンスタージャパン(http://www.templatemonster.co.jp/)にて、サンプルをダウンロードし、一生懸命flaファイルをいじっているのですが、文字が変えられません。

Flashイントロ付サイト サンプル(****://www.templatemonster.co.jp/sample/sample_flash_intro.zip)をダウンロードし、その中に入っているflaファイルをいじっているのですが、

Flashムービーが流れてくる際に文字がスライドインしてくるのですが(...続きを読む

Aベストアンサー

まず
「COMPANY NAME」は
Layer 4のMCの Layer 7のMCの Layer 1のMCの Layer 1にあります。
(MCとはムービークリップシンボルのことです。)
タイムラインを前後させて「COMPANY NAME」を探しながらダブルクリックして潜っていくと見つかると思います。
(もしくは「右クリック」→「同じ位置で編集」していくと見つかると思います。)
1箇所変えれば,全ての「COMPANY NAME」が変わるようにできています。
シンボル名は「Symbol9」です。

「KEYWORD1」は
Layer 5のMCの Layer 3のMCの Layer 4のMCの Layer 1のMCの Layer 1にあります。
タイムラインを前後させて探しながらダブルクリックしていくとたどり着けます。
シンボル名は「Symbol39」です。

「KEYWORD1」は
Layer 5のMCの Layer 3のMCの Layer 5のMCの Layer 1のMCの Layer 1にあります。
シンボル名は「Symbol37」です。

「COMPANY SLOGAN」は
Layer 6のMCの Layer 1のMCの Layer 1のMCの Layer 1にあります。
シンボル名は「Symbol43」です。

作りかえる部分が重ならないようにレイヤーが下から配置されています。
Flashを持っていないとならないことと,少々慣れていないと難しいかもしれませんが,作りかえやすくできています。
けっこうスゴイと思いました。私が自分で作ったらもっとグシャグシャになってしまいます ( ^○^;)。

また,
ライブラリを表示させて,
「Symbol9」「Symbol39」「Symbol37」「Symbol43」を直接編集しても良いです。
白バックに白字なので見えにくいですが…。
本当はライブラリでシンボルを編集して作りかえるものかもしれません。

まず
「COMPANY NAME」は
Layer 4のMCの Layer 7のMCの Layer 1のMCの Layer 1にあります。
(MCとはムービークリップシンボルのことです。)
タイムラインを前後させて「COMPANY NAME」を探しながらダブルクリックして潜っていくと見つかると思います。
(もしくは「右クリック」→「同じ位置で編集」していくと見つかると思います。)
1箇所変えれば,全ての「COMPANY NAME」が変わるようにできています。
シンボル名は「Symbol9」です。

「KEYWORD1」は
Layer 5のMCの Layer 3のMCの Layer 4の...続きを読む

Qコンボボックスからテキス入力欄へ入力

コンボボックスのlabelsで太郎、次郎、三郎と3つの項目を用意しました。
このいずれか1つの項目を選択したらあらかじめ用意してある三つのテキスト入力欄(身長、体重、足の大きさ)へ数値が入力されるようにしたいんですが、どのようにすればよいのでしょうか?
dataの値の設定方法、コンボボックスへのASの記述方法などを教えて下さい。
よろしくお願いします<(_ _)>

Aベストアンサー

#1です。


ComboBox コンポーネントには label と data というパラメータがあります。
data は表示されませんが、選択された項目をもとに何かをするための情報を設定しておくことで、幅広い使い方ができるようになっています。
ただし、data には1項目につき1つの情報しか設定できません。

今回の場合は1人につき身長・体重・足の大きさという3つの情報があるので、data パラメータでは対応しきれません。
そこで、ComboBox コンポーネントが持っている data パラメータではなく、別の配列変数を用意してそれぞれの人物の情報を管理することにします。
項目が何か選択された時には、選択された項目に該当する配列変数を見て情報を取得し、これをテキストフィールドに表示すればいいわけです。

-----------------------------------------------------------

配列変数は名前が同じで管理番号だけが違う、複数の変数が集まったものです。
ActionScript の配列変数は、各変数内に更に仕切りを作って、効率よく情報を管理できるようになっています。
例えば、

 size_data = new Array();
 size_data =
 [
  { label : "太郎" , tall : 155 , weight : 50 , foot : 25 } ,
  { label : "次郎" , tall : 180 , weight : 75 , foot : 27 } ,
  { label : "三郎" , tall : 165 , weight : 60 , foot : 26 }
 ];

という配列変数を作ったとしますと、1番上(配列変数は0から始まるので、0番目)の変数には

 size_data[ 0 ].label → "太郎"
 size_data[ 0 ].tall  → 155
 size_data[ 0 ].weight → 50
 size_data[ 0 ].foot  → 25

と、4つの情報が格納されます。


ところで、ComboBox のパラメータには label と data というパラメータがあると書きましたが。
例えば、「パラメータ」タブで、labels に名前、data に身長(上記の配列で” tall ”と書かれている部分の情報)を設定したとすると、ComboBox の内部では

 { label : "太郎" , data : 155 } ,
 { label : "次郎" , data : 180 } ,
 { label : "三郎" , data : 165 }

このような形で管理されます。
このうちの label に書かれている部分がリストに表示され、必要に応じて label と data を別々に取り出せるようになっています。

ComboBox に用意されているこの配列変数には仕切りが2つしかなく、そのうちの1つは表示する項目名用として塞がっていますから、身長・体重・足の大きさのいずれか1つしか管理できません。
今回はラベルと合わせて4つの情報を管理したいので、ComboBox で管理している配列変数を、自分で用意した配列変数に取り替えることにします。
難しい話のようですが、そのための機能が ComboBox に組み込まれていて簡単です。
自分で用意した配列変数に取り替えても、ComboBox が持っている他のプロパティやメソッドを利用して、配列変数の中のどれが選択されているか、その内容は何かなどを調べることもできます。

-----------------------------------------------------------

MX 2004 のコンポーネントには、ムービークリップやボタンと同様にイベントという考え方があり、コンポーネントに何かが起きた時にスクリプトを実行させることができます。
イベントの処理には、リスナーオブジェクトというオブジェクトを登録するスタイルと、普通のムービークリップやボタンの制御でおなじみの on アクションを使う方法があります。
ここでは on アクションを使う方法をご紹介します。

コンポーネントは、解説書や解説サイトではあまり見かけない、独特のイベントを持っています。
ComboBox にも、change という、ムービークリップにはない変わったイベントがあります。
今回は、このchange イベントを使います。


ステージに ComboBox のインスタンス” combo ”と、ダイナミックテキストにしたテキストフィールド” tall ”” weight ”” foot ”があるとします。
理由は後で説明しますが、テキストフィールドのインスタンス名は、配列変数で使う仕切りの名前とおなじものを付けてください。

ComboBox で何か項目が選択された時に、該当する情報をテキストフィールドに表示するスクリプトは、大体、次のようになります。
このスクリプトは ComboBox のインスタンス” combo ”に設定してください。

(↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)


 onClipEvent(load)
 {
  //表示データを管理する配列変数
  size_data = new Array();
  size_data =
  [
   { label : "太郎" , tall : 155 , weight : 50 , foot : 25 } ,
   { label : "次郎" , tall : 180 , weight : 75 , foot : 27 } ,
   { label : "三郎" , tall : 165 , weight : 60 , foot : 26 }
  ];

  //コンボボックスにデータをセット
  this.dataProvider = size_data;

  //選択されている項目を”なし”に設定
  this.selectedIndex = undefined;
 }


 on(change)
 {
  //情報を取得し、テキストフィールドに出力
  for( name in this.selectedItem )
  {
   _root[ name ].text = this.selectedItem[ name ];
  }
 }


コンポーネントとは、編集可能なパラメータを持っている”ムービークリップ”です。
ですから、ムービークリップで利用できるイベントは原則的には全て利用できます。
(ただし、使うとコンポーネントの動作に支障をきたすイベントもあります。press 等のボタンイベントや mouseDown ・ keyDown 等の入力デバイスに関係するイベントは使わない方がいいでしょう)
load はムービークリップがステージに登場した、その時1度だけ発生します。
この特徴を利用して、様々な初期設定を行います。

まず、ComboBox で管理する配列変数を作ります。
この配列変数には、label ・ tall ・ weight ・ foot という4つの仕切りを作っておきます。
label という仕切りで管理されるデータは、ComboBox に表示される項目名になります。これ以外の名前は好きな名前を付けて構いませんが、都合上、テキストフィールドのインスタンス名と同じ名前にしてください。

この配列変数( size_data )を、ComboBox で管理するデータとして登録します。
その処理をしているのが、

 this.dataProvider = size_data;

の部分です。
dataProvider に登録しておくと、それだけで配列変数の中の label と書かれた部分をリスト内に項目名として表示してくれるだけでなく、ComboBox の持つ機能を利用して size_data の内容を取り出せるようになります。
dataProvider を利用する場合は、「パラメータ」タブにある labels のパラメータは入力しなくても構いません。


今回は ComboBox が持っている change イベントを使います。
change はその名の通り、正確には、今選ばれているものと違う項目が選ばれた時に発生します。
ComboBox では、今選ばれている項目が selectedIndex というプロパティに記録されています。この値が変わった時に、change というイベントを発生させて知らせてくれるのです。

ところが、change イベントには1つだけ盲点があります。
selectedIndex プロパティの初期値は0で、0番目の項目、今回の例で言うと”太郎”が初めから選ばれているものと見なされています。
この状態でリストから”太郎”を選んでも、selectedIndex の値が0で変わらないため change イベントが発生せず、従って on(change) 内に書かれている、情報を取得して表示するスクリプトも実行されません。
画面に太郎の情報を最初から表示しておくなら話は別ですが、最初は何も表示しないのでしたら、これは大問題です。

そこで、最初は何も選ばれていないとの意味で、selectedIndex プロパティには予め別の値( undefined )を入れておきます。
すると、最初の1回目でリストから”太郎”が選ばれたとしても、selectedIndex プロパティには0が入って値が変わり、change イベントが発生してテキストフィールドへの出力も行われるようになります。
このあたりの事情は、

 this.selectedIndex = undefined;

の部分をコメントにしてパブリッシュし、最初に”太郎”を選んでみると分かりやすいかと思います。

******************************************

change イベントが発生した、つまり別の項目が選ばれた時に、該当する情報を取得してテキストフィールドに表示します。

ComboBox の持っている selectedItem プロパティには、選択された項目そのものを指す情報(参照といいます)が格納されています。
例えば”次郎”が選ばれているのなら、selectedItem は size_data[ 1 ] と同じ意味で使えます。


配列変数 size_data の各要素には、4つの仕切りが作られていました。
このうちの label はリストに表示する項目名のことなのでどうでもいいですが、残る3つをテキストフィールドに出力します。
このカラクリのタネが、for in という制御文と、配列変数で使っている仕切りの名前と同じテキストフィールドのインスタンス名です。

まず、テキストフィールドに表示する方法ですが。
ダイナミックテキストかテキスト入力したテキストフィールドには、表示内容を管理する text というプロパティがあります。
これを書き換えると、表示内容を直接更新することができます。

 インスタンス名.text = "・・・";

というように使います。

for in は複数の要素を持つものをある規則に従って次々と参照する、ちょっと変わったループです。
詳しくは省略しますが、例えば

 for( name in size_data[ 1 ] )

とすると、name には label → tall → weight → foot 、要するに size_data[ 1 ] にある仕切りの名前が次々に代入されます。
これを利用すると、size_data[ 1 ] にある全ての情報をループで取り出すことができます。

今回は size_data 内の特定の要素ではなくて、ComboBox で選ばれている項目に該当する要素の情報を取り出したいのです。
選ばれている項目は selectedItem というプロパティに入っていますから、これを for in でまとめて取り出します。
せっかくですから、ループに用いられる name の値も活用してテキストフィールドに出力する方が効率的です。
テキストフィールドの名前を配列変数の仕切りと同じにする理由は、ここにあります。
実際には label の値も取り出されていますが、label という名前のテキストフィールドは存在しないため、この値は無視されます。


ポイントは、複数の情報を ComboBox と結びつける方法と、ComboBoxから様々な情報を引き出す処理です。
ComboBox から情報を取得する方法は、Flash のテクニカルノートにサンプルがあります。
ここでは説明できなかったリスナーオブジェクトを使った例で書き方は少々違いますが、同じく selectedItem で選択されている項目を見て、その中の label に書かれている情報を取り出しています。
FLA ファイルも入手できますので、よろしければご参照ください。

 ・ComboBox コンポーネントを使用したサンプル
  http://www.macromedia.com/jp/support/flash/ts/documents/fl0348.html


さしあたって、テキストフィールドはステージ( _root )に、ComboBox で使う配列変数は combo 自身に用意した場合のスクリプトをご紹介しました。
テキストフィールドや配列変数を置く階層が異なる場合は、ターゲットパスの誤りにご注意ください。

長くなってすみませんでした。

#1です。


ComboBox コンポーネントには label と data というパラメータがあります。
data は表示されませんが、選択された項目をもとに何かをするための情報を設定しておくことで、幅広い使い方ができるようになっています。
ただし、data には1項目につき1つの情報しか設定できません。

今回の場合は1人につき身長・体重・足の大きさという3つの情報があるので、data パラメータでは対応しきれません。
そこで、ComboBox コンポーネントが持っている data パラメータではなく、別の配列変数を...続きを読む


おすすめ情報