• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自分への参照を保持)

Flash ActionScript クラスの自己参照について教えてください

このQ&Aのポイント
  • Flash ActionScriptにおけるクラスの自己参照について教えてください。
  • Moverクラスのコンストラクタ内でのthis.targetMC.objectRef=this;という記述について、よくわかりません。
  • この記述はMoverクラス自身を参照しているのでしょうか、それともtargetMCのプロパティを参照しているのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.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への参照だと思います。

andoga
質問者

お礼

ありがとうございます! 非常に詳しくわかりやすい回答で理解できました! メンバ変数へアクセス出来るようにしてるんですね。 なるほどです! モヤモヤしたものが晴れてきました。 ほんとにありがとうございます。

関連するQ&A