トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     onReleaseの有効範囲
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
inu_kt
Åê¹ÆNo.24858
投稿日時: 2006-4-14 4:42
半人前
居住地:
投稿: 33
使用環境:
Flash 8 Pro
Windows XP
onReleaseの有効範囲
お世話になっております。

onReleaseの有効範囲についてお聞きしたいのですが、
onReleaseは、一度定義すると、それ以降のフレームでは
基本的にずっと有効になるのではないのでしょうか?

現在、
1フレーム目: onReleaseを定義(押されたら4フレーム目へ)
2フレーム目: stop()しておき、ボタン押し待ち
----------
4フレーム目: メイン処理
5フレーム目: 処理が終わったので2フレーム目に戻ってボタン押し待ち

という流れのスクリプトを書いたのですが、
1フレーム目→2フレーム目に来たときは、onReleaseが有効なのですが、5フレーム目→2フレーム目に来たときは、ボタンを押しても
onReleaseが発生しません。

なお、5フレーム目から1フレーム目に戻って再度onReleaseを定義
すると、onReleaseが発生します。

前のフレームに戻ると、onReleaseは無効になってしまうのでしょうか?


---
すみません、追伸です。実験してみたところ、そのボタンの
インスタンスが無いフレームに行くと、その後はonReleaseが
無効になってしまうようです。
しかし、処理中(4フレーム目)は、ボタンを別のグラフィックに
したいので、どうしても消したいです。
でも消すとonReleaseも無効になる。。
どうすればいいでしょう?
ひろゆき
Åê¹ÆNo.24860
投稿日時: 2006-4-14 5:23
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: onReleaseの有効範囲
肝心なことを説明されていないように思いますが

_root 第1フレーム
ムービークリップ(インスタンス名: btn_mc) を配置。
btn_mc.onRelease = function() {
	gotoAndPlay(4);
};
_root 第2フレーム
stop();
_root 第3フレーム
ムービークリップ(インスタンス名: btn_mc) を削除。(空白キーフレーム挿入)
_root 第4フレーム
trace("メイン処理");
_root 第5フレーム
gotoAndStop(2);
ではないですか?
ですね。

例えば、btn_mc のムービークリップアクションに
on (release) {
	_root.gotoAndPlay(4);
}
と記述したり、
btn_mc のフレームアクションに
this.onRelease = function() {
	_root.gotoAndPlay(4);
};
と記述すると、結果は違ってくると思います。


これは、onRelease に限らず、
_root 第1フレーム
ムービークリップ(インスタンス名: btn_mc) を配置。
btn_mc._alpha = 50;
btn_mc のムービークリップアクションに
on (release) {
	_root.gotoAndPlay(4);
}
_root 第2フレーム
stop();
_root 第3フレーム
ムービークリップ(インスタンス名: btn_mc) を削除。(空白キーフレーム挿入)
_root 第4フレーム
trace("メイン処理");
_root 第5フレーム
gotoAndStop(2);
としても、同じような現象が起きるはずです。


どうしても、_root のフレームアクションに記述をするのであれば、
_root 第2フレームにも btn_mc.onRelease = function() {} を記述するとか。

_root 第1フレームで function にしておいて、
on (release) {
	//function を呼び出す
}
とか。

あるいは、
_root 第3フレーム以降で、btn_mc を削除せずに、
_root 第1フレームに
btn_mc.onRelease = function() {
	gotoAndPlay(4);
	this._visible = false;
};
_root 第5フレーム
gotoAndStop(2);
btn_mc._visible = true;
と記述するとか、でしょうか。


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.24861
投稿日時: 2006-4-14 5:26
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: onReleaseの有効範囲
本題に入る前に、「thisの意味が分からない」は、解決されましたでしょうか?→【フィードバックをしない

また、以前アドバイス差し上げたイベントハンドラメソッドについての理解は、再確認されましたか?

MovieClip.onReleaseイベントハンドラメソッドは、MovieClipのメソッドです。したがって、MovieClip._xプロパティやMovieClip.gotoAndPlay()メソッドなどと同じく、そのターゲットのインスタンスが存在しなくなれば、MovieClipとともに消滅します。
引用:
kenさんは書きました:
現在、
1フレーム目: onReleaseを定義(押されたら4フレーム目へ)
2フレーム目: stop()しておき、ボタン押し待ち
----------
4フレーム目: メイン処理
5フレーム目: 処理が終わったので2フレーム目に戻ってボタン押し待ち

という流れのスクリプトを書いたのですが、
1フレーム目→2フレーム目に来たときは、onReleaseが有効なのですが、5フレーム目→2フレーム目に来たときは、ボタンを押しても
onReleaseが発生しません。
...[中略]...
すみません、追伸です。実験してみたところ、そのボタンの
インスタンスが無いフレームに行くと、その後はonReleaseが
無効になってしまうようです。

そのターゲットのMovieClipインスタンス自身に、イベントハンドラメソッドを定義すればよいでしょう。つまり、MovieClipアクションのonClipEvent (load)ハンドラあるいはMovieClipシンボル内の第1フレームに、自身thisをターゲットにしてイベントハンドラメソッドを記述します。
引用:
しかし、処理中(4フレーム目)は、ボタンを別のグラフィックに
したいので、どうしても消したいです。
でも消すとonReleaseも無効になる。。
どうすればいいでしょう?


----------------
 

inu_kt
Åê¹ÆNo.25057
投稿日時: 2006-4-22 13:20
半人前
居住地:
投稿: 33
使用環境:
Flash 8 Pro
Windows XP
Re: onReleaseの有効範囲
返信が遅くなってしまい、申し訳ございません!
メールアドレスの登録が間違っていて、レスが付いたことに
気づきませんでした。

お教えいただいた通り、インスタンスが消えるとメソッドも
消滅するようなので、2フレーム目(ボタン押し待ちフレーム)に
onRelease()を記述して、ボタンを押せるようにするたびに
毎回、onRelease()を定義するようにしました。

_visibleを一旦falseにする方法も、覚えておきたいと思います。

MCアクションに記述するのも良いのですが、なるべく
フレームアクションで完結させたかったので、、

どうもありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops