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

パスワード:


パスワード紛失

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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
slash
Åê¹ÆNo.13142
投稿日時: 2004-12-9 11:13
新米
居住地: 東京
投稿: 12
使用環境:
MacOS10.3.8 Flash MX2004 PRO
MAcOS9 Flash MX
コードをシンプルに
どうもSLASHです。
投稿は、MLの時、何度かさせてもらったんですが、こちらになってからははじめてです。よろしくお願いします。

本題ですが、いつもスクリプトを適当に、ガーって書いてたのですが,処理がかさむので、forを使って、まとめようとおもったのですが、うまくいきません。
ご指導お願いします。
//mnavi1
this.navi.mnavi1.onEnterFrame = function() {
	if (snavi == 1) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi2
this.navi.mnavi2.onEnterFrame = function() {
	if (snavi == 2) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi3
this.navi.mnavi3.onEnterFrame = function() {
	if (snavi == 3) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi4
this.navi.mnavi4.onEnterFrame = function() {
	if (snavi == 4) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi5
this.navi.mnavi5.onEnterFrame = function() {
	if (snavi == 5) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi6
this.navi.mnavi6.onEnterFrame = function() {
	if (snavi == 6) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi7
this.navi.mnavi7.onEnterFrame = function() {
	if (snavi == 7) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};
//mnavi8
this.navi.mnavi8.onEnterFrame = function() {
	if (snavi == 8) {
		this.gotoAndStop(2);
	} else {
		this.gotoAndStop(1);
	}
};


こういった処理をfor文でまとめようと
for (i=1; i<=8; i++) {
	mnavis = "manavi"+i;
	this.navi[mnavis].onEnterFrame = function() {
		if (snavi == i) {
			this.navi.mcName.gotoAndStop(2);
		} else {
			this.navi.mcName.gotoAndStop(1);
		}
	};
}

と言った具合にまとまめてみたのですが、うまくいきません。

for文の中に、onEnterFrameって、書けますか?
また他に、こう書いたらいいよって感じのご指導お願いします。

よろしくおねがいします。

SLASH
ひろゆき
Åê¹ÆNo.13144
投稿日時: 2004-12-9 12:08
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: コードをシンプルに
えっと、はずしているかもしれませんが、
for (i=1; i<=8; i++) {
	this.navi["manavi"+i].onEnterFrame = function() {
		if (snavi == i) {
			this.gotoAndStop(2);
		} else {
			this.gotoAndStop(1);
		}
	};
}
では、いかがでしょう?
ゲスト
Åê¹ÆNo.13146
投稿日時: 2004-12-9 12:22
Re: コードをシンプルに
こんにちは。
私もはずしているかもしれませんが、
for (i=1; i<=8; i++) {
   mnavis = "manavi"+i;
   this.navi.mnavis.onEnterFrame = function() {    //←ドットドット
      if (snavi == i) {
         this.navi.mcName.gotoAndStop(2);
      } else {
         this.navi.mcName.gotoAndStop(1);
      }
   };
}
//なんかタブが抜けちゃったんで自分で手作業で空白あけました。(><)
では?

ひろゆきさんのと組み合わせて完成♪とかだったらいいなぁ?
(ひろゆきさん、クリスマス猫ちゃんいい感じですね
ひろゆき
Åê¹ÆNo.13148
投稿日時: 2004-12-9 12:33
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: コードをシンプルに
あやしいのは、mnavis、gotoAndStop、snavi あたりだと思うのですが。
そのあたりをチェックしてみてはいかがでしょう?


>erikoさん
12月だけね。
ごんざえもん
Åê¹ÆNo.13150
投稿日時: 2004-12-9 12:48
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: コードをシンプルに
同じくはずしているかもしれませんが
引用:

slashさんは書きました:
for (i=1; i<=8; i++) {
	mnavis = "mnavi"+i;
	this.navi[mnavis].onEnterFrame = function() {
		if (snavi == i) {
			this.gotoAndStop(2);
		} else {
			this.gotoAndStop(1);
                  }
	};
}


----------------
gonzaemon

永井勝則
Åê¹ÆNo.13151
投稿日時: 2004-12-9 12:58
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: コードをシンプルに
永井勝則です。
この一連のコードの基本は
this.navi.mnavi1.onEnterFrame = function() {
    if (snavi == 1) {
               this.gotoAndStop(2);
    } else {
                this.gotoAndStop(1);
    }
};

だと思うので、基本となるムービークリップにクラス定義をして、条件とかgotoAndStop()の行き先などを、そのプロパティとして設定する、という手法もありかと思います。
さらにそれをコンポーネント化すると、各プロパティはプロパティインスペクタで指定できるようになり、汎用性が高まります。


----------------
永井勝則:
himco.jp :

空野大二郎
Åê¹ÆNo.13152
投稿日時: 2004-12-9 13:15
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: コードをシンプルに
 まいど。
 ずいぶんスレッドが進んでしまいましたが、とりあえずしょしんにもどって。

 SLASHさんのスクリプトも、インスタンス名が正しければonEnterFrameだけは作動します。
 ごんざえもんさんのしてきどおりです。
引用:
slashさんは書きました:

こういった処理をfor文でまとめようと
for (i=1; i<=8; i++) {
	//mnavis = "manavi"+i;
	mnavis = "mnavi"+i;
	this.navi[mnavis].onEnterFrame = function() {
		if (snavi == i) {
			this.navi.mcName.gotoAndStop(2);
		} else {
			this.navi.mcName.gotoAndStop(1);
		}
	};
}


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

slash
Åê¹ÆNo.13153
投稿日時: 2004-12-9 13:21
新米
居住地: 東京
投稿: 12
使用環境:
MacOS10.3.8 Flash MX2004 PRO
MAcOS9 Flash MX
Re: コードをシンプルに
いつも、よく拝見する方々に返信してもらってうれしいです。
ボクが,書いたコード自体がまちがってたみたいですいません。
引用:
for (i=1; i<=8; i++) {
mnavis = "manavi"+i;
this.navi[mnavis].onEnterFrame = function() {
if (snavi == i) {
this.navi.mcName.gotoAndStop(2);
} else {
this.navi.mcName.gotoAndStop(1);
}
};
}

mnavis = "manavi"+i;

mnavis = "mnavi"+i;
ですね。
gotoの前のthis.navi.mcNameもおもいっきりまちがってしまってました。
ひろゆきさんが書いてるように、 onEnterFrameの中なんで、thisでいいですよね。
それをふまえて、
for (i=1; i<=8; i++) {
   mnavis = "mnavi"+i;
   this.navi.mnavis.onEnterFrame = function() { 
      if (snavi == i) {
         this.gotoAndStop(2);
      } else {
         this.gotoAndStop(1);
      }
   };
}

にしたのですが、やはり動きませんでした。
また皆様のコードもいろいろ試してみたのですが、うごきませんでした。
まとめずにやると動くので,パス等は、これであってるとおもうのですが。
ひろゆき
Åê¹ÆNo.13154
投稿日時: 2004-12-9 13:26
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: コードをシンプルに
えっと、これまた外してるかもしれませんが、
残っているのは、これだと思うんですが。

this.snavi == i

とかだと、ダメですか?
空野大二郎
Åê¹ÆNo.13155
投稿日時: 2004-12-9 13:30
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: コードをシンプルに
 まいど。
 あと、すべてのonEnterFrameでは、i=9;となっています。

 そこで、ごんざえもんさんのスクリプトをお借りして、
自分の番号を取得することをオススメします。
(ごんざえもんさん、ちょいとしつれい。)
引用:
slashさんは書きました:
for (i=1; i<=8; i++) {
	mnavis = "mnavi"+i;
	this.navi[mnavis].target_str = i;
	this.navi[mnavis].onEnterFrame = function() {
		//if (snavi == i) {
		if (snavi == this.target_str) {
			this.gotoAndStop(2);
		} else {
			this.gotoAndStop(1);
                  }
	};
}



 onEnterFrameのsnaviがどこを参照しているのか確認しましたが、
いちおう、for文を記述したフレームスクリプトのsnaviを参照していました。
 (_rootにfor文なら、_root.snaviを参照。)
 どこを参照しているのか、ドキドキのスクリプトですね。


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

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

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