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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     mc再生中にonRollOutした場合の処理
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
brokenman
Åê¹ÆNo.33808
投稿日時: 2007-6-24 7:04
新米
居住地:
投稿: 12
使用環境:
MacBook Black@2GHz(intel core 2 duo)
memory:2GB
os x:10.4.9
Flash 8
mc再生中にonRollOutした場合の処理
おはようございます。

mc再生中にonRollOutした場合の処理について、ご質問させて下さい。

_rootに
a:MovieClip;
b:MovieClip;
を配置してます。
bは初期値として不可視状態としています。
bはマウスがaに乗る事で可視状態となります。
bはマウスがaから外れる事で不可視状態となります。
bはaがクリックされる事で再生されます。
(12フレームのモーショントゥイーン)
※フレームレート:12fps

_rootの1frameにscriptを記述。
//1frame
_root.b._alpha = 0;

_root.a.onRollover = function(){
_root.b._alpha = 100;
}
_root.a.onRollOut = function(){
_root.b._alpha = 0;
}
_root.a.onRelease = function(){
_root.b.gotoAndPlay(1);
}

aをクリックしてマウスをaから外すと、bが再生中にも関わらずbが消えてしまいます。

bが再生中にaからマウスを外しても、bの再生を中断させないようにするにはどうすれば良いでしょうか?

作業環境:
os : macosX(10.4.10)
machine : macBook 2.0GHz
memory : 2GHz
soft : flash8
ひろゆき
Åê¹ÆNo.33811
投稿日時: 2007-6-24 9:12
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: mc再生中にonRollOutした場合の処理
引用:
aをクリックしてマウスをaから外すと、bが再生中にも関わらずbが消えてしまいます。

bが「消える」のでしょうか?

bが再生中かどうかに関わらず、
aからマウスを外すと、アルファ値が 0 になるようにしているのではないのですか?

引用:
bが再生中にaからマウスを外しても、bの再生を中断させないようにするにはどうすれば良いでしょうか?

aからマウスを外しても、bの再生は行われているはずです。
ご自分が作られている動きについて、整理された方が良いように思います。

bのモーション・トゥイーンがどのようなものなのかについても、
説明が必要であるように思います。
位置移動なのか、アルファ値の変化なのか。


なお、スクリプトの一部に大文字・小文字を区別すべき部分があります。
また、bを停止しておいて、再生するようにしたいのであれば、
bの第1フレームには、stop(); と記述した上で、gotoAndPlay(2) だと思いますが。
このあたりも、どのように作られたのか、不明瞭ですね。
b._alpha = 0;

a.onRollOver = function():Void {
	b._alpha = 100;
};
a.onRollOut = function():Void {
	b._alpha = 0;
};
a.onRelease = function():Void {
	b.gotoAndPlay(2);
	//b.play();
};


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

brokenman
Åê¹ÆNo.33880
投稿日時: 2007-6-26 20:41
新米
居住地:
投稿: 12
使用環境:
MacBook Black@2GHz(intel core 2 duo)
memory:2GB
os x:10.4.9
Flash 8
Re: mc再生中にonRollOutした場合の処理
言葉が足りなかったので、書き足します。

引用:
bが「消える」のでしょうか?

bが再生中かどうかに関わらず、
aからマウスを外すと、アルファ値が 0 になるようにしているのではないのですか?


そうだと思います。


引用:
bのモーション・トゥイーンがどのようなものなのかについても、
説明が必要であるように思います。
位置移動なのか、アルファ値の変化なのか。


モーショントゥイーンではサイズが大きくなる動きをしています。

引用:
なお、スクリプトの一部に大文字・小文字を区別すべき部分があります。


間違ってました。。
野中文雄
Åê¹ÆNo.33881
投稿日時: 2007-6-26 21:54
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: mc再生中にonRollOutした場合の処理
「bが再生中」かどうかを判定して、再生中でなければMovieClip._alphaプロパティを0に設定すればよいでしょう。いわゆる「フラグ」を使った処理が必要とされます。

参考:「MCの制御
わらわ.net「おまけのロールオーバー
引用:
brokenmanさんは書きました:
引用:
bが「消える」のでしょうか?

bが再生中かどうかに関わらず、
aからマウスを外すと、アルファ値が 0 になるようにしているのではないのですか?

そうだと思います。


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

