電子書籍の厳選無料作品が豊富!

お世話になります。
1フレームには下記のようにマウスに追従させています。

function moveCross() {
this._x = _root._xmouse;
this._y = _root._ymouse;
}
closs.onEnterFrame = moveCross;

1フレームのメニューから2フレームに進んだ時に、この追従をさせないようにしたいのですが
できません。delete onEnterFrameを使えばいいとわかったのですが。

すみませんが、教えてください。

A 回答 (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 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/04/19 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!