- ベストアンサー
Flash ActionScript クラスの自己参照について教えてください
- Flash ActionScriptにおけるクラスの自己参照について教えてください。
- Moverクラスのコンストラクタ内でのthis.targetMC.objectRef=this;という記述について、よくわかりません。
- この記述はMoverクラス自身を参照しているのでしょうか、それともtargetMCのプロパティを参照しているのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
私はクラスを使う事も無くよくわかっていないので、 間違った事を言っているかも知れませんが、 updatePosition関数はonEnterFrameで割り当てられる関数なので updatePosition関数内からメンバ変数へアクセスは出来ません。 メンバ変数へアクセスできないと、コンストラクタの第二、第三引数、 つまりx,y方向への移動距離が取得できません。 それでは困るのでコンストラクタで ----------------------------------------------------------- function Mover(targetMC:MovieClip,xVel:Number,yVel:Number){ //第一引数をメンバ変数へ入れる this.targetMC=targetMC //メンバ変数targetMC内にobjectRefというObjectを作成し //その中にMoverへの参照を入れる //(多分)this.targetMC内からメンバ変数へアクセスできる様に this.targetMC.objectRef=this; //メンバ変数に第二、第三引数の値を入れる this.xVel=xVel; this.yVel=yVel; } ----------------------------------------------------------- としているのだと思います。 updatePosition関数内のthisはthis.targetMCのことですので、 ----------------------------------------------------------- function updatePosition(){ this._x+=this.objectRef.xVel; ---(1) this._y+=this.objectRef.yVel; ---(2) } ----------------------------------------------------------- (1)のthis.objectRef.xVelというのは this.targetMC.objectRef.xVelとイコールです。 (2)も同様に this.targetMC.objectRef.yVelの事です。 this.targetMC.objectRefの中身はMoverの中にある変数と関数への参照ですので this.targetMC.objectRef.xVelは Moverのメンバ変数xVelの事です。 つまりメンバ変数の値を取得出来るというわけです。 >わからないのは、コンストラクタの中の >this.targetMC.objectRef=this; >です。 クラスではない普通のflaファイルの_rootのフレームアクションで thisと書いたら_rootへの参照であるように コンストラクタ内のthisはMoverへの参照だと思います。
お礼
ありがとうございます! 非常に詳しくわかりやすい回答で理解できました! メンバ変数へアクセス出来るようにしてるんですね。 なるほどです! モヤモヤしたものが晴れてきました。 ほんとにありがとうございます。