brokenman
Åê¹ÆNo.33998
投稿日時: 2007-7-4 16:22
新米
居住地:
投稿: 12
使用環境:
MacBook Black@2GHz(intel core 2 duo)
memory:2GB
os x:10.4.9
Flash 8
Re: mc再生中にonRollOutした場合の処理
お返事遅くなりました。


「おまけのロールオーバー」拝見させて頂きました。
フラグについては、だいぶ理解出来ました。
ありがとうございました。

もう少しやってみます。
今後も宜しくお願いします。

brokenman
Åê¹ÆNo.34003
投稿日時: 2007-7-4 18:42
新米
居住地:
投稿: 12
使用環境:
MacBook Black@2GHz(intel core 2 duo)
memory:2GB
os x:10.4.9
Flash 8
mc再生中にonRollOutした場合の処理<修正>
再度、考え直してやりましたが未だに出来ません。
下記に新規の構成を書きますのでご教授頂ければと思います。

/***
階層
****/
_root
└ test(インスタンス名:test)
└btn(インスタンス名:btn1)
├btn(インスタンス名:btn2)
├pic1_anime(インスタンス名:pic1)
└pic2_anime (インスタンス名:pic2)

※全てMovieClip(以下mc)です。
※btnは一つのmcです。
※インスタンス名btn1はインスタンス名pic1に
 インスタンス名btn2はインスタンス名pic2に
 対応しています。
※btnにonRollOver、onRollOut、onReleaseすると
 picのトゥイーンアニメーションが再生されます。
 アニメーションの最後のフレームでthis.stop();の
 スクリプトをフレームアクションとして記載してます。
 onRollOver:フェードイン(フレームラベル"onRollOver")
 onRollOut:フェードアウト(フレームラベル"onRollOut")
 onRelease:拡大(フレームラベル"onRelease")
※インスタンス名pic1とpic2は同じ位置に重ねて配置しています。
 各mcの1フレームはアルファ0%としています。
※インスタンス名btn1とbtn2はpic1とpic2の左側に重ならない
 ように上下に配置しています。
※ステージのタイムラインにはtestのインスタンスのみです。

※testのフレームアクション1フレーム目
/****
btn
****/
btnArray = new Array("btn1", "btn2");
picArray = new Array("pic1", "pic2");

