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

パスワード:


パスワード紛失

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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takaji
Åê¹ÆNo.6158
投稿日時: 2004-4-10 6:36
新米
居住地:
投稿: 11
使用環境:
WIN2000,FlashMX
フレームの範囲逆再生
1?10フレームに右から左へ物体が動いた後で
ボタンを押すと5フレームまで逆再生する仕組み
(左から右へ動いて途中で止まる)で詰まっています。

ボタンに
_root.obj.onEnterFrame=function(){_root.obj.prevFrame()}
とすると1フレームまで戻ってしまい目的の結果になりません。

何か良い方法はないでしょうか。

野中文雄
Åê¹ÆNo.6161
投稿日時: 2004-4-10 6:46
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: フレームの範囲逆再生
第5フレームまで戻ったら、処理を止めればよいと思います。

ifステートメントによる条件判定とMovieClip.onEnterFrameメソッドのクリア(delete演算子)がおわかりになれば、とくに問題はない気がします。
引用:
takajiさんは書きました:
1?10フレームに右から左へ物体が動いた後で
ボタンを押すと5フレームまで逆再生する仕組み
(左から右へ動いて途中で止まる)で詰まっています。

ボタンに
_root.obj.onEnterFrame=function(){_root.obj.prevFrame()}

とすると1フレームまで戻ってしまい目的の結果になりません。


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

takaji
Åê¹ÆNo.6162
投稿日時: 2004-4-10 7:14
新米
居住地:
投稿: 11
使用環境:
WIN2000,FlashMX
Re: フレームの範囲逆再生
できました。
深く考え過ぎていたようです(汗)
ありがとうございました。
TPBon
Åê¹ÆNo.14761
投稿日時: 2005-2-3 20:31
新米
居住地:
投稿: 14
使用環境:
WinXP,Flash MX2004
Re: フレームの範囲逆再生
すいません・・・かなり中古の便乗で・・・
>第5フレームまで戻ったら、処理を止めればよい
とありますが、

_root.obj.onEnterFrame=function(){_root.obj.prevFrame()}

を記述した場合

ifステートメントによる条件判定とMovieClip.onEnterFrameメソッドのクリア(delete演算子)

の具体的な記述はどうなるのでしょうか?

お願いします。
ひろゆき
Åê¹ÆNo.14763
投稿日時: 2005-2-3 20:53
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: フレームの範囲逆再生
_root.obj.onEnterFrame = function() {
	_root.obj.prevFrame();
	if (_root.obj._currentframe == 5) {
		delete _root.obj.onEnterFrame;
	}
}
こんな感じではないでしょうか?
delete this.onEnterFrame; かもしれませんが。
TPBon
Åê¹ÆNo.14776
投稿日時: 2005-2-4 0:12
新米
居住地:
投稿: 14
使用環境:
WinXP,Flash MX2004
Re: フレームの範囲逆再生
ひろゆきさん、お世話になります。

root上に10フレームある<mc_disco>と<ボタンmc>が配置あり、最後のフレームにstopをかけてあります。
第5フレームまで戻ったら、処理を止めればよい”を行いたい場合、
下記を<ボタンmc>に記述しましたが、当然のごとく<mc_disco>が思った動きをしてくれません・・・

onClipEvent(enterFrame)
this.press = function(){
_root.mc_disco.onEnterFrame = _root.mc_disco.prevFrame;
if(_root.mc_disco._currentframe == 5){
delete(_root.mc_disco.onEnterFrame);
}
}

お知恵を・・・
ひろゆき
Åê¹ÆNo.14779
投稿日時: 2005-2-4 0:25
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: フレームの範囲逆再生
えっと、Flash5しか持ってませんので、全く分かってませんが、
onClipEvent(enterFrame) これはボタンに記述しても機能するのでしょうか?

