トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     for文の基本
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ebi
Åê¹ÆNo.14168
投稿日時: 2005-1-16 19:03
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
for文の基本
トンチンカンな事を言うかもしれませんが、あしからず。

for文ってのは繰り返し処理(ver4で言うとこのLoop)と捉えて良いのでしょうか?

あと、存在する要素の数だけ繰り返すfor..inですが、
その時点(for..inが実行されたフレーム)に存在している
要素にのみ適応されるのでしょうか。_rootから特定のmcにfor..in処理をしたら、そのmcのカレントフレームに適応されるんでしょうか。それともフレーム関係なく全要素に適応されるのですか?

また変数、ボタン、mcのインスタンス名を取得(?)するんですか?

あと1つ「全ての変数を調べる時に使う」と本に書いてあったのですが、変数を調べる時に使うならボタンやmcは最初から含めないでもらった方が楽なのにこれらも含めてるのには何か別の用途があるわけでしょうか?

参考
『おしえてMX04AS』160ページ
空野大二郎
Åê¹ÆNo.14171
投稿日時: 2005-1-16 19:36
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: for文の基本
 まいど。

 for分は、1フレームで実行する繰り返し処理です。
引用:
ebiebiさんは書きました:
for文ってのは繰り返し処理(ver4で言うとこのLoop)と捉えて良いのでしょうか?


 for..inで抜き出すプロパティは、カレントフレーム限定で適応されます。
 お手元にFlashがおありでしたら、お試し下さい。
//記述されたフレームに存在するMovieClip名を書き出す
for (name in this) {
	if (typeof (this[name]) == "movieclip") {
		trace (name);
	}
}

引用:
ebiebiさんは書きました:
あと、存在する要素の数だけ繰り返すfor..inですが、
その時点(for..inが実行されたフレーム)に存在している
要素にのみ適応されるのでしょうか。_rootから特定のmcにfor..in処理をしたら、そのmcのカレントフレームに適応されるんでしょうか。それともフレーム関係なく全要素に適応されるのですか?


 前述のスクリプト、typeof()の条件文を変更すると、
オブジェクトの型ごとに存在する名前を調べられます。
 条件文がないと、オブジェクトすべてを出力します。
引用:
ebiebiさんは書きました:
また変数、ボタン、mcのインスタンス名を取得(?)するんですか?


 buttonだけ、MovieClipだけを調べたい場合が想定されます。
引用:
ebiebiさんは書きました:
あと1つ「全ての変数を調べる時に使う」と本に書いてあったのですが、変数を調べる時に使うならボタンやmcは最初から含めないでもらった方が楽なのにこれらも含めてるのには何か別の用途があるわけでしょうか?


----------------
空野 大二郎 アニメーター作家
桜の道

森 巧尚
Åê¹ÆNo.14172
投稿日時: 2005-1-16 19:38
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: for文の基本
for文は繰り返し処理と考えていいです。
for文 の場合はカウントしながら繰り返し処理を行いますし、
for..in文の場合は、オブジェクトに含まれるプロパティやエレメントに対して反復処理を行います。

読み間違えやすかったのかもしれませんが、正確には「全ての変数を調べる時に使う」ではなく「全ての変数を調べるときなどに使うことができる」ですね。
また、これも書いてありますが、for..in文は、変数のみでなく、ボタン名やインスタンス名、関数名などの「要素」において反復処理が行われます。

「変数だけ調べたい」という気持ちもあるかと思いますが、そもそも変数もプロパティも区別がつきにくいですし、配列の変数はオブジェクトとして生成したりもしますのでこれは変数と考えたいのかどうか。もともと全ての要素を調べられるfor..in文を利用して、それをtypeof()で調べて好きなタイプの変数を調べることができるよということです。逆にムービークリップだけ調べたい場合にも使えますしね。

また、for..in文は、その文があるフレームの、そのムービークリップの階層の中での要素のみを調べますので、それ以外の時間や場所での要素は調べません。
「今、ここにある要素」を調べるということですね。

ただ実際そんなに「変数だけ調べたい」という状況は多くはないように思います。制作中にテスト的に調べるという場合だったらあるとは思いますが、「そこにある変数に何でもかんでも何かを行う」というプログラムよりは、しっかりと「この変数名を決めて何かを行う」というプログラムの方が間違いが起こりにくくていいと思います。