// 初期設定
_root.test.btn._alpha = 50;
for(i=0; i<2; i++){

_root.test[btnArray[i]].i = i;
_root.test[picArray[i]].i = i;


// onRollOver
_root.test[btnArray[this.i]].onRollOver =function(){
_root.test[picArray[this.i]].gotoAndPlay("onRollOver");
this._alpha = 100;
}
// onRollOut
_root.test[btnArray[this.i]].onRollOut = function(){
this._alpha = 50;
_root.test[picArray[this.i]].gotoAndPlay("onRollOut");
}

// onRelease
_root.test[btnArray[this.i]].onRelease = function(){
this._alpha = 100;
_root.test[picArray[this.i]].gotoAndPlay("onRelease");
}

/************************************************/


以上です。
この時、btn1とbtn2を高速で移動させると、pic1とpic2の二つのmc
が重なり合う形でアニメーション表示されてしまいます。

このように重なり合わないように一つが再生中にはもうひとつのアニメーションが再生されないようにしたいです。
フラグ判定が必要だとは教えて頂き分かりましたが、実際どうすればいいかが分かりません。
野中文雄
Åê¹ÆNo.34006
投稿日時: 2007-7-4 22:36
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: mc再生中にonRollOutした場合の処理<修正>
「重ねて配置」しておいて、「重なり合わないように」したいという意味がわかりかねます。→【自分にしかわからない用語を使う

もっと問題を絞込んだうえで、第三者から見てわかるようにご説明ください。
引用:
brokenmanさんは書きました:
※インスタンス名pic1とpic2は同じ位置に重ねて配置しています。
 各mcの1フレームはアルファ0%としています。
※インスタンス名btn1とbtn2はpic1とpic2の左側に重ならない
 ように上下に配置しています。
...[中略]...
この時、btn1とbtn2を高速で移動させると、pic1とpic2の二つのmc
が重なり合う形でアニメーション表示されてしまいます。

このように重なり合わないように一つが再生中にはもうひとつのアニメーションが再生されないようにしたいです。


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

brokenman
Åê¹ÆNo.34010
投稿日時: 2007-7-5 1:16
新米
居住地:
投稿: 12
使用環境:
MacBook Black@2GHz(intel core 2 duo)
memory:2GB
os x:10.4.9
Flash 8
Re: mc再生中にonRollOutした場合の処理<修正>
引用:

「重ねて配置」しておいて、「重なり合わないように」したいという意味がわかりかねます。


説明不足でしたので、下記に手順を記します。

1.btn1にRollOverしてpic1がフェードイン(初期アルファ値0%)してアルファが100%になります。

2.btn1をRollOutして、すぐにbtn2にRollOverすると、pic1のフェードアウト(RollOut時のモーショントゥイーン)とpic2のフェードイン(RollOver時のモーショントゥイーン)のアニメーションが同時に再生されてしまいます。

pic1を青色単色のグラフィック、
pic2を赤色単色のグラフィックからmcとしているので
途中紫色に見えます。

ひろゆき
Åê¹ÆNo.34011
投稿日時: 2007-7-5 4:51
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: mc再生中にonRollOutした場合の処理<修正>
まず、もっと単純な構造にして試すことができるはずです。

_root 上に、ムービークリップ(インスタンス名: btn1, btn2, pic1, pic2) を配置。

_root 第1フレームに
for (var n:Number = 1; n <= 2; n++) {
	var _btn:MovieClip = this["btn"+n];
	_btn._alpha = 50;
	_btn.target = this["pic"+n];
	_btn.other = this["pic"+(3-n)];
	_btn.onRollOver = function():Void {
		this._alpha = 100;
		if (!this.other.inMotion) {
			this.target.gotoAndPlay("onRollOver");
		}
	};
	_btn.onRollOut = function():Void {
		this._alpha = 50;
		if (!this.other.inMotion) {
			this.target.gotoAndPlay("onRollOut");
		}
	};
	_btn.onRelease = function():Void {
		this._alpha = 100;
		if (!this.other.inMotion) {
			this.target.gotoAndPlay("onRelease");
		}
	};
}
と記述。

pic1, pic2 のフレームには、
再生中の部分のフレームに、isMotion = true;
そうでない部分のフレームに、isMotion = false;
と記述。

サンプル

これで、「一つが再生中にはもうひとつのアニメーションが再生されないように」できているはずです。


しかし、これでは、
思い描いていた動きは実現できていないのではないでしょうか?

そもそも、「一つが再生中にはもうひとつのアニメーションが再生されないように」すること自体が
思い描いている動きを実現する方向に向かっていない可能性もあるのではないでしょうか?

もし、そうであるとするならば、その方法よりも前に、
どのような動きを実現したいのかについて、検討される必要があるように思います。
また、それも第三者にも分かるような説明をされる必要があるように思いますし、
それができるようになれば、ご自分でスクリプトを記述できるようになることに繋がるでしょう。


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

野中文雄
Åê¹ÆNo.34012
投稿日時: 2007-7-5 8:58
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: mc再生中にonRollOutした場合の処理<修正>
このご説明では、「悩み事」のご相談にしかなっていません。→【?してしまいます。どうしたらよいでしょう
引用:
brokenmanさんは書きました:
2.btn1をRollOutして、すぐにbtn2にRollOverすると、pic1のフェードアウト(RollOut時のモーショントゥイーン)とpic2のフェードイン(RollOver時のモーショントゥイーン)のアニメーションが同時に再生されてしまいます。

ひろゆきさんのいわれるとおり、ではどういう動きにされたいのかが問題です。そして、動作の仕様は決まった答えがある訳ではなく、作者がご自分でよく考えた末に、判断して決めるべきことです。
引用:
ひろゆきさんは書きました:
もし、そうであるとするならば、その方法よりも前に、
どのような動きを実現したいのかについて、検討される必要があるように思います。

「アニメーションが同時に再生」されないようにするには、再生開始時には他方のアニメーションをつねにリセットする方法があります。逆に、一方の再生中は、他方はクリックできないようにしてもよいでしょう。ただ、その動作結果が、希望に合うかどうかはわかりません。

ロールオーバーしたアニメーションをすべて記憶しておいて、順に再生することも考えられます。しかし、すばやく何度もロールオーバーを繰返せば、マウスの操作を止めた後も、間抜けにアニメーションを繰返す結果にはなります。


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

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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