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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     アクションスクリプトについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
michiko
Åê¹ÆNo.4420
投稿日時: 2004-3-2 17:11
新米
居住地: 横浜
投稿: 8
使用環境:
Windows2000
Flash MX
アクションスクリプトについて
はじめまして。
flash MXのアクションスクリプトを勉強中の初心者です。
どなたか教えてくださると助かります。

本をクイックしたら、本の表紙がめくれるムービークリップを作成したいと思っています。

本がめくれる動作を表現する方法として考えた方法が、本の表紙のムービークリップのインスタンスに、以下のアクションスクリプトを埋め込み、
_xscaleプロパティの値が約-100%になったら(イメージが反転したら)、"次のアニメーション"にジャンプさせたいのですがうまくいきません。

ムービークリップが配置してあるタイムラインは、_xscaleの値が-99より小さくなる長さまで引いているのですが、
_xscaleの値が-99より小さくなっても、"次のアニメーション"にジャンプしないのです。

どうしたらうまく作動するのでしょうか?

(↓本の表紙に記述したスクリプト)

onClipEvent (load) {
//反転速度
r = Math.PI/2;
}
onClipEvent (enterFrame) {
if(this._xscale <= -99){
this.gotoAndplay("次のアニメーション");
}
else{
this._xscale = 100*Math.sin(r);
r = (r+0.1)%(2*Math.PI);
trace(this._xscale);
}
}

ちなみにこの方法だと、フレームをループさせてしまうと、x_scaleの値が元の100に戻ってしまいまいました。
なのでタイムラインを長く引いたのですが、それだと効率が悪いような気がしています。
他にもっと効率の良いやり方などあったらアドバイス宜しくお願いします。

(わかりにくい説明で申し訳ありません。理解できるか心配です。。。)
森 なおき
Åê¹ÆNo.4423
投稿日時: 2004-3-2 17:38
モデレータ
居住地: 福岡(心は大阪)
投稿: 527
使用環境:
:MacOSX10.6.8
:FlashCS5.5
Re: アクションスクリプトについて
なおきです。
このスクリプトをまんまコピー&ペーストで試したけど
とりあえずは動きましたよ。
おそらくthis.gotoAndPlay(強いて言えばこのplayが小文字でした)のthisが示すものが違うか、ラベルの間違いでしょう。
それとラベルはなるべく半角英文字にしておいた方が
失敗がないと思いますよ。

そしてミスとしてはonClipEvent(enterFrame)ハンドラで指定しているため、-99以下になったときにひたすらgotoAndPlayが指定されているのが問題ではないでしょうか。これを一度だけ呼び出すように書き換えるべきですね。

また、タイムラインの長さはこの際関係ありません。
(ムービーの構造にもよりますが)
ムービークリップのタイムラインはメインのタイムラインと
全く別に動きます。

#なるべく投稿の際に半角仮名は使わないで下さい


----------------
な お き
Dev.:MacOSX+FlashCS5.5
View:---

野中文雄
Åê¹ÆNo.4424
投稿日時: 2004-3-2 17:53
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: gotoAndPlay()でのフレーム移動ができない(アクションスクリプトについて)
ご使用の環境は、プロフィールに記入しましょう。

それから、題名です。「教えてください」よりはずっとよいのですが、ここは[コーダーズルーム]です。基本的にActionScriptの話題ばかりです。魚屋さんに「お魚ください」と同じ状態ですので、もう少し具体的なタイトルをおつけください。
引用:
michikoさんは書きました:
flash MXのアクションスクリプトを勉強中の初心者です。

フレームラベルに、本当に"次のアニメーション"という名前をつけていますか? 基本的には、半角英数字(識別子)をお使いください。

その「本の表紙」のMovieClipのタイムラインに、"次のアニメーション"というフレームラベルがありますか? 以下の確認用trace()アクションを追加して、出力されれば、if条件の判定は正しく行われていることになります。MovieClip._currentframeプロパティの値が、目的のフレームラベルの位置と一致しているかどうかお確かめください。
引用:
_xscaleの値が-99より小さくなっても、"次のアニメーション"にジャンプしないのです。
onClipEvent (load) {
	//反転速度
	r = Math.PI/2;
}
onClipEvent (enterFrame) {
	if(this._xscale <= -99){ 
	this.gotoAndplay("次のアニメーション");
	trace([this, this._currentframe]);  // 確認用
	}
	else{
	this._xscale = 100*Math.sin(r);
	// r = (r+0.1)%(2*Math.PI);  // sin値は循環するので無意味
	r += 0.1;
	trace(this._xscale);
	}
}


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

