2011年5月31日 星期二

在AS2_如何將元件庫裡的元件與外部as檔綁定

這個主題對學AS3的人來講可能沒甚麼用處,
有時不小心做到這種CASE,上到這種班,倒是可能減少一些摸索時間。

※在AS2_如何將元件庫裡的元件與外部as檔綁定
※在AS2_沒有addChild()方法,那就attachMovie()吧!!! 


(一) 在AS3, FLA可以輕易從屬性面板綁定主要外部類別檔(文件物件類別)



(二)在AS3,從元件庫信手就將元件與外部類別檔綁定



(三) 在AS2, FLA無法透過屬性面板綁定主要外部類別檔 (下圖: 編輯圖示是灰色的,表示無法使用


(四) 幸好,在AS2,仍可透點選元件右鍵選單/屬性, 在[元件屬性面板]裡設定所欲綁定的外部類別


(五) 雖然[類別]欄位右側的編輯圖示也是灰色的,代表無法使用它指向外部類別或新建類別.
但,類別欄位的確可以填寫外部類別名稱



(六) 回到元件庫畫面, 會發覺,看不到剛所設定的類別名稱,但也的確已經設定完成.
這裡的test元件,只是個色塊,已經與ScaleInstance類別綁定. 


(七) 所以,建立一個測試用as2類別檔,與上述設定同名:ScaleInstance類別
ScaleInstance類別的內容是將與其綁定test元件,縮放及設定位置.


(八) 在FLA第一影格,填入以下這行CODE,將元件庫裡的test元件attachMovie到舞台
並將這這新建實體指定給ScaleInstance資料類型的aaa變數
var aaa:ScaleInstance = this.attachMovie("test","aaa",this.getNextHighestDepth());


(九) 如此將發現,aaa實體依照類別規劃,已經縮放並在指定座標上出現






2011年5月26日 星期四

根據特定字元劈開字串回傳為陣列●將陣列元素之間加入特定字元回傳為字串

String.split()方法
Array.join()方法
※ 目的是要把 var souceStr:String = "011+886+2+2737-9999"; 這裡的電話號碼字串中的"+"和"-"去除掉

package  {

import flash.display.MovieClip;

public class StringSplitArrayJoin_1000525 extends MovieClip {

public function StringSplitArrayJoin_1000525() {
var souceStr:String = "011+886+2+2737-9999";
var specialChars:Array = new Array("+","-");

var newStr:String = this.charsHandler(souceStr,specialChars);

var newNumber = new Number(newStr);
trace("newNumber : " + newNumber); //newNumber : 11886227379999
return;
}

public function charsHandler(_souceStr:String,_specialChars:Array):String{
var _newStr:String = _souceStr;
var arrLength:int = _specialChars.length;
for(var i:int=0; i < arrLength; i++){
_newStr = _newStr.split(_specialChars[i]).join("");
}
return _newStr;
}
}
}

2011年5月23日 星期一

DisplayObject.loaderInfo屬性參照LoaderInfo物件__取得目前swf的URL

DisplayObject.loaderInfo屬性傳回LoaderInfo物件
this.root.loaderInfo.url取得目前swf的URL,呈現在TextField
1000523_DisplayObject.loaderInfo.swf


package  {

import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

public class DisplayObject_loaderInfo_1000523 extends MovieClip {

public function DisplayObject_loaderInfo_1000523() {
/*flash.display.DisplayObject.loaderInfo屬性,傳回loaderInfo物件*/
/*var loaderPosStr:String = this.loaderInfo.url;  <---這樣也行*/
var loaderPosStr:String = this.root.loaderInfo.url;
this.createTF(decodeURIComponent(loaderPosStr));
return;
}

private function createTF(_loaderPosStr:String):void{
var tfFormat:TextFormat = new TextFormat();
tfFormat.size = 18;
tfFormat.color = 0x000088;

var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.wordWrap = true;
tf.multiline = true;
tf.defaultTextFormat = tfFormat;
tf.width = 450;
tf.x = 50;
tf.y = 50;
this.addChild(tf);
tf.text = _loaderPosStr;
return;
}
}

}

Loader.contentLoaderInfo屬性參照LoaderInfo物件__※取得目前swf或載入器swf的URL

Loader.contentLoaderInfo屬性
LoaderInfo.loaderURL屬性
透過 new Loader().contentLoaderInfo.loaderURL 抓取目前swf的URL位址,呈現在TextField
全域decodeURIComponent()函數
public function decodeURIComponent(uri:String):String
將已編碼的 URI 組件解碼成字串。傳回字串,當中所有先前由 encodeURIComponent 函數逸出的字元,都會還原成其未編碼的形式。HELP
※使用或不使用decodeURIComponent():在本機由 Flash CTRL+ENTER 或直接執行swf,可分辨其中不同。

1000523_Loader.contentLoaderInfo.loaderURL.swf


package  {

import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.display.Loader;
import flash.text.TextFormat;

public class LoaderURL_1000523 extends MovieClip {

public function LoaderURL_1000523() {
this.getLoaderURL();
return;
}
private function getLoaderURL():void{
var loaderPosStr:String = new Loader().contentLoaderInfo.loaderURL;
this.createTF(decodeURIComponent(loaderPosStr));
return;
}

private function createTF(_loaderPosStr:String):void{
var tfFormat:TextFormat = new TextFormat();
tfFormat.size = 18;
tfFormat.color = 0xffff00;

var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.wordWrap = true;
tf.multiline = true;
tf.defaultTextFormat = tfFormat;
tf.width = 450;
tf.x = 50;
tf.y = 50;
this.addChild(tf);
tf.text = _loaderPosStr;
return;
}
}

}

2011年5月17日 星期二

Star Trek Voyager 星艦迷航(基地防衛戰)_半成品試玩(作品)

[Star Trek Voyager 星艦迷航(基地防衛戰)_半成品測試](Flash AS3 Game)
跳出視窗760x594px原寸瀏覽(CLICK ME)


Star Trek Voyager 星艦迷航(基地防衛戰)_遊戲規則與操作說明

(一) 自機操控:
A. 自機旋轉方向:自機跟隨滑鼠指標(mouseMove)位置旋轉。
B. 自機武器發射:滑鼠點擊與放開(mouseDown、mouseUp),皆觸發武器朝滑鼠指標點擊方向發射。
C. 自機特殊武器發射:每當SW(特殊武器積分)累積至20分,可按 [ SPACE鍵 ] 發射。稱為「終究一擊」。

(二) 攻擊與「You Win」:
A. 自機武器擊中一架敵機:遊戲SCORE得100分、SW(特殊武器積分)加2分。
B. 自機武器擊中一顆敵機砲彈:遊戲SCORE得150分。
C. 自機發射「終究一擊」:「終究一擊」期間,目前場景上與緊接著飛入的所有敵機,都將自爆。自機則進入無敵狀態,不懼敵機砲彈。發射後,SW(特殊武器積分)減20分
D. 當所有敵機巡航攻擊結束,自機仍有一架次以上存活,則玩家勝利,跳出「You Win」畫面。可按「replay」按鈕重新開始遊戲流程。

(三) 防禦與「Game Over」:
A. 自機遭敵機砲彈擊中1次:HP Bar失血50%。
B. 自機遭敵機砲彈擊中2次:HP Bar歸0,即損失一架自機。
C. 每損失一架自機:自機數量SUM Bar縮減1/3表示。
D. 自機共3架:遭擊毀3架,則「Game Over」,自機基地自爆,跳出「Game Over」畫面。可按「replay」按鈕重新開始遊戲流程。

(四)暫停功能:
↓向下鍵 <---暫停
↑向上鍵 <---恢復

※※※按下向下鍵,以下功能可暫停※※※
A.自機轉動、發射子彈
B.自機飛行中的子彈
C.飛行中的敵機
D.敵機飛行中的子彈
E.所有遊戲中爆破Particle