靠餐! 為何打一些字後點按根據路邊社綜合很多人的說法:
記憶體不夠用啦, 無法建立程式碼提示快取(Cache; 讀做 cash; 跟"現金"同音; 不是讀成 catch 喔!),
因為你那個 .fla 檔案所放的目錄中有太多檔案(包括別的子目錄)!
真的是靠餐ㄟ .. 這是啥鳥理由? 旁邊目錄內很多檔案也不行?!
解決方法:
(a)趕快先存檔以免白做工
(b)關閉 Flash
(c)找一個旁邊沒人的所在: 新建立一個空的目錄(在任何地方都可以)
(d)把你的 Flash .fla 檔案以及相關的檔案搬到那個空目錄
(e)重新啟動 Flash 並打開在該新目錄的 Flash .fla 檔案
|
|
好了! |
|
Sinppet 意思是片段, 碎片;
snip 意思是剪下, pet 意思是寵物;
Top
如何自製按鈕?
在 Flash 中的按鈕元件(Button Symbol)其實是特殊的影片片段, 含有四個影格,
分別是一般、滑入、按下,以及感應區。通常不必管感應區的影格,
當然,如果你要讓滑鼠感應區與實際按鈕位置不同, 則可以在感應區影格故意畫不同區域 !
以下以 "我該有幾分" 這按鈕為例,其他可以在元件庫內用 "重製" 再修改!
(a)按下 Ctrl_F8 表示要建立新元件(Symbol)
當然要選按鈕,用畫矩形工具弄成圓圓的角,
用 T 文字工具寫字, 建議分開放不同圖層 !
(b)滑入時 按鈕顏色與文字顏色 都要改!
(c)按下的影格必須全選後用鍵盤往下鍵把整個圖案往下移動 5 像素 (Pixal)!
按鈕顏色與文字顏色也都要改!
另外, 順便看看如何用 DreamWeaver 製作網頁用的"動態式按鈕"(其實就是偷換圖片)
Top
拖拉物件放掉後如何知道放在啥東西上?
很多人會以為這是碰撞偵測(collision detection), 其實不是!
這只是看看你停止拖拉(stopDrag)之後, 到底把物件放在哪個"顯示物件容器"上,
所以正確的做法是檢查你的 dropTarget, 例如:
if( haha_mc.dropTarget.parent.name == "backware") {
// do something
}
請注意, 不要寫成
if( haha_mc.dropTarget.name == "backware") ...
這樣永遠不會查得到! 原因是它有"容器"的概念!
甚至, 如果 target 物件很複雜, 你可能要寫成以下這樣才查得到:
if( haha_mc.dropTarget.parent.parent.name == "backware") {
// do something
}
點這看 Adobe AS3 flash.display.DisplayObject 顯示物件類別的 參考手冊
點這看 Adobe AS3 flash.display.DisplayObjectContainer 顯示物件容器類別的 參考手冊
|
碰撞偵測 hitTestObject(物件) 與 hitTestPointer(X座標, Y座標)
在 AS2 時代的 hitTest( ) 函數到了 AS3 被拆開為兩個函數:
hitTestObject(物件); 與 hitTestPointer(X座標, Y座標);
hitTestObject: 判斷影片片段和指定物件的的範圍框是否有重疊或相交。
因為其實物件都是方形範圍, 所以有時看起來沒碰撞也會被偵測為已經撞到! 範例:
if( my_mc.hitTestObject( your_mc ) {
// 撞到了, do something
}
hitTestPoint: 顧名思義, 只偵測一個點是否在物件的形狀範圍內;
這時你可以給第三個參數為 true 以便真的只偵測有像素部份, 例如:
if( my_mc.hitTestPointer( mouseX, mouseY, true) {
// do something
}
但是這只對於向量圖有效, 如果是點陣圖(bitmap; .bmp檔案)則沒有用, 仍是偵測方型範圍。
這是因為點陣圖的圖檔資料中並沒有記錄何處是真的有資料, 所有的0與1都是圖的資料, 無法分辨!
更多關於碰撞偵測的範例與進階討論, 請點以下網址連過去看:
http://sierakowski.eu/list-of-tips/39-collision-detection-methods-hittest-and-hittestobject-alternatives.html
以下是來自該網頁的範例:
Corey O'Neil's Collision Detection Kit...
I think this one is currently the most popular...
You can download it from
here: http://code.google.com/p/collisiondetectionkit/downloads/list.
It's very easy to implement, very efficient and works great.
The documentation with simple examples is available
here: http://www.coreyoneil.com/Flash/CDK/documentation/
I have modified my code from the first project again.
|
|
如何使用 ActionScript 範例 (Flash As3)
參考:
http://help.adobe.com/zh_TW/as3/dev/WS9b644acd4ebe5999-2734bf3c124372a52ff-8000.html 瞭解特定類別和方法運作方式的最佳方法之一,就是執行 ActionScript 3.0 程式碼範例。您可以根據使用的裝置或目標裝置,以不同方式使用範例。
範例類型ActionScript 3.0 程式碼範例的類型:
程式碼片段範例程式碼片段看起來如下: var x:int = 5; trace(x); // 5 程式碼片段包含的程式碼,只是用於展示一種想法。它們通常不會包含套件或類別陳述式。 類別範例很多範例顯示完整 ActionScript 類別的原始碼。類別範例看起來如下: package {
public class Example1 {
public function Example1():void {
var x:int = 5;
trace(x); //5
}
}
}
類別範例的程式碼包含一個套件陳述式、類別宣告以及一個建構函式。 包含多個原始碼檔案(Source file)的實際範例《ActionScript 3.0 開發人員指南》中的很多主題會以實際範例做為總結,這些範例顯示如何在實際環境中使用特定的 ActionScript 功能。這些範例通常內含多個檔案,其中包括:
實際範例一般會以 ZIP 封存檔案提供。 開發人員指南的範例 ZIP 檔案清單 Flash Professional CS5 和 Flex 4 的 ZIP 檔案 (請從 www.adobe.com/go/learn_programmingAS3samples_flash_tw 下載) 包含下列範例:
在「Flash 開發人員中心」和「Flex 開發人員中心」中也可以找到很多與「快速入門」文章有關的實際範例。 在 Flash Professional 執行 ActionScript 3.0 範例使用下列其中一個程序 (視範例類型而定) 可執行使用 Flash Professional 的範例。 在 Flash Professional 執行程式碼片段範例在 Flash Professional 執行程式碼片段範例:
在 Flash Professional 執行類別範例在 Flash Professional 執行類別範例:
在 Flash Professional 執行實際範例實際範例一般會以 ZIP 封存檔案提供。使用 Flash Professional 執行實際範例:
在 Flash Builder 執行 ActionScript 3.0 範例使用下列其中一個程序 (視範例類型而定) 可執行使用 Flash Builder 的範例。 在 Flash Builder 執行程式碼片段範例在 Flash Builder 執行程式碼片段範例:
在 Flash Builder 執行類別範例在 Flash Builder 執行類別範例:
在 Flash Builder 執行實際範例實際範例一般會以 ZIP 封存檔案提供。使用 Flash Builder 執行實際範例:
在行動裝置執行 ActionScript 3.0 範例您可以在支援 Flash Player 10.1 的行動裝置執行 ActionScript 3.0 程式碼範例。不過,一般您可以執行程式碼範例,便能得知特定類別和方法的運作方式。在這種情況下,在桌上型電腦之類的非行動裝置執行範例。在桌上型電腦上,您可以在 Flash Professional 或 Flash Builder 使用 trace 陳述式以及其他除錯工具,增加您對於程式碼範例的瞭解。 若您想在行動裝置上執行範例,可以將檔案複製到裝置或網站伺服器。若要將檔案複製到裝置,然後在瀏覽器中執行範例,請執行以下步驟:
若要將檔案複製到網站伺服器,然後在裝置的瀏覽器中執行範例,請執行以下步驟:
舞台大小在行動裝置上執行範例時,您使用的舞台大小會比您使用非行動裝置時要小一些。很多範例不需要特殊的「舞台」大小。建立 SWF 檔案時,請指定裝置適合的「舞台」大小。例如,指定 176 x 208 個像素。 在《ActionScript 3.0 開發人員指南》中,實際範例的用途是說明不同的 ActionScript 3.0 概念和類別。他們的使用者介面設計就是要在桌上型電腦或筆記型電腦上看來美觀又好用。雖然,這些範例可以在行動裝置上執行,不過「舞台」大小和使用者介面設計並不適合很小的螢幕。Adobe 建議您在電腦上執行實際的範例,對 ActionScript 有了相當的瞭解之後,再到行動應用程式中使用特定的程式碼片段。 以文字欄位取代 trace 陳述式在行動裝置上執行範例時,您不會看到範例中的 trace 陳述式輸出。若要瞭解輸出,請建立 TextField 類別的實體。然後。將 trace 陳述式的文字附加至文字欄位的 text 屬性。 您可以使用以下的函數,設定一個文字欄位,以便用於追蹤: function createTracingTextField(x:Number, y:Number,
width:Number, height:Number):TextField {
var tracingTF:TextField = new TextField();
tracingTF.x = x;
tracingTF.y = y;
tracingTF.width = width;
tracingTF.height = height;
// A border lets you more easily see the area the text field covers.
tracingTF.border = true;
// Left justifying means that the right side of the text field is automatically
// resized if a line of text is wider than the width of the text field.
// The bottom is also automatically resized if the number of lines of text
// exceed the length of the text field.
tracingTF.autoSize = TextFieldAutoSize.LEFT;
// Use a text size that works well on the device.
var myFormat:TextFormat = new TextFormat();
myFormat.size = 18;
tracingTF.defaultTextFormat = myFormat;
addChild(tracingTF);
return tracingTF;
}
例如,將此函數新增至文件類別,作為一個私有的函數。 然後,在文件的其他方法中,使用類似下列的程式碼來追蹤資料: var traceField:TextField = createTracingTextField(10, 10, 150, 150);
// Use the newline character "\n" to force the text to the next line.
traceField.appendText("data to trace\n");
traceField.appendText("more data to trace\n");
// Use the following line to clear the text field.
traceField.appendText("");
appendText() 方法只接受一個值當作是參數。這個值是字串 (字串實體或字串常值)。若要列印非字串變數的值,請先將該值轉換為 String。最簡單的轉換方式就是呼叫物件的 toString() 方法: var albumYear:int = 1999;
traceField.appendText("albumYear = ");
traceField.appendText(albumYear.toString());文字大小很多範例使用文字欄位,協助說明概念。有時候,調整文字欄位中的文字大小,可以讓使用者更容易看清楚行動裝置的資料。例如,如果範例使用 myTextField 這個文字欄位實體,請使用以下程式碼變更其文字大小: // Use a text size that works well on the device. var myFormat:TextFormat = new TextFormat( ); myFormat.size = 18; myTextField.defaultTextFormat = myFormat 擷取使用者輸入行動作業系統和瀏覽器會捕捉 SWF 內容不會接收的部分使用者輸入事件。特定行為會視作業系統和瀏覽器而定,但是當您在行動裝置執行範例時,可能會造成無法預期的行為。如需詳細資訊,請參閱 KeyboardEvent 優先順序。 而且,很多範例的使用者介面則是針對桌上型電腦和筆記型電腦而設計。例如,《ActionScript 3.0 開發人員指南》中,大部分的實際範例非常適合在桌上型電腦檢視。因此,在行動裝置螢幕上,有時候看不到完整的舞台。瀏覽器內容的平移能力視瀏覽器而定。再者,這些範例的左右移動是針對捕捉以及處理捲動或左右平移事件而設計。因此,部分範例的使用者介面並不適會在較小的螢幕執行。Adobe 建議您在電腦上執行這些範例,對 ActionScript 有了相當的瞭解之後,再到行動應用程式中使用特定的程式碼片段。 如需詳細資訊,請參閱左右移動和捲動顯示物件。 處理焦點部分範例需要您提供焦點給欄位。 提供焦點給欄位後,您就可以輸入文字或選取按鈕。若要提供欄位焦點,請使用行動裝置的指標裝置,例如觸控筆或您的手指。或者,使用行動裝置的導覽鍵,提供欄位焦點。 若要選取焦點所在的按鈕,請使用行動裝置的「選取」鍵,就像是使用電腦上的 Enter 一樣。在部分裝置上,輕點按鈕兩下就可以選取它。 如需有關焦點的詳細資訊,請參閱管理焦點。 處理滑鼠事件很多範例會偵聽滑鼠事件。在電腦上,例如當使用者使用滑鼠在顯示物件上滾動,或者在顯示物件上按一下滑鼠按鍵後,就會發生這些滑鼠事件。在行動裝置上,觸控筆或手指之類的指標裝置所產生的事件,稱為觸控事件。Flash Player 10.1 會將觸控事件對應至滑鼠事件。這種對應關係可以確保先開發 SWF 內容,再繼續 Flash Player 10.1 的工作。因此,使用指標裝置來選取或拖曳顯示物件時,這些範例仍有效。 效能行動裝置的處理能力比桌上型裝置差。部分消耗大量 CPU 的範例在行動裝置上的執行速度很慢。例如,繪製 API 範例:演算法視覺產生器在進入每一個影格時,會進行大量計算和繪圖。 在電腦上執行此範例會說明各種的繪圖 API。不過,由於效能有限,所以此範例不適合部分的行動裝置。 如需行動裝置效能的詳細資訊,請參閱最佳化 Flash 平台的效能。 最佳作法為行動裝置開發應用程式時,範例並不會將最佳作法納入考量。行動裝置的記憶體與處理能力有限,這一點要特別注意。同樣地,小型螢幕的使用者介面與桌上型電腦顯示器各有不同的需求。如需開發行動裝置應用程式的詳細資訊,請參閱最佳化 Flash 平台的效能。
|