michiko
Åê¹ÆNo.4428
投稿日時: 2004-3-2 19:03
新米
居住地: 横浜
投稿: 8
使用環境:
Windows2000
Flash MX
Re: gotoAndPlay()でのフレーム移動ができない(アクションスクリプトについて)
なおきさん、fumioさん、返信ありがとうございます。

題名と半角の件ですが、次回からは、わかりやすい題名と投稿の際の半角仮名には気をつけます。すみませんでしたm(_ _)m

ラベル名についてですが、
"次のアニメーション"というラベル名は、実際には"30"などとフレーム番号で記述していました。分かりやすいようにと思ったのですが、返ってわかりずらいですよね(^ ^;)すみません。

traceしてみました。
trace([this, this._currentframe]); という行を付け足してみたところ、

_level0.instance4,1
_level0.instance4,1
_level0.instance4,1
100
99.5004165278026
98.0066577841242
95.5336489125606
92.1060994002885
87.7582561890373
82.5335614909678
76.4842187284488
69.6706709347165
62.1609968270664
54.0302305868139
45.3596121425577
36.2357754476673
26.7498828624586
16.996714290024
7.07372016677016
-2.91995223012901
-12.8844494295526
-22.7202094693089
-32.3289566863505
-41.6146836547144
-50.4846104599859
-58.8501117255347
-66.6276021279826
-73.7393715541247
-80.1143615546935
-85.6888753368948
-90.4072142017062
-94.2222340668658
-97.0958165149591
-98.9992496600445
-99.9135150273279
_level0.instance5,1
_level0.instance5,1
_level0.instance5,1
_level0.instance5,1   ・・・永遠につづく、、、

とでてしまったのですが、trace([this,this._currentframe]); の出力結果の読み方がいまいち理解できていなく、_level0.instance5,1は何を意味しているのか分かりません。。。
無限ループしているみたいなのですが、そのような意味ですか?

基本的な質問ですみません。




michiko
Åê¹ÆNo.4430
投稿日時: 2004-3-2 19:54
新米
居住地: 横浜
投稿: 8
使用環境:
Windows2000
Flash MX
Re: gotoAndPlay()でのフレーム移動ができない(アクションスクリプトについて)
いろいろと直しているうちに、ルートを間違えていたことが判明しました。
結局、ただのルートの間違いでした。
(最初になおきさんがそう指摘してくれたのに。。。)

お騒がせしてすみません。

ありがとうございました!
森 なおき
Åê¹ÆNo.4432
投稿日時: 2004-3-2 19:58
モデレータ
居住地: 福岡(心は大阪)
投稿: 527
使用環境:
:MacOSX10.6.8
:FlashCS5.5
Re: gotoAndPlay()でのフレーム移動ができない(アクションスクリプトについて)
なおきです。
traceの最初の_level0.instance4,1って何でしょ?(^^;
普通に作ってればこれが出るはずないのですが。
ちなみに意味は
最初の_level0.instance5はthisが示すもの。
すなわちこのスクリプトが実行されている場所です。
後ろの1はその_level0.instance5がどのフレームを
再生しているかを示しています。この場合1フレーム目ですね。

要するにここからわかることはずっと
1フレーム目を再生しているので、michikoさんの希望の30フレーム目からの再生ができていないと言うことです。
とりあえず、簡単にですが以下にサンプルを書きました。
ポイントはflagを立てることにより、一度でも条件を満たすと、gotoAndPlayを実行しないと言うことです。

onClipEvent (load) {
	//反転速度
	r = Math.PI/2;
	this.flag = 0;
}
onClipEvent (enterFrame) {
	if(this._xscale <= -99 && this.flag == 0){ 
		this.gotoAndPlay(5);
		this.flag = 1;
		trace([this, this._currentframe]); 
	}else if (this.flag ==1){
		trace([this, this._currentframe]); 
	}else{	
		this._xscale = 100*Math.sin(r);
		r += 0.1;	
		trace(this._xscale);
	}
}


[追伸]
このレスを書いている間に一つ問題が解決したようですが、
上記のような問題が出ているはずです。
見た目的にはgotoAndPlayではなくgotoAndStopしたときのような
状態になっているはずですので注意して下さい。


----------------
な お き
Dev.:MacOSX+FlashCS5.5
View:---

michiko
Åê¹ÆNo.4434
投稿日時: 2004-3-2 20:15
新米
居住地: 横浜
投稿: 8
使用環境:
Windows2000
Flash MX
Re: gotoAndPlay()でのフレーム移動ができない(アクションスクリプトについて)
「一度でも条件を満たすと、gotoAndPlayを実行しない」
という条件を考えるまで頭が回りませんでした。

教えていただいたサンプルをよく読んで、もう一度作り直してみたいと思います。

level0.instance5の意味も分かりました。
これからは、きちんとトレースします(^^;)

重ねがさね、ありがとうございました!
助かりました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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