こんにちは。
素朴な疑問なんですが、「this」ってどんな場面で使えばいいんでしょうか?
昔はムービークリップや関数も「this.test_mc.testC_mc...」「this.test()」
とthisを付けて書いていたのですが、私は今はあまり使いません。
this[id+"_mc"]のように配列アクセス演算子を使う場合には使わなければならないですが。
なんでもかんでもthisをつけていたら見栄えが悪い感じがします。
皆さんはどのようなときにthisを使っていますか?
よろしくお願いします。できるだけたくさんの方に答えて頂けると嬉しいです。
No.3ベストアンサー
- 回答日時:
> 「this」ってどんな場面で使えばいいんでしょうか?
this が示すものが ActionScript3.0 と 2.0以下とでは違うと聞きますから,
それぞれの使い方も変わるとは思いますが,
私は AS3 のことはよくわかりませんので 2.0以下 の例ということで。
◎ this を使用しなければならない例
新規ドキュメントを作成して,
フレーム1 に次のスクリプトをコピペし,
「制御」→「ムービープレビュー」。
--------------------------------------
for (i=0; i<=4; i++) {
this.createTextField("_txt"+i, i, 10, 10+i*30, 0, 0);
this["_txt"+i].text = "ココをクリック!";
this["_txt"+i].autoSize = true;
this["_txt"+i].onSetFocus = function() {
//↓★ this を使用しなければならない
this.text = "クリック完了";
};
}
--------------------------------------
//↓★ this を使用しなければならない
this.text = "クリック完了";
の部分は,
this["_txt"+i].text = "クリック完了";
でも,
_root["_txt"+i].text = "クリック完了";
でも
_parent["_txt"+i].text = "クリック完了";
でも無事に動作しません。
this であるべきです。
現象は少し変わりますが仮に次のようにしても結局同じです。
やはり this であるべきです。
--------------------------------------
for (i=0; i<=4; i++) {
var TF = _root.createTextField("_txt"+i, i, 10, 10+i*30, 0, 0);
TF.text = "ココをクリック!";
TF.autoSize = true;
TF.onSetFocus = function() {
//↓★ this を使用しなければならない
this.text = "クリック完了";
};
}
--------------------------------------
一方,逆の場合もあります。
つまり this が使えない場合もあります。
◎ this を使用できない例
message=abcdefg
というデータをテキストエディタで用意して,
任意のフォルダに,
「data.txt」 というファイル名で保存します。
そのフォルダ内にFlashの新規ドキュメントを保存し,
フレーム1 に次のスクリプトをコピペし,
「制御」→「ムービープレビュー」。
--------------------------------------
// _root に インスタンス名_txt のテキストフィールドを作成
_root.createTextField("_txt", 0, 20, 30, 0, 0);
// テキストフィールドを自動サイズにする
_txt.autoSize = true;
// ---
// LV という LoadVarsインスタンスを作成
var LV = new LoadVars();
// ロード完了時の動作
LV.onLoad = function() {
// ↓★this の使用は不可
_txt.text = LV.message;
};
LV.load("data.txt");
--------------------------------------
// ↓★this の使用は不可
_txt.text = LV.message;
の部分は,
this._txt.text = LV.message;
でも
this._parent._txt.text = LV.message;
でも無事に動作しません。
this は使えません。
一方 _root は使えますから,
_root._txt.text = LV.message;
は大丈夫です。
上の this でなければならない例と,
下の this は使用できない例の2例を書きました。
もしかしたら,なぜそうなのかよくわからないかもしれません。
しかし良く考えたり,調べると,
なぜ上のような現象が起こるのかがわかります。
簡単に触りだけの理由を書くと,
上の例は 「i が変動するから」 です。
下の例は 「LoadVarsインスタンス はオブジェクトではあってもムービークリップではないから」 です。
this を使ったときの格好というよりも,
使うときは this が何を指すのかを常に意識して使った方が良いです。
this を使わなければならない場合は当然使いますし,
どっちでも良い場合は理論上どちらが相応しいかで決めます。
どちらが相応しいかは周りのスクリプトによって決まる場合も多々あります。
No.2
- 回答日時:
他ムービークリップにfunctionを渡す場合、
thisを付けるかつけないかでfunction内での変数の参照における基準パスが変わってて
しばらく気づかずに四苦八苦していた記憶があります。
一応サンプル。
this.createEmptyMovieClip("mc",0);
mc.a="値1";
var a="値2";
mc.f=function(){trace([this.a,a]);};//←ここのthisの有無
mc.f();
(出力)
値1,値2
確かにいろいろなところから同じ関数を参照するときは困りますね。
他の言語にはない概念なので難しいですよね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 英語 予告の"that"と"this"の違い等について 7 2022/08/25 11:36
- 中学校 中学 英語 3 2023/04/02 09:50
- 英語 to date 2 2023/05/23 23:22
- 英語 all of this と get it all doneのallの役割がわかりません。 ① all 3 2023/08/06 17:01
- 英語 提示文のthisの感覚について 5 2022/11/19 15:26
- 英語 英語の仮定法について If he were in this age, that man would 1 2022/12/12 23:52
- 英語 Statistically significant differences (p < 0.05), 5 2022/05/03 01:09
- 英語 is written とwas written この本は英語で書かれています。は、 This boo 3 2022/12/21 21:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ランダムに4桁の数字を表示する...
-
photoshopで書いた四角の枠の中...
-
YOASOBI
-
【Photoshop】レイヤー効果の境...
-
ドラッグ&ドロップからの取得
-
VS2008 C# ボタンのテキストを...
-
テキストボックスの中身をリセ...
-
PythonのTkinterイベントについて
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
五芒星は、悪魔崇拝とどういう...
-
変数に256文字以上のテキストを...
-
キープレスとボタンクリックの...
-
パーセントで配置したフラッシ...
-
×ボタンを無効化したいのですが...
-
【VB.NET】別Formのボタンが押...
-
VBAで改行の入ったデータの正規...
-
テキストボックスにセルの値を...
-
斜めに移動
-
ダブルクリックと2回クリックの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
flashのおみくじのような(4桁...
-
スクロールバーの自作の仕方
-
ランダムに4桁の数字を表示する...
-
ActionScriptで1ヶ月前の日付や...
-
複数の入力テキストに同じ入力...
-
ダイナミックテキストの表示値...
-
Flash MX2004で計算結果が「NaN...
-
外部テキストをsplitで分割する時
-
AS3 時計のコロンの点滅を0.5s...
-
FlashとPHPを使ったチャット
-
今日の残り時間を表示する時計...
-
外部テキストファイルより座標...
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
webページ上、TABフォーカス出...
-
プログラミング、アーキテクチ...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
YOASOBI
-
RPG(AS400)の本、サイトってあ...
おすすめ情報