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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     for文をあまり使わずに複数の画像を動かしたい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kuririn
Åê¹ÆNo.40841
投稿日時: 2008-11-25 3:58
新米
居住地:
投稿: 5
使用環境:
for文をあまり使わずに複数の画像を動かしたい
今、90枚の画像が入った90個のムービークリップを使ったサイトを作っているのですが、どうも分からない部分があるので、質問させていただきます。
今は以下のスクリプトを書いています。

import caurina.transitions.Tweener;

this.stop();


count = 1;
count2 = 1;


function moveFunc() {

	for (var i = 1; i<=90; i++) {
		count++;
		if (count<=2000) {
			var s:Number = Math.floor(Math.random()*200);
			Tweener.addTween(_root["pict"+i],{_xscale:s, _yscale:s, time:0.5, transition:"linear"});

		}
		if (count == 2000) {
			Tweener.addTween(this,{_alpha:100, time:0.05, transition:"linear", delay:0.05, onComplete:moveJapan});
		}
	}
}
function moveJapan() {
	for (var i = 1; i<=90; i++) {
		var load2_mc:MovieClip = _root["n"+i];
		var load_mc:MovieClip = _root["pict"+i];
		var zahyou = load2_mc._x;
		var zahyou2 = load2_mc._y;



		Tweener.addTween(load_mc,{_x:zahyou, _y:zahyou2, time:0.5, transition:"linear", onComplete:moveFunc2});
	}
}
function moveFunc2() {

	for (var i = 1; i<=90; i++) {
		count2++;
		if (count2<=2000) {
			var s:Number = Math.floor(Math.random()*200);
			Tweener.addTween(_root["pict"+i],{_xscale:s, _yscale:s, time:0.5, transition:"linear"});

		}
		if (count2 == 2000) {
			Tweener.addTween(this,{_alpha:100, time:0.05, transition:"linear", delay:0.05, onComplete:moveJapan});
		}
	}
}

this.onEnterFrame = moveFunc;


それぞれに画像が入っている「pict1?90」までのムービークリップをtweenerでそれぞれランダムに数回拡大・縮小させて、数回拡大・縮小したら、空の「n1?90」までのムービークリップが配置してある場所にそれぞれ移動させ、再び拡大・縮小させています。
しかし、for文をたくさん書いてあるので、大変動きが重くなってしまいました。
いちいちfor文を読み込まずに動かす事ができる方法はありますでしょうか?

よろしくお願いします。
TJFORD
Åê¹ÆNo.40843
投稿日時: 2008-11-25 12:06
半人前
居住地: Tokyo
投稿: 42
使用環境:
:Flash CS3
Re: for文をあまり使わずに複数の画像を動かしたい
こちらのスクリプトですと、毎フレーム90回addTweenを呼び出しているのではないでしょうか?
あにぃ
Åê¹ÆNo.40844
投稿日時: 2008-11-25 14:14
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: for文をあまり使わずに複数の画像を動かしたい
for文が重たいわけではないかと思いますけど。。。
Tweener.addTweenを毎フレーム90回もしていたら、重たいのは当たり前な気がしますが…。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

kuririn
Åê¹ÆNo.40845
投稿日時: 2008-11-25 15:14
新米
居住地:
投稿: 5
使用環境:
Re: for文をあまり使わずに複数の画像を動かしたい
返信ありがとうございます。
確かにこれじゃあ重たくなる訳ですね。
そこで質問なのですが、addTweenを毎回呼び出さずに動かしたいのですが、
何かいい方法はありますでしょうか?

質問ばかりですみません。
よろしくお願いします。
nekoyuki
Åê¹ÆNo.40847
投稿日時: 2008-11-25 19:34
半人前
居住地: 大阪府
投稿: 48
使用環境:
FLASH CS3 Professional
XP Pro(SP2)
Re: for文をあまり使わずに複数の画像を動かしたい
onEnterFrameを使わず
addTweenのonCompleteを使ってその都度周りの状態を見て遷移できませんか??
onCompleteのメソッドでカウント変数を加算するなど。

この部分ですが0.5秒経つまで待たずに毎フレーム、目的地を変える命令をしているのでほとんど無意味に思えます。
0.5秒かけてアニメショーンを行うわけですから
完了するまで再度addTweenを使うべきではないです。

var s:Number = Math.floor(Math.random()*200);
Tweener.addTween(_root["pict"+i],{_xscale:s, _yscale:s, time:0.5, transition:"linear"});
あにぃ
Åê¹ÆNo.40848
投稿日時: 2008-11-25 20:08
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: for文をあまり使わずに複数の画像を動かしたい
nekoyukiさんの方法を試すとこんな感じでしょうか。
import caurina.transitions.Tweener;
//拡大、縮小を繰り返す回数
var Max:Number = 5;
//一発目の拡大縮小
for (var i = 1; i<=90; i++) {
	target = _root["pict"+i];
	target.no = i;
	target.cnt = 0;
	s = Math.floor(Math.random()*200);
	Tweener.addTween(_root["pict"+i], {_xscale:s, _yscale:s, time:0.5, transition:"linear", onComplete:moveFunc});
}
this.stop();
/*******************
拡大縮小しようではないか
*******************/
function moveFunc() {
	if (this.cnt == Max) {
		Tweener.addTween(this, {_alpha:100, time:0.05, transition:"linear", delay:0.05, onComplete:moveJapan});
	} else {
		this.cnt++;
		s = Math.floor(Math.random()*200);
		Tweener.addTween(this, {_xscale:s, _yscale:s, time:0.5, transition:"linear", onComplete:moveFunc});
	}
}
/*******************
移動しようではないか
*******************/
function moveJapan() {
	this.cnt = 0;
	zx = _root["n"+this.no]._x;
	zy = _root["n"+this.no]._y;
	Tweener.addTween(this, {_x:zx, _y:zy, time:0.5, transition:"linear", onComplete:moveFunc});
}

ちょうど時間あったので書いてみました。
試してもいないので動くかは保障しません。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

kuririn
Åê¹ÆNo.40849
投稿日時: 2008-11-25 21:46
新米
居住地:
投稿: 5
使用環境:
Re: for文をあまり使わずに複数の画像を動かしたい
ありがとうございます!!
うまく動きました!!
本当にありがとうございました!!

そして、もう1つ質問よろしいでしょうか?
90個ある中の1つをクリックしたら、全体の拡大・縮小はストップし、
クリックしたムービークリップ以外はステージの外にはじき出されて、
クリックしたムービークリップだけがステージに残り、拡大されるという動きをつけたいのですが、良い方法はありますでしょうか?

何度も何度も質問申し訳ありません。
よろしくお願いします。
あにぃ
Åê¹ÆNo.40850
投稿日時: 2008-11-25 22:42
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: for文をあまり使わずに複数の画像を動かしたい
質問の域ではなく、丸投げになってますよ。
とりあえずはご自分で作ってみてはいかがですか?


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

kuririn
Åê¹ÆNo.40852
投稿日時: 2008-11-26 0:19
新米
居住地:
投稿: 5
使用環境:
Re: for文をあまり使わずに複数の画像を動かしたい
そうですね!すいません。
自分で挑戦してみようと思います。
またわかなくなったら聞きにきますね。

本当にありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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