• ベストアンサー

onEnterFrameの中止

お世話になります。 1フレームには下記のようにマウスに追従させています。 function moveCross() { this._x = _root._xmouse; this._y = _root._ymouse; } closs.onEnterFrame = moveCross; 1フレームのメニューから2フレームに進んだ時に、この追従をさせないようにしたいのですが できません。delete onEnterFrameを使えばいいとわかったのですが。 すみませんが、教えてください。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

一般的で普通の状態だと 質問するまでもなく普通に↓でできますけどね。 delete closs.onEnterFrame; 例えば 質問で書かれているスクリプトを書いた階層のタイムラインがフレーム2まであって フレーム1にそのスクリプトを書かれていたとします。 その場合,例えば(あくまでも例えば), 次のようにすれば良いだけです。 //---------------------------------- //このタイムラインの再生を停止 stop(); function moveCross() { this._x = _root._xmouse; this._y = _root._ymouse; } closs.onEnterFrame = moveCross; //「closs」クリック時の動作 closs.onRelease = function(){ //★ closs.onEnterFrame を削除 delete closs.onEnterFrame; //このタイムラインをフレーム2に進めて停止 gotoAndStop(2); } //---------------------------------- もっともこの場合(に限って)は //★ closs.onEnterFrame を削除 delete closs.onEnterFrame; の部分を //★ closs.onEnterFrame を削除 delete this.onEnterFrame; としても良いです。 または //★ closs.onEnterFrame を削除 delete this._parent.closs.onEnterFrame; という回りくどい書き方をしても良いと言えば良いです。 また仮にもし スクリプトを書かれた階層が(closs を置いた階層が) _root(メインタイムライン) であれば //★ closs.onEnterFrame を削除 delete _root.closs.onEnterFrame; のように 絶対パスでターゲットパスを指定しても良いです。 どこに書いたスクリプトから delete closs.onEnterFrame をしたいのかがわかりませんが, とにかく普通に delete closs.onEnterFrame をすれば良いだけです。 もしスクリプトを書く階層が違う場合は ターゲットパス(closs に対するターゲットパス)に注意するくらいでしょうか。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html

x_izumin
質問者

お礼

いろいろな条件で示していただき、ありがとうございました。 動作できるようになりました。

関連するQ&A