はじめまして^^ ちょっと困ってます^^;
わたしの状況から説明しますと…
それぞれに名前をつけたボタンmcがあり、それをタイムライン上でスクリプト管理しようと思ってますが、その際に…
//ボタンの名前を入れた配列
bs=["b1","b2","b3","b4","b5"];
for( dammy in bs ){
trace(bs[dammy]._alpha);
}
この文で、トレースした場合にアルファ値が返ってきません;;
bs[dammy]でのトレースはちゃんとb1とか入っているのですが…
わかる方いらっしゃいましたら教えて下さい(゜´Д`゜)
No.1ベストアンサー
- 回答日時:
インスタンス名の配列変数の中身が、参照ではなくただの文字列になっているためです。
各ムービークリップがステージにあり、スクリプトもメインのタイムラインのフレームに書くものとします。
bs の中身を、次のように変更してみてください。
bs = [ b1 , b2 , b3 , b4 , b5 ];
for in は、オブジェクトに含まれる要素を全て(一部は列挙できないものもありますが)取り出す制御文です。
for( dammy in bs ){
では、確かに配列変数 bs に含まれる5つの要素全てを列挙できてはいるのですが、ご質問文のスクリプトですと、配列変数 bs の中身は文字列です。
つまり、for in により取り出される値も文字列ということになります。
文字列から実際のインスタンスを指すためには、これを参照というものに変換しなければなりません。
ご質問文のスクリプトのように配列変数に文字列が入っているのなら、for in の中では
trace( this[ bs[ dammy ] ]._alpha );
というように、for in で取り出した文字列を参照に変換しないと、インスタンスの持っているプロパティを見ることはできません。
文字列を参照に変換するには eval 関数か配列演算子 [ ] を使いますが、eval は少々古い方法で、最近は [ ] を使う方法が推奨されています。
********************
値を " " でくくると文字列になりますが、配列変数に値を入れる際に実在するインスタンス名を " " でくくらずに入れると、配列変数にはインスタンスの参照が入ります。
参照を入れた状態で、for in の中で
trace( bs[ dammy ] );
としてみてください。
b1 や b2 といった文字列ではなく、_level0.b○○という、インスタンスのターゲットパスが表示されるはずです。
配列変数に参照を入れた場合は for in で取り出したものを変換することなく、直接プロパティを参照することができます。
---------------------------------------------------------------
ちなみに、for in では後ろのものから先に取り出されるという特徴があります。
例えば配列変数に b1 ~ b5 の順に格納されているのなら、最初に取り出されるのは末尾の b5 です。
この順序が影響するような作品ではご注意ください。
配列変数やボタンの名前に通し番号を使う場合は、個数は分かっているのですから、for in ではなく for のループでも可能です。
for in は、いくつあるか分からないものや名前に規則性のないものを列挙したい時に使うと便利です。
DPE様
早速の回答有難う御座います。
なるほどっ!! っと思わず叫んでしまいました^^; とても判りやすく、丁寧、かつ補足まで教えて頂き、本当に感謝です。
有難う御座いました。^^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アンテナ・ケーブル 家屋テレビ用アンテナ配線 4 2023/04/27 15:00
- CS・BS NHKBS払えとNHKのプラカードをぶら下げた人が来ました。 NHKはずっと払っています。NHKの番 9 2022/03/25 16:57
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- CS・BS WOWOWの無料トライアルに加入しようと思うのですが、契約形態が二種類あると知りました。 ・放送経由 2 2023/08/10 23:03
- テレビ BSが映らない 3 2022/11/03 23:03
- テレビ TVに分配器を追加したら、BS放送が受信できなくなりました。 2 2022/04/19 23:35
- テレビ テレビアンテナにおいてBSの分配が出来ない 5 2022/08/02 10:34
- CS・BS TVのBSの質問です。 老人ホームで夜勤をしています。 朝までBSチャンネルをつけてる入居者が、時代 3 2023/05/26 18:42
- テレビ テレビを新しく買い替えたのですが裏の配線で古いテレビからデジタルの配線とBSの配線を取り外したのです 4 2022/09/25 19:19
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
おもしろフラッシュのサイト名...
-
この曲はなんでしょう?
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
Flashコンテンツを使ったWebサイト
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
VBAのコンボボックスの年月表示...
-
uwscでExcelに自動記入
-
パソコンのリカバリーについて
-
iPhoneです。 Adobeフラッシュ...
-
ロック画面に天気を表示したい
-
サイト構築の方法を教えてください
-
URLの/以降だけを入力したいです。
-
Adobe(マクロメディア)のFLAS...
-
adobe flash playerは無料です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET の配列の要素数
-
配列の要素番号を取得するには?
-
VBでボタンを押すと画像をラン...
-
重複しない乱数整数を発生させる。
-
変な質問ですみません、n番目の...
-
DataGridでCTRLキーを押さずに...
-
複数の変数宣言を、for文で一気...
-
VB6 複数行のテキストをリスト...
-
ランダムに数字を並び変える方法は
-
Vba 配列の中の特定文字列の位...
-
IDの自動採番について
-
[Objective-c]多次元配列のアク...
-
Flashでお絵描きアプリを作って...
-
ランダムに6つの数字を選びその...
-
【ActionScript】配列の昇順降...
-
画像をランダムに表示するには
-
【数字ランダム】計算問題ラン...
-
FlashソフトSuzukaで、トランプ...
-
ランダム表示を重複させないよ...
-
Flashでランダムクイズゲームを...
おすすめ情報