<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
		<link rel="stylesheet" type="text/css" href="content.css" />
		<title>
			モバイルデバイスの Flash Lite コンテンツ向けに ActionScript を最適化
		</title>
<!-- Changed by: , 21-Mar-2006 -->
<script src="help.js" type="text/javascript" language="Javascript" charset="UTF-8">...</script> 
		
		
<script type="text/javascript">
<!--[CDATA[
handleContext(1);
if (use_ie_6_behavior) {
  document.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"content-ie6.css\" />");
}
// ]]-->
</script> 
		
<script src="scripts.js" type="text/javascript" language="Javascript" charset="UTF-8">...</script> <script src="terms.js" type="text/javascript" language="Javascript" charset="UTF-8">...</script> 
	</head>
	<body id="content_body">
<!--googleoff: index-->
<!-- BEGIN PAGE CONTENT WRAPPER -->
		<div id="pneumonic">
			<h1 class="DeviceCentral">DeviceCentral</h1>
		</div>
		<div id="page_content_wrapper">
			<p class="sharedproducts">トピック参照先： </p><p class="sharedproductindicators"><img src="images/flashSharedIndicator.png" title="Flash" /></p>
<!-- BEGIN BREADCRUMBS -->
			<div id="breadcrumb">
<!-- BEGIN BREADCRUMBS -->
				
<div class="nav"><dl class="page"><dd class="prev"><a accesskey="p" class="prev" href="WS139D2B99-B13E-485e-8ED0-E9E2572A00BC.html" title="モバイルデバイスに合わせた Flash Lite フレームの最適化"><img src="images/prev.gif" alt="前へ" /></a></dd><dd class="next"><a accesskey="n" class="next" href="WS4BC3BE1E-4574-4f96-BB90-23BFC3108D34.html" title="モバイルデバイスに適した Flash Lite ファイルメモリの管理"><img src="images/next.gif" alt="次へ" /></a></dd></dl></div><div class="hierarchy"><a href="WS28F6F81C-55B3-4ad5-B632-171637249F5B.html">Adobe Device Central でのコンテンツの作成、プレビュー、テスト</a> /
     <a href="WS3A29C98D-5768-45ea-AB2F-75FAF64078EE.html"><b>モバイルデバイス向けのコンテンツを作成するためのヒント</b></a> 
     </div>

<!-- END BREADCRUMBS -->
			</div>
<!-- END BREADCRUMBS -->
<!-- BEGIN PAGE TITLE -->
<!--googleon: index-->
			<h1>
				モバイルデバイスの Flash Lite コンテンツ向けに ActionScript を最適化
			</h1>
<!--googleoff: index-->
<!-- END PAGE TITLE -->
<!-- BEGIN CONTENT WRAPPER -->
			<div id="content_wrapper">
<!--googleon: index-->
				<div><p>
                        
                        
                        ほとんどのモバイルデバイスには処理速度とメモリの制限があるため、モバイルデバイスで使用する Flash Lite コンテンツ向けに ActionScript を開発する場合、次のガイドラインに従います。</p>
<div class="p">
                        <ul><li>
                              <p>ファイルとコードをできるだけ単純にします。 使用されていないムービークリップや、不要なフレームとコードのループを削除し、フレームが多すぎたり無関係なフレームが含まれることのないようにします。</p>

                           </li>
<li>
                              <p>
                                 <samp class="codeph">FOR</samp> ループを使用すると、条件が繰り返し確認される際にオーバーヘッドが発生するため、処理が遅くなる可能性があります。 条件確認が繰り返されることによりループによるオーバーヘッドが問題になる場合、ループを使用するのではなく、複数の操作を個々に実行します。 コードは長くなりますが、パフォーマンスは改善します。</p>

                           </li>
<li>
                              <p>フレームごとのループは、不要になったら直ちに停止します。</p>

                           </li>
<li>
                              <p>文字列と配列の処理は CPU の使用率が高くなるため、できる限り避けます。</p>

                           </li>
<li>
                              <p>ActionScript の getter メソッドと setter メソッドは他のメソッドの呼び出しよりもオーバーヘッドが多いため、直接プロパティにアクセスするようにします。</p>

                           </li>
<li>
                              <p>イベントを適切に管理します。 イベントを呼び出す前にリスナが存在すること（<samp class="codeph">null</samp> ではないこと）を確認する条件を使用して、イベントリスナの配列をコンパクトに保ちます。 <samp class="codeph">clearInterval</samp> を呼び出してアクティブなインターバルをクリアし、<samp class="codeph">removeListener</samp> を呼び出してアクティブなリスナを削除してから、<samp class="codeph">unloadapplication</samp> または <samp class="codeph">removeapplicationClip</samp> を使用してコンテンツを削除します。 Flash では、ムービークリップをアンロードするときに、ActionScript 関数が SWF データを参照している場合でも、SWF データのメモリは（インターバルやリスナなどから）再収集されません。 </p>

                           </li>
<li>
                              <p>変数が不要になった場合、削除するか <samp class="codeph">null</samp> に設定してガベージコレクションに指定します。 変数を削除すると、不要なアセットが SWF ファイルから削除されるため、実行時のメモリ使用が最適化されます。 変数を <samp class="codeph">null</samp> に設定するよりも、変数を削除する方が適切です。</p>

                           </li>
<li>
                              <p>
                                 <samp class="codeph">removeListener</samp> を呼び出してオブジェクトからリスナを明示的に削除してから、ガベージコレクションを行います。</p>

                           </li>
<li>
                              <p>関数を動的に呼び出し、固定のパラメータ群を渡す場合、<samp class="codeph">apply</samp> ではなく <samp class="codeph">call</samp> を使用します。</p>

                           </li>
<li>
                              <p>名前空間（パスなど）を小さくして、起動時間を短縮します。 パッケージ内の全レベルを <samp class="codeph">IF</samp> 文にコンパイルすると、新しく <samp class="codeph">Object</samp> が呼び出されるため、パスのレベル数が減り時間が短縮されます。 例えば、<samp class="codeph">com.xxx.yyy.aaa.bbb.ccc.funtionName</samp> というレベルのパスは、<samp class="codeph">com.xxx.yyy.aaa.bbb.ccc</samp> にオブジェクトがインスタンス化されます。 Flash の開発者によっては、プリプロセッサソフトウェアを使用して、<samp class="codeph">58923409876.functionName</samp> のようにパスを短くして一意な識別子にしてから、SWF コードをコンパイルします。</p>

                           </li>
<li>
                              <p>同じ ActionScript クラスを使用する複数の SWF ファイルから構成されるファイルの場合、コンパイル時に選択する SWF ファイルからそのクラスを除外します。 こうすることで、ファイルのダウンロード時間と実行時のメモリ必要量を軽減できます。</p>

                           </li>
<li>
                              <p>
                                 <samp class="codeph">Object.watch</samp> と <samp class="codeph">Object.unwatch</samp> を使用しないようにします。これは、オブジェクトプロパティを変更すると、プレーヤーが変更の通知を送信するかどうかを毎回判断する必要があるためです。 </p>

                           </li>
<li>
                              <p>タイムラインのキーフレームで実行する ActionScript コードの完了時間が 1 秒を超える場合、コードを分割して複数のキーフレームで実行するようにします。 </p>

                           </li>
<li>
                              <p>SWF ファイルを発行するときに、コードから <samp class="codeph">trace</samp> 文を削除します。 この場合、パブリッシュ設定ダイアログボックスの「Flash」タブにある「Trace アクションを省略」チェックボックスを選択します。 </p>

                           </li>
<li>
                              <p>継承は、メソッドの呼び出し数を増加させ、より多くのメモリを使用します。実行時には、必要な機能をすべて含むクラスの方が、スーパークラスから一部の機能を継承するクラスよりも効率的です。 そのため、設計時には、クラスの拡張性とコードの効率性のバランスを考慮する必要があります。</p>

                           </li>
<li>
                              <p>SWF ファイルに、カスタムの ActionScript クラス（例えば <samp class="codeph">foo.bar.CustomClass</samp>）を含む別の SWF ファイルをロードし、その SWF ファイルをアンロードすると、クラス定義がメモリ内に残ります。 メモリを節約するには、アンロードした SWF ファイルのカスタムクラスを明示的に削除します。 <samp class="codeph">delete</samp> 文を使用し、<samp class="codeph">delete foo.bar.CustomClass</samp> などの完全修飾クラス名を指定します。</p>

                           </li>
<li>
                              <p>グローバル変数の使用を制限します。これは、グローバル変数が定義されたムービークリップを削除しても、ガベージコレクションに指定されないためです。</p>

                           </li>
<li>
                              <p>Flash のコンポーネントパネルにある標準のユーザインターフェイスコンポーネントを使用しないようにします。 これらのコンポーネントは、デスクトップコンピュータで実行するように設計されており、モバイルデバイス用に最適化されていません。</p>

                           </li>
<li>
                              <p>できるだけ、関数の入れ子を深くしないようにします。</p>

                           </li>
<li>
                              <p>存在しない変数、オブジェクト、関数を参照しないようにします。 デスクトップバージョンの Flash Player と比較すると、Flash Lite 2 では存在しない変数を参照する処理に時間がかかるため、パフォーマンスの大幅な低下につながります。</p>

                           </li>
<li>
                              <p>匿名の構文を使用して関数を定義しないようにします。 例えば、<samp class="codeph">myObj.eventName = function{ ...}</samp> です。 明示的に定義した関数の方が効率的です。例えば、<samp class="codeph">function myFunc { ...}; my Obj.eventName = myFunc;</samp> のようにします。</p>

                           </li>
<li>
                              <p>Math 関数と浮動小数点の数を最小限に抑えます。 このような数値計算ではパフォーマンスが低下します。 Math ルーチンを使用する必要がある場合、値を事前に計算し、変数の配列に格納する方法もあります。 データテーブルから値を取得する方が、実行時に Flash で計算するよりもはるかに高速です。</p>

                           </li>
</ul>

                     </div>
</div>

<!--googleoff: index-->
			</div>
<!-- END CONTENT WRAPPER -->
		</div>
<!-- END PAGE CONTENT WRAPPER -->
		<br clear="both" />
		<div id="related">
			<div class="t">
				<div class="b">
					<div class="l">
						<div class="r">
							<div class="bl">
								<div class="br">
									<div class="tl">
										<div class="tr">
											<div id="related_in">
												<h3>
<script type="text/javascript">document.write(terms_Related_Information);</script> 
												</h3>
												
												<h4>
<script type="text/javascript">document.write(terms_AHV_HELP_RESOURCE_CENTER);</script> 
												</h4>
												<ul class="link-list"><li class="icon external"><a target="_blank" title="Web 上のページ" href="http://help.adobe.com/ja_JP/DeviceCentral/1.0/WSD7F8E1A9-680A-4000-9BA9-D7B01FDD7ECD.html">Web 上のページ</a></li></ul>
												
											</div>
											<br clear="both" />
										</div>
									</div>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
		<br clear="both" />
	</body>
</html>