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

パスワード:


パスワード紛失

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

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
Fumio
Åê¹ÆNo.25863
投稿日時: 2006-6-1 11:59
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
Re: onEnterFrameの動作
「以下の2つ」の書き方については、多分に趣味の問題で、どちらでも結構だと思います。
引用:
Duke15さんは書きました:
以下の2つ書いてみましたが、
書き方としては、こういった書き方は良くないとかの
指摘が御座いましたら、ご意見をお願いしたいのですが。
...[中略]...
以下のスクリプトで動作させる。
btn_mc.onRelease = function() {
    xSetAnimation(ball1_mc);
    xSetAnimation(ball2_mc);
}

もう一つの書き方は、更に関数を作成して
function btnStart() {
    xSetAnimation(ball1_mc);
    xSetAnimation(ball2_mc);
}

以下のスクリプトで動作させる。
btn_mc.onRelease = btnStart;

もっとも、無名関数で定義せず、通常の関数定義を行った方がよいと考えられる場合は、ふたつあります。

[1]複数のインスタンスに同じ内容の関数を定義する場合
以下のMovieClip.onEnterFrameイベントハンドラメソッドが、まさにその場合です。
function xSetAnimation(_mc) {
    _mc.speed = speed;
    _mc.accel = accel;
    _mc.boundPos = boundPos;
    _mc.onEnterFrame = bound;
}

もし、このイベントハンドラメソッドを無名関数で定義すると、functionオブジェクトは、xSetAnimation()関数を呼出しすたびに、引数に渡したMovieClipインスタンスの数分だけ作成されてしまいます。

上記のMovieClip.onEnterFrameイベントハンドラメソッドの定義なら、各MovieClipインスタンスには関数boundの参照が設定されるだけですので、メモリの効率として有利です。
function xSetAnimation(_mc) {
    // ...[中略]...
    _mc.onEnterFrame = function() {  // 毎回functionが作成される
	// ...[後略]...

[2]同じ関数を何度も設定する場合
以下のフレームアクションは、クリックでアニメーションを開始して、目的座標まで到達するとMovieClip.onEnterFrameイベントハンドラメソッドをクリアします。

このときもしMovieClip.onEnterFrameを無名関数で定義すると、functionを毎回つくり直すことになります。この場合、(処理としてはわずかだとしても)functionオブジェクトを生成する負荷が無駄にかかります。

関数を予め定義しておけば、やはり参照を設定するだけで済みますので、(funcitonを毎度作成するという)無駄な処理を省くことができます。
// MovieClip: クリックで水平移動のアニメーションさせる
// 第1フレームアクション
var nTarget:Number;
this.onRelease = function():Void  {
	nTarget = this._x+100;
	this.onEnterFrame = xEaseOut;
};
function xEaseOut():Void {
	var nDistance = (nTarget-this._x);
	if (Math.abs(nDistance)<0.5) {
		this._x = nTarget;
		delete this.onEnterFrame;
	} else {
		this._x += nDistance*0.2;
	}
	trace(this._x);
}


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

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   onEnterFrameの動作 rindo 2006-5-26 17:42
     Re: onEnterFrameの動作 mayor 2006-5-26 18:20
       Re: onEnterFrameの動作 rindo 2006-5-26 19:06
         Re: onEnterFrameの動作 mayor 2006-5-26 19:17
           Re: onEnterFrameの動作 rindo 2006-5-26 23:47
     Re: onEnterFrameの動作 youich 2006-5-27 1:04
       Re: onEnterFrameの動作 rindo 2006-5-27 10:00
         Re: onEnterFrameの動作 rindo 2006-5-28 18:56
           Re: onEnterFrameの動作 mayor 2006-5-28 19:41
             Re: onEnterFrameの動作 rindo 2006-5-28 20:32
               Re: onEnterFrameの動作 Fumio 2006-5-28 20:46
                 Re: onEnterFrameの動作 rindo 2006-5-28 21:12
                 Re: onEnterFrameの動作 rindo 2006-5-28 21:16
                   Re: onEnterFrameの動作 rindo 2006-5-31 11:10
                   » Re: onEnterFrameの動作 Fumio 2006-6-1 11:59
                       Re: onEnterFrameの動作 rindo 2006-6-1 18:38
           Re: onEnterFrameの動作 Fumio 2006-5-28 20:02

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