
わからないことがあるので、教えてください。
以下のようなクラスがありました。
class Mover extends MovieClip{
var targetMC:MovieClip
var objectRef:Object;
var xVel:Number;
var yVel:Number;
function Mover(targetMC:MovieClip,xVel:Number,yVel:Number){
this.targetMC=targetMC
this.targetMC.objectRef=this;
this.xVel=xVel;
this.yVel=yVel;
}
function updatePosition(){
this._x+=this.objectRef.xVel;
this._y+=this.objectRef.yVel;
}
function startMoving(){
this.targetMC.onEnterFrame=this.updatePosition;
}
}
わからないのは、コンストラクタの中の
this.targetMC.objectRef=this;
です。
これはMoverクラス自身を参照してるんですか?targetMCのことなんでしょうか・・・。
このあたりがよくわからないので、わかりやすく教えてください。
よろしくお願いします。
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への参照だと思います。
ありがとうございます!
非常に詳しくわかりやすい回答で理解できました!
メンバ変数へアクセス出来るようにしてるんですね。
なるほどです!
モヤモヤしたものが晴れてきました。
ほんとにありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- 英語 Statistically significant differences (p < 0.05), 5 2022/05/03 01:09
- 英語 英文の意味 4 2023/01/13 14:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数の中でaddEventListenerを...
-
EnabledプロパティをFalseの時
-
AS3.0で取得した外部XMLの文字...
-
varとは
-
正規表現のパターン
-
PV3Dでのアニメーション
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
IDの自動採番について
-
配列の要素番号を取得するには?
-
ActionScriptで配列をクリアす...
-
SetTimer関数について
-
【ActionScript】配列の昇順降...
-
重複しない乱数整数を発生させる。
-
DXRubyについてです
-
アクティブなウィンドウのみ、...
-
エラー438でオブジェクトの...
-
FLASHでランダムでURLを表示さ...
-
functionのパラメータの渡し方...
-
変な質問ですみません、n番目の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Actionscript 同じような処理...
-
ActionScript2.0の変数をjs置き...
-
rdfから取得したW3CDTF形式の日...
-
PV3Dでのアニメーション
-
ActionScript3.0のfor文の処理...
-
フラッシュ、ロールオーバーで...
-
サムネイルの写真にリンクをつ...
-
varとは
-
経過日数のカウントアップ
-
自分への参照を保持
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
c++ cmathとmath.h
-
TextChangeイベントが発生しない
-
LRESULTとHRESULT
-
VB.NET の配列の要素数
-
ifdefとenum
-
変な質問ですみません、n番目の...
-
VBでボタンを押すと画像をラン...
-
配列の要素番号を取得するには?
おすすめ情報