this.onPress = function() {
	_root.mc_disco.onEnterFrame = function() {
		_root.mc_disco.prevFrame;
		if(_root.mc_disco._currentframe == 5){
			delete(_root.mc_disco.onEnterFrame);
		}
	}
}
こんな感じでは?
野中文雄
Åê¹ÆNo.14785
投稿日時: 2005-2-4 2:03
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: フレームの範囲逆再生
スクリプトは、論理(ロジック)にしたがって動作します。その理屈を理解せずに、あちこちのサンプルをつぎはぎしても、「当然のごとく」「思った動きをしてくれません」。

イベントとイベントハンドラ、イベントハンドラメソッド、関数(function)について、参考書などでその仕組みを理解されることが大切です。
引用:
TPBonさんは書きました:
root上に10フレームある<mc_disco>と<ボタンmc>が配置あり、最後のフレームにstopをかけてあります。
第5フレームまで戻ったら、処理を止めればよい”を行いたい場合、
下記を<ボタンmc>に記述しましたが、当然のごとく<mc_disco>が思った動きをしてくれません・・・

// ボタンなのにon ()ハンドラがない
onClipEvent (enterFrame) {
    // enterFrameイベントのたびに自身のonPressハンドラを定義し続けている
    this.onPress = function(){
        _root.mc_disco.onEnterFrame = _root.mc_disco.prevFrame;
        // クリック(onPress)したときのみ現行フレームを判定
        // そのときたまたま第5フレームだったら処理を行う
        if(_root.mc_disco._currentframe == 5){
            delete(_root.mc_disco.onEnterFrame);
        }
    }
}

修正するとしたら、こんな感じでしょうか。
on (press) {
    _root.mc_disco.onEnterFrame = function() {
        this.prevFrame();
        if (this._currentframe == 5) {
            delete this.onEnterFrame;
        }
    };
}


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

空野大二郎
Åê¹ÆNo.14786
投稿日時: 2005-2-4 2:05
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: フレームの範囲逆再生
 まいど。

 TPBonさんのスクリプトには大胆な運用違いが多かったため、
手直ししたつもりが別物になっております。
 動作は確認しましたが、参考程度に見て下さい。

 _root.ボタンmcのクリップアクションに記述
on (press) {
	//イベントハンドラを定義
	_root.mc_disco.onEnterFrame = function () {
		if (this._currentframe <= 5) {
			//5フレーム以下ならonEnterFrameを削除
			delete (this.onEnterFrame);
		} else {
			//自身を逆再生
			this.prevFrame ();
		}
	};
}

引用:
TPBonさんは書きました:

root上に10フレームある<mc_disco>と<ボタンmc>が配置あり、最後のフレームにstopをかけてあります。
第5フレームまで戻ったら、処理を止めればよい”を行いたい場合、
下記を<ボタンmc>に記述しましたが、当然のごとく<mc_disco>が思った動きをしてくれません・・・

onClipEvent(enterFrame)
this.press = function(){
_root.mc_disco.onEnterFrame = _root.mc_disco.prevFrame;
if(_root.mc_disco._currentframe == 5){
delete(_root.mc_disco.onEnterFrame);
}
}


 特に、onEnterFrameイベントハンドラと、MovieClip.nextFrame()関数は、
Flashのヘルプやリファレンスを利用して再確認し、動作を会得して下さい。


 「_root.ボタンmc」は、MovieClip型のようです。
 FlashMX以降は、MovieClipにもon()ハンドラやonPressイベントハンドラが
定義できるようになりました。
引用:
ひろゆきさんは書きました:
えっと、Flash5しか持ってませんので、全く分かってませんが、
onClipEvent(enterFrame) これはボタンに記述しても機能するのでしょうか?


 ただ、MovieClipのクリップアクションに記述するには、
on()もしくはonClipEvent()ハンドラの中にスクリプトを記述する
必要があります。


----------------
空野 大二郎 アニメーター作家
桜の道

TPBon
Åê¹ÆNo.14787
投稿日時: 2005-2-4 2:20
新米
居住地:
投稿: 14
使用環境:
WinXP,Flash MX2004
Re: フレームの範囲逆再生
ひろゆきさん、野中さん、空野さん、
勉強になりました・・・

Thanks for your time ! です!
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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