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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ムービークリップの再利用
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
koppe
Åê¹ÆNo.50142
投稿日時: 2013-12-13 22:37
半人前
居住地:
投稿: 57
使用環境:
WinXPsp3,Flashcs4
ムービークリップの再利用
お世話になっております。

スマートフォン向けに AIR3.9 for Android を使用してリズムゲームを製作しています。

PC上では問題ないのですが、スマートフォンでは一部処理落ちが発生しています。(24fps)
(ターゲットのスマートフォンは2年前の n-06c medias)

注意して見ると、どうもノートを new した時が原因なようでしたので、
ムービークリップを再利用しようと考えています。

しかし具体的にどうすればベストなのか良くわかりません。

最適な方法はございませんでしょうか?
よろしくお願いします。

http://www.redgame2.com/test/

メインタイムライン
var note:MovieClip;//代入用MC

function onNoteOn(e:SiONTrackEvent):void {
	if (e.note==60) {//シングルノート
		note=new note51_();
		addChild(note);
	}
	if (e.note==62) {
		note=new note52_();
		addChild(note);
	}
	if (e.note==65) {
		note=new note53_();
		addChild(note);
	}
	if (e.note==67) {
		note=new note54_();
		addChild(note);
	}
	if (e.note==61) {//ダブルノート
		note=new note51b_();
		addChild(note);
	}
	if (e.note==63) {
		note=new note52b_();
		addChild(note);
	}
	if (e.note==66) {
		note=new note53b_();
		addChild(note);
	}
	if (e.note==68) {
		note=new note54b_();
		addChild(note);
	}
}


noteの最終フレーム
stop();
MovieClip(parent).removeChild(this);
野中文雄
Åê¹ÆNo.50143
投稿日時: 2013-12-15 6:08
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ムービークリップの再利用
環境によって異なる動作について、これだけの情報で「ベスト」や「最適な方法」をお答えすることは、おそらく不可能です。

まず、ひとつの方向としては、理屈で無駄な処理を徹底的に削ります。たとえば、ある参照値(e.note)が特定の値(たとえば60)であった場合、その他の値(たとえば62)になることはありえません。if文の羅列でなく、else ifを使われるべきです。そうした無駄をすべて省いたうえで、問題となる処理を絞り込むべきでしょう。

あるいは逆に、関係のない処理をすべて除いて、問題となる処理のみのサンプルをつくってご質問されるのがよいと思われます。

いずれにしても、一般に魔法のようなベストの方法はありません。特定の環境の特定の場合に工夫の余地があるだけです。「再利用」は最適化のひとつのポイントです。けれども、その「利用」がどの程度あるのかわからなければお答えのしようはありません。


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

koppe
Åê¹ÆNo.50144
投稿日時: 2013-12-16 5:13
半人前
居住地:
投稿: 57
使用環境:
WinXPsp3,Flashcs4
Re: ムービークリップの再利用
現在ノートを出す度に new しておりますが、これはすぐに用なしになってしまいます。そして再び必要になりますが、再度 new せずにすむ方法は無いでしょうか?

調べたところ「オブジェクトプーリング」といった事が出来るようですが、これは

1/ある程度の必要と思われるインスタンスを作って配列に入れておく
2/必要な時に取り出して再生する
3/用が済むと1フレーム目に戻して停止する
3/配列に戻す

といったことを行う認識でいいのでしょうか?
同じことを別の方法で負荷を少なく出来る方法があれば、教えてください。(もちろん理屈上で結構です)
野中文雄
Åê¹ÆNo.50145
投稿日時: 2013-12-16 13:47
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ムービークリップの再利用
以下をご参照ください。なお、署名のサムネイルは拙著紹介ページにリンクしており、07-05「オブジェクトは使い回した方がお得」に解説を書きました。

gihyo.jp「ビットマップのキャッシュとオブジェクトの使い回し
gihyo.jp「オブジェクトの使い回しとアニメーション素材の変更
*JavaScriptについての説明ですが、考え方は同じです。
Adobe「オブジェクトプーリング


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

koppe
Åê¹ÆNo.50146
投稿日時: 2013-12-18 1:47
半人前
居住地:
投稿: 57
使用環境:
WinXPsp3,Flashcs4
Re: ムービークリップの再利用
なるほど!
解りやすい解説されてますね。

試してみます。ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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