<?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">unloadapplication</samp> 或 <samp class="codeph">removeapplicationClip</samp> 移除內容之前，呼叫 <samp class="codeph">removeListener</samp> 移除任何作用中的偵聽程式。 如果在取消載入影片剪輯時，有任何的 ActionScript 函數仍在參照 SWF 資料，則 Flash 不會回收 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">call</samp> 而不要使用 <samp class="codeph">apply</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 開發人員在編譯 SWF 程式碼之前，會使用前置處理器軟體將路徑縮短為唯一識別碼，例如 <samp class="codeph">58923409876.functionName</samp>。</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="此頁面位於全球資訊網" href="http://help.adobe.com/zh_TW/DeviceCentral/1.0/WSD7F8E1A9-680A-4000-9BA9-D7B01FDD7ECD.html">此頁面位於全球資訊網</a></li></ul>
												
											</div>
											<br clear="both" />
										</div>
									</div>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
		<br clear="both" />
	</body>
</html>