メイン コーダーズルーム【スクリプト系】 クラス内の変数について | 投稿するにはまず登録を |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
takiguchi | Åê¹ÆNo.3548 投稿日時: 2004-2-5 20:09 |
半人前 居住地: 東京 投稿: 38
使用環境:
|
Re: クラス内の変数について (2004/2/9 修正)
■コンフリクトについて 分かりやすい説明で感激しています。 コンフリクトに関してはそれほどナーバスにならなくても 良いような気がしてきました。 ■スコープチェーンについて thisのスコープに戸惑うことがありますが、なんとなく分かってきました。 クラスのメソッド内でthisを使用すると、そのクラスのインスタンスを参照する!? という考えで正しいでしょうか? メソッド(関数)内の変数(ローカル変数)とプロパティ(タイムライン変数)を区別するために、 メソッド内でプロパティを参照する時は、thisを付ける癖を付けておいた方が良い との結論に達しましたけど…間違っていたら訂正してください。 ■ActionScript 2.0の厳密な型指定について ところで「var」って何者?ってことで以下のような実験です。 例1) ------------------------------------------------------------------------------------------------------------------------ //FLAファイル //メインタイムライン:フレーム1 //インライン初期化なし型宣言 var a:String; trace("a type:"+typeof(a)); //出力 a type:undefined a=this; //String型で宣言し、MovieClip型で初期化 trace("a type:"+typeof(a)); //出力 a type:movieclip //コードヒントの確認…aはMovieClip型なのにString型のコードヒントが表示される a. ------------------------------------------------------------------------------------------------------------------------ 変なことが起こってしまいました。 指定した型とは異なる型で初期化が出来てしまいました。 インライン初期化しないとダメなのでしょうか? 'var'を使った宣言でインライン初期化しない場合は、 宣言された変数の型は'undefined'となり、型がまだ定まっていないようです。 それから、インライン初期化についてちょっと質問が… 紹介していただいたFN0310006「クラスの作成と使用」で 「インスタンスごとにプロパティを設定したい場合には、 その値をコンストラクタ関数内で設定する必要があります」 との記載がありますが、AS1.0の経験がないために'prototype'プロパティと staticキーワードの区別がなかなかつきません。 コンストラクタ関数内で初期化しないプロパティはstatic的なものになるような 感じがしちゃうんですけど…でもちょっと違う気も… 質問ばかりで恐縮ですが、宜しくお願い致します。 ■オーバーロードについて --------------------------------------------------------------------- //MovieClip.as内 function gotoAndStop(frame:Object):Void; // frame can be String or Number --------------------------------------------------------------------- Objectクラスは、すべてのクラスに継承されてるのであれば、 「引数の型にObjectを指定する」=「引数の型を指定しない(なんでもあり)」 という意味に考えても差し支えないのでしょうか?…とちょっと手抜き思考 function gotoAndStop(frame):Void; // frame can be String or Number 引数の型をある範囲で限定できないのが、ちょっと不便な気がしますけど、 オーバーロードが実装されていないだけに仕方ないです… |
フラット表示 | 前のトピック | 次のトピック |
投稿するにはまず登録を | |