----------------
森 巧尚
http://www.ymori.com

ebi
Åê¹ÆNo.14177
投稿日時: 2005-1-16 20:14
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: for文の基本
空野さん、森さん、ご返信ありがとうございます。
…って、森さんって『おしえてMX04AS』の著者さんですねー?
やぁ、かんげきだ。お世話になってまーす!
(胸の前でクロスにした腕を勢いよくハの字に下げる)


さて、本題ですが、なんとなく分かってきました。
まずforについてはどうやらver4のloopと同じと考えて良いようですね。

 僕のバックグラウンドはHyperTalk(!)とver4なので
 「あれと同じなのかなー」って感じで捉えちゃいます。
 それも善し悪しですが。

カレントフレームに存在してるものだけに適応って
事なんですね。他のフレーム、mc内の要素を調べたい時は
どうすれば良いのでしょうか? そこへ行くべし!ですか?

変数ウンヌンに関しては単なる読み間違いでした。

どんな要素なのかを調べるのはやっぱif使うんですね。
この判断もfor..inの中に最初から含まれてるといいのにと思うのはモノグサですか。調べ方はタイプじゃなくても良いんですよね? 例えば“名前の頭3文字が○○○のものだけ”とか。(そんな状況ないと思いますが)

for..in文を使う状況が少ないというのもなんとなく納得です。
どわーっとmcを複製する必要があっても、
その度ちゃんと連番付きとかの名前つけてforでやった方が
間違い少ないって事ですね。
森 巧尚
Åê¹ÆNo.14182
投稿日時: 2005-1-16 20:38
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: for文の基本
引用:
(胸の前でクロスにした腕を勢いよくハの字に下げる)

アンガールズ???
引用:
この判断もfor..inの中に最初から含まれてるといいのにと思うのはモノグサですか。調べ方はタイプじゃなくても良いんですよね? 例えば“名前の頭3文字が○○○のものだけ”とか。(そんな状況ないと思いますが)

最初から固定で含まれていないからこそ、そういう調べ方もできるわけです。
引用:
for..in文を使う状況が少ないというのもなんとなく納得です。
どわーっとmcを複製する必要があっても、
その度ちゃんと連番付きとかの名前つけてforでやった方が
間違い少ないって事ですね。

そうですね。何か命令するときは、ちゃんと責任をもって指示しないと、思いもかけないバグが起ったりします。


----------------
森 巧尚
http://www.ymori.com

野中文雄
Åê¹ÆNo.14186
投稿日時: 2005-1-16 21:17
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: for文の基本
for..inステートメントは、指定したターゲット(オブジェクト)上に作成・設定したすべてのユーザー定義プロパティを取出します。「ユーザー定義プロパティ」には、変数のほか、function(関数)、MovieClip/Button/TextFieldインスタンスなどが含まれます。
// タイムライン: _root
// 第1フレームアクション
// メインタイムラインに変数・関数を設定
var _rootVariable = "_root";
function rootFunction() {
}
// MovieClipを作成
this.createEmptyMovieClip("my_mc", 0);
my_mc.moveClipVariable = "my_mc";  // my_mcのプロパティ(列挙されない)
// TextFieldを作成
this.createTextField("my_txt", 1, 0, 0, 100, 20);
my_txt.text = "my_txt";  // my_txtのプロパティ(列挙されない)
// メインタイムライン上の全プロパティを列挙
for (var prop in this) {
	trace([prop, this[prop], typeof (this[prop])]);
}

引用:
[出力]パネルの表示:
_rootVariable,_root,string
rootFunction,[type Function],function
$version,MAC 7,0,19,0,string
my_txt,_level0.my_txt,object
my_mc,_level0.my_mc,movieclip

用途としては、(1)特定オブジェクトのプロパティを本当にすべて調べたい場合か、(2)逆に調べたいものだけを(通常はObject)オブジェクトにプロパティとして設定し、制御するケースのふたつが考えられます。

(2)の例としては、つぎのようなスクリプトがあります(書籍の補足なので少しわかりにくいかもしれません)。
キー操作でムービーの表示状態をコントロールする


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

ebi
Åê¹ÆNo.14192
投稿日時: 2005-1-16 22:12
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: for文の基本
野中さん、どうも。

やってみました。
関数もなんですね。

本話題と関係ないトコの質問もしたいですが、
ここではやめておきます。

ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops