2010年11月30日 星期二

[AS3] 亂數隨機載入外部圖檔(輪播)_每一輪不重覆

外部有6個圖檔,依亂數載入。同一輪已載入過的就不再載入。第1輪播完再播第2輪......



//991228從991130_randomPhoto_1.fla修改

import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;
//載入Tweener、ColorShortcuts類別
//請至以下URL下載tweener類別程式庫與說明文件
//http://code.google.com/p/tweener/
import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;
//初始化ColorShortcuts
ColorShortcuts.init();

//****** photo陣列 - push() 加入外部圖檔檔名
var photo:Array = new Array();
photo.push("991130_p1.jpg");
photo.push("991130_p2.jpg");
photo.push("991130_p3.jpg");
photo.push("991130_p4.jpg");
photo.push("991130_p5.jpg");
photo.push("991130_p6.jpg");

//
var pNum:uint = photo.length;

//****** intervalDuration - 換圖秒數(毫秒)
//目前設為 5000豪秒,即 5 秒
var intervalDuration:Number = 5000;

//TextFormat物件設定文字格式
var aTextFormat:TextFormat = new TextFormat();
aTextFormat.size = 18;
aTextFormat.color = 0xffffff;
aTextFormat.leftMargin = 5;
aTextFormat.rightMargin = 5;
//宣告TextField文字欄位類別實體infoTextField
var infoTextField:TextField = new TextField();
infoTextField.x = 15;
infoTextField.y = 15;
infoTextField.background = true;
infoTextField.backgroundColor = 0xff2200;
infoTextField.autoSize = TextFieldAutoSize.LEFT;
//將 infoTextField 加入顯示清單
addChild(infoTextField);
//建構Loader類別實體ldr
var ldr:Loader = new Loader();
//
ini();
//
function ini():void
{
 loadPhoto();
}
//
function loadPhoto()
{
 //如果photo陣列元素都被移除掉了
 //以for迴圈重新加入各元素,即外部檔名,同初始值
 if(photo.length == 0){
  for (var i:uint=0; i < pNum; i++) { // pNum
   photo[i] = "991130_p" + String(i+1) + ".jpg";
  }
  trace("------------------------------------------");
 }
 
 //Math.random() 亂數產生0(含)~1(不含)之浮點數, 
 //乘以圖檔張數(即photo陣列長度 photo.length),會得到 0(含)~6(不含) 之符點數
 //Math.floor - 去掉小數 - 會得到0~5之正整數
 var photoRandom:uint = Math.floor(Math.random() * photo.length);
 //photo[photoRandom] - 因應亂數,做為陣列索引,指向陣列元素
 var photoURL:String = photo[photoRandom];
 //splice(起始索引, 刪除數量) - 刪除被選定的陣列元素
 //如此在每一循環載入圖檔,才不會重覆
 photo.splice(photoRandom, 1);
 trace(photoURL);
 //將photoURL所存的圖檔檔名字串指定給 infoTextField 文字欄位顯示
 infoTextField.text = photoURL;
 //setTextFormat()方法,將aTextFormat格式化物件與infoTextField文字欄位關聯
 infoTextField.setTextFormat(aTextFormat);
 //
 //Loader類別實體ldr,以load()方法載入new URLRequest()的相對網址(即圖檔檔名)
 ldr.load(new URLRequest(photoURL));
 //將Event.COMPLETE事件的偵聽程式onLoaderComplete,附加到Loader類別實體ldr的contentLoaderInfo屬性 
 ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);
}

//
function onLoaderComplete(e:Event):void
{
 addChild(ldr);
 //將ldr可視物件實體,以x,y座標控制在舞台中央
 ldr.x =  (stage.stageWidth - ldr.width) / 2;
 ldr.y =  (stage.stageHeight - ldr.height) / 2;
 //呼叫漸變屬性設定函式tweenPhoto1()
 tweenPhoto1();
 //setTimeout(closure:Function, delay:Number, ... arguments):uint
 //在指定的延遲時間 (以毫秒為單位) 之後執行指定的函數
 var intervalId:uint = setTimeout(ini, intervalDuration);
}
//
function tweenPhoto1():void{
 Tweener.addTween(ldr, {alpha:0, scaleX:0.9, scaleY:0.9, time:0, onComplete:tweenPhoto2});
} 
function tweenPhoto2():void{
 Tweener.addTween(ldr, {alpha:1, scaleX:1, scaleY:1, time:1.5});
} 

◎另需參閱
指定類別檔路徑 - 以下載及設置Tweener類別庫為例 http://flash.twgogo.org/2010/12/blog-post.html

2010年11月21日 星期日

[AS3]StyleSheet與TextField - 將 StyleSheet 物件套用至含有 htmlText 屬性的文字欄位

var style:StyleSheet = new StyleSheet();建構一個樣式表物件
StyleSheet.setStyle(styleName:String, styleObject:Object):void
以指定的名稱,將新的樣式新增至樣式表物件。
TextField.styleSheet = StyleSheet Object;
將樣式表附加至文字欄位

  1. TextField文字欄位中不是純文字就是HTML文字。純文字的字串指定給TextField類別實體的text屬性;HTML文字的字串則指定給TextField類別實體的htmlText屬性。
  2. 以flash.text.StyleSheet類別來處理CSS宣告。new StyleSheet()建構StyleSheet物件。之後透過一組物件來定義樣式屬性及其值。呼叫StyleSheet.setStyle(對應的選擇器名稱字串, 樣式物件)方法。
  3. 將樣式表StyleSheet物件指定給文字欄位TextField類別實體的styleSheet屬性,將文字欄位以CSS樣式格式化。
  4. 含有樣式表的文字欄位無法再編輯。 若將文字欄位的 type 屬性設定為 TextFieldType.INPUT, StyleSheet會 套用到文字欄位的預設文字,但就無法再對內容進行編輯。 因此,若有輸入文字需求,則改用 TextFormat 類別,將樣式指定給輸入文字欄位。
  5. 程式碼重要順序→樣式屬性內容必須先設定,接著將樣式表套用至 TextField 物件,然後才能設定 htmlText 屬性,如此 CSS 樣式才能實際生效,表現在TextField的Html文字上。
  6. 下列 ActionScript API 無法在含有指定樣式表的文字欄位中使用:• TextField.replaceText() 方法• TextField.replaceSelectedText() 方法• TextField.defaultTextFormat 屬性• TextField.setTextFormat() 方法

SWF



//
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.StyleSheet;
//
var style:StyleSheet = new StyleSheet();
//
var styleObj_1:Object = new Object();
styleObj_1.color = "#ff0000";
styleObj_1.fontSize = 88;
style.setStyle(".red", styleObj_1);
//
var styleObj_2:Object = new Object();
styleObj_2.color = "#00ff00";
styleObj_2.fontSize = 66;
style.setStyle(".green", styleObj_2);
//
var styleObj_3:Object = new Object();
styleObj_3.color = "#0000ff";
styleObj_3.fontSize = 44;
style.setStyle(".blue", styleObj_3);
//
var tf:TextField = new TextField();
//
tf.styleSheet = style;
//
tf.htmlText = "< span class = 'red'>●RED< /span>< span class = 'green'>●GREEN< /span>
< span class = 'blue'>●BLUE< /span> text";
//
tf.x = 50;
tf.y = 8;
tf.width = 460;
//
tf.multiline = true;
tf.wordWrap = true;
tf.autoSize = TextFieldAutoSize.LEFT;
//

addChild(tf);
//style.clear();


Flash Player 支援原始 CSS1 規格 (www.w3.org/TR/REC-CSS1) 中屬性的子集。 請點擊下圖連結至Flash Help瀏覽所支援的「階層式樣式表」(CSS) 屬性和值,以及它們的對應 ActionScript 屬性名稱。


適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考__flash.text.StyleSheet 類別
適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考__flash.text.StyleSheet.setStyle()方法
適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.TextField.styleSheet屬性

2010年11月18日 星期四

[AS3]TextField.getTextFormat(beginIndex, indIndex)方法

getTextFormat(beginIndex:int = -1, endIndex:int = -1):flash.text:TextFormat
會傳回 TextFormat 物件,包含 beginIndex 和 endIndex 參數所指定之文字範圍的格式資訊

UI組件Button的實體開啟了Toggle屬性,切換指定文字欄位tf3的TextFormat屬性



import fl.controls.Button;
import flash.events.Event;
import flash.text.TextFormat;
//
var tf1:TextField = new TextField();
tf1.autoSize = TextFieldAutoSize.LEFT;
tf1.text = "1.ABCDEFGHIJKLMNOPQRSTUVWXYZ";
tf1.x = 30;
tf1.y = 30;
tf1.background = true;
addChild(tf1);
//
var tf2:TextField = new TextField();
tf2.autoSize = TextFieldAutoSize.LEFT;
tf2.text = "2.ABCDEFGHIJKLMNOPQRSTUVWXYZ";
tf2.x = 50;
tf2.y = 60;
tf2.background = true;
addChild(tf2);
//
var tf3:TextField = new TextField();
tf3.autoSize = TextFieldAutoSize.LEFT;
tf3.text = "3.ABCDEFGHIJKLMNOPQRSTUVWXYZ";
tf3.x = 70;
tf3.y = 115;
tf3.background = true;
addChild(tf3);
//
var format1:TextFormat = new TextFormat();
format1.color = 0x0000FF;
format1.font = "04b_08";
format1.size = 24;
//
var format2:TextFormat = new TextFormat();
format2.color = 0xFF2255;
format2.font = "Times New Roman";
format2.size = 36;
//
var format3:TextFormat = new TextFormat();
format3.color = 0x662255;
format3.size = 42;
format3.font = "Orator Std";
//trace(format3);
//
var startRange:int = 7;//啟始字元 (0 base)
var endRange:int = 12;//結束字元+1 (0 base)
tf1.setTextFormat(format1);
tf2.setTextFormat(format2, startRange);
tf3.setTextFormat(format3, startRange, endRange);

//new運算子建構Button組件實體myButton
var myButton:Button = new Button();
addChild(myButton);
myButton.width = 250;
myButton.label = "取得 tf1 的 format1,據以改變 tf3 的文字格式";//取得或設定組件的文字標籤
myButton.toggle = true;//開啟-是否可以切換按鈕
/*selected屬性
http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/fl/controls/LabelButton.html#selected
myButton.selected = true;
將Button組件實體myButton移動到座標(50,230)
*/
myButton.move(200, 210);
//;
var format:TextFormat = new TextFormat();
format = tf1.getTextFormat();
//
myButton.addEventListener(Event.CHANGE, changeFormat);
function changeFormat(e:Event):void
{
 if (e.currentTarget.selected)
 {
  tf3.setTextFormat(format, startRange, endRange);
  e.currentTarget.label = "回復 tf3 原本格式";
 }
 else
 {
  tf3.setTextFormat(format3, startRange, endRange);
  e.currentTarget.label = "取得 tf1 的 format1,據以改變 tf3 的文字格式";
 }

}


適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考__flash.text.TextField.getTextFormat()方法

適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__fl.controls.LabelButton.selected屬性

2010年11月17日 星期三

[AS3] TextField.setTextFormat(format, beginIndex, endIndex):void

setTextFormat()方法
public function setTextFormat(format:flash.text:TextFormat, beginIndex:int = -1, endIndex:int = -1):void
參數
format:flash.text:TextFormat — TextFormat 物件,包含字元和段落格式資訊。
beginIndex:int (default = -1) — 選擇性;整數,指定從零開始的索引位置,以指定想要的文字範圍的第一個字元。
endIndex:int (default = -1) — 選擇性;整數,指定想要的文字範圍後的第一個字元。依原設計,如果指定 beginIndex 和 endIndex 值,就會更新從 beginIndex 到 endIndex-1 的文字。


  
  1. my_textField.setTextFormat(textFormat:TextFormat)
    將 textFormat 的屬性套用到文字欄位中的所有文字
  2. my_textField.setTextFormat(textFormat:TextFormat, beginIndex:int)
    會將 textFormat 的屬性套用到從 beginIndex 位置開始的字元。
  3. my_textField.setTextFormat(textFormat:TextFormat, beginIndex:int, endIndex:int)
    將 textFormat 參數的屬性套用到從 beginIndex 位置到 endIndex-1 位置的文字範圍。

SWF



//
var tf1:TextField = new TextField();
tf1.autoSize = TextFieldAutoSize.LEFT;
tf1.text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
tf1.x = 50;
tf1.y = 30;
tf1.background = true;
addChild(tf1);
//
var tf2:TextField = new TextField();
tf2.autoSize = TextFieldAutoSize.LEFT;
tf2.text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
tf2.x = 50;
tf2.y = 60;
tf2.background = true;
addChild(tf2);
//
var tf3:TextField = new TextField();
tf3.autoSize = TextFieldAutoSize.LEFT;
tf3.text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
tf3.x = 50;
tf3.y = 115;
tf3.background = true;
addChild(tf3);
//
var format1:TextFormat = new TextFormat();
format1.color = 0x0000FF;
format1.font = "04b_08";
format1.size = 24;
//
var format2:TextFormat = new TextFormat();
format2.color = 0xFF2255;
format2.font = "Times New Roman";
format2.size = 36;
//
var format3:TextFormat = new TextFormat();
format3.color = 0x662255;
format3.font = "Orator Std";
format3.size = 42;
//
var startRange:int = 6;
var endRange:int = 11;
tf1.setTextFormat(format1);
tf2.setTextFormat(format2, startRange);
tf3.setTextFormat(format3, startRange, endRange);


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.TextField.setTextFormat()方法

2010年11月16日 星期二

[AS3]嵌入字型 - TextField.embedFonts ( 三 )_嵌入外部引入的字型資訊

public static function registerFont(font:Class):void
在全域字體清單中註冊字體類別
例:Font.registerFont(ShareFont);

※ 從主檔載入外部字型分享swf檔,嵌入外部引入的字型資訊

//registerFont()方法
//public static function registerFont(font:Class):void
//在全域字體清單中註冊字體類別,才能提供給其它檔案嵌入字型。
//參數↓
//font:Class — 您要新增至全域字體清單中的類別。


‧TextField 內的字元使用嵌入之字型 (點擊文字欄位中的文字,跳窗連結至所顯示的url)




(一)首先必須做一個元件庫中含有嵌入字型的swf檔。開一新檔名為 991115_shareFont.fla
如同  [AS3]嵌入字型 - TextField.embedFonts ( 一 ) 的說明,在元件庫新增字體


(二)按 [+] 新增字體後,到右邊選擇字型、字元範圍,填入名稱。






















(三)切換的[ActionScript]頁嵌,外框模式選[傳統],勾選[匯出給ActionScript使用、[匯出在第一影格],填入類別命名,此處為[ ShareFont ],這類別名稱在ActionScript中將被引用。*** 注意,由於這字型要分享給其它Flash檔案使用,必須在下方[共享區塊勾選[匯出給執行階段共享],並將URL欄位填入此FLA 將匯出的SWF檔名,此處為[ 991115_shareFont.swf ]。


(四}到主場景第一影格寫入以下AS,並將991115_shareFont.fla匯出為991115_shareFont.swf

//
var a = Font.enumerateFonts();
trace("991115_shareFont.swf裡的嵌入字型為 " + a[0].fontName);
//
//registerFont()方法  
//public static function registerFont(font:Class):void
//在全域字體清單中註冊字體類別
//參數↓
//font:Class — 您要新增至全域字體清單中的類別。
Font.registerFont(ShareFont);


(五)建立此例主檔 991115_TextField.embedFonts_3.fla
主場景第一影格AS3如下~

//
import flash.display.Loader;
import flash.net.URLRequest;
import flash.text.TextFormat;
import flash.text.TextField;
//
var ldr:Loader = new Loader();
//載入外部擁有字型分享資訊的swf檔
ldr.load(new URLRequest("991115_shareFont.swf"));
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, lcHandler);
//
function lcHandler(e:Event):void
{
//*******將字体清單的裝置字體設為false,所以字型清單陣列儘剩下嵌入字型
//所引入的嵌入字型只有一個
 var embededFonts:Array = Font.enumerateFonts(false);
 trace("991115_TextField.embedFonts_3.swf裡的嵌入字型為 " + embededFonts[0].fontName);
 //
 var aTextFormat:TextFormat = new TextFormat();
 //******所引入的嵌入字型只有一個,其名稱就是embededFonts[0].fontName
 aTextFormat.font = embededFonts[0].fontName;
 trace("aTextFormat.font = " + aTextFormat.font);
 aTextFormat.color = 0xffffff;
 aTextFormat.size = 24;
 aTextFormat.letterSpacing = -1;
 aTextFormat.leftMargin = 15;
 aTextFormat.rightMargin = 15
 aTextFormat.target = "_blank";
 aTextFormat.url = "http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/flash/text/TextFormat.html#url";
 //
 var aTextField:TextField = new TextField();
 //*******在文字欄位實體設定embedFonts(嵌入字型)屬性為真
 aTextField.embedFonts = true;
 aTextField.multiline = true;
 aTextField.wordWrap = true;
 aTextField.background = true;
 aTextField.backgroundColor = 0xff2288;
 aTextField.x = 100;
 aTextField.y = 50;
 aTextField.width = 360;
 //aTextField.height = 200;
 aTextField.autoSize = TextFieldAutoSize.LEFT;
 aTextField.defaultTextFormat = aTextFormat;
 aTextField.text = "\n"+"http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/flash/text/TextFormat.html#url"+"\n\n";
 //aTextField.setTextFormat(aTextFormat);
 addChild(aTextField);
}


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.Font.enumerateFonts()方法


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.Font.fontName屬性

適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.Font.registerFont()方法

2010年11月15日 星期一

[AS3]嵌入字型 - TextField.embedFonts ( 二 )

TextField.embedFonts = true;
( 二 )enumerateFonts(enumerateDeviceFonts:Boolean = false):Array

enumerateDeviceFonts:Boolean (default = false) — 指出您是否要將清單限制為只有目前的可用嵌入字體。 如果此項設定為 true,便會傳回所有字體的清單 (包括裝置字體和嵌入字體兩者)。 如果此項設定為 false,則只會傳回嵌入字體的清單。

// 字型清單設為不列入裝置字體,而只列入嵌入字體。並指定給embeddedFonts 陣列
var embeddedFonts:Array = Font.enumerateFonts(false);
var tFormat:TextFormat = new TextFormat();
//嵌入字體只有一個(第一個),其參照就是embeddedFonts[0],取其fontName屬性就是嵌入字體的名稱,並指定給TextFormat類別的font屬性。
tFormat.font = embeddedFonts[0].fontName;






import flash.text.TextFormat;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.Font;
//
//enumerateFonts(enumerateDeviceFonts:Boolean = false):Array
//enumerateDeviceFonts:Boolean (default = false) — 指出您是否要將清單限制為只有目前的可用嵌入字體。 如果此項設定為 true,便會傳回所有字體的清單 (包括裝置字體和嵌入字體兩者)。 如果此項設定為 false,則只會傳回嵌入字體的清單。
//http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/flash/text/Font.html#enumerateFonts()
var embeddedFonts:Array = Font.enumerateFonts(false);
//trace(embeddedFonts[0].fontName);
//Font.registerFont(MyFont1); 
//
var tFormat:TextFormat = new TextFormat();
//embeddedFonts[0].fontName
tFormat.font = embeddedFonts[0].fontName;
tFormat.size = 22;
tFormat.color = 0xffff00;
tFormat.letterSpacing = -1;

//
var tField:TextField = new TextField();
//
tField.embedFonts = true;
tField.background = true;
tField.backgroundColor = 0xaa33ff;
tField.x = 80;
tField.y = 80;
tField.autoSize = TextFieldAutoSize.LEFT;
tField.selectable = false;
tField.mouseEnabled = true;
//字型嵌入,旋轉後仍正常
tField.rotation = -10;
//
tField.defaultTextFormat = tFormat;
tField.text = "今天是Flash的一天,而且三明治很難吃。";
addChild(tField);



適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.Font.enumerateFonts()方法

適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.Font.fontName屬性

[AS3]嵌入字型 - TextField.embedFonts ( 一 )

TextField.embedFonts = true;
( 一 )於元件庫中新增字型、繼承Font類別而為其子類別
   於ActionScript中建構此類別實體
   var myFont1:Font = new MyFont1();


點擊白色文字欄位區域,輪替更換所嵌入的英文字型



●●●在元件庫中新增字體與設定類別●●●

●在元件庫面板裡按右鍵,點選[新增字體]










●●在[字型內嵌]面板左側上方點選 [+] 圖示按鈕,增加字體。於右側[選項]頁籤輸入自訂名稱,從[系列]下拉選單選擇欲嵌入的字型,[樣式]下拉選單則可挑選一般、斜體或粗體等。[字元範圍]的核取方塊可用來決定要嵌入哪些字元;其下的[也包括下列字元]可貼入指定嵌入的字元,本例為[Hello World],貼入後剩下[Helo Wrd],自動捨棄了重覆字元。所以,本例MyFont1只嵌入[Helo Wrd]幾個字元。MyFont2也一樣。























●●●切換到[ActionScript]頁籤。在[連結]區塊,勾選[匯出給ActionScrip使用]、[匯出在第一影格],基底類別已自動填入[flash.text.Font],在[類別]欄位填入[MyFont1],這MyFont1類別將在ActionScript中被實體化,之後並指定給TextFormat類別的font屬性。上方[外框格式],此例勾選[傳統]。



























第一影格AS3
//
var myFont1:Font = new MyFont1();
var myFont2:Font = new MyFont2();
//Font.registerFont(MyFont1);
//
var format:TextFormat = new TextFormat();
format.color = 0x336699;
format.size = 48;
format.letterSpacing=3;
format.font = myFont1.fontName;
//
var myText:TextField = new TextField();
myText.background = true;
myText.x = 110;
myText.y = 60;
myText.embedFonts = true;
myText.autoSize = TextFieldAutoSize.LEFT;
myText.antiAliasType = AntiAliasType.ADVANCED;
//
//defaultTextForma 要放在myText.text = "Hello World"之前
myText.defaultTextFormat = format;
myText.text = "Hello World";
//
myText.selectable = false;
myText.mouseEnabled = true;
addChild(myText);
//
myText.addEventListener(MouseEvent.CLICK, clickHandler);
//;
function clickHandler(e:MouseEvent):void
{
 format.font = format.font == myFont1.fontName ? (myFont2.fontName):(myFont1.fontName)
 myText.setTextFormat(format);
}


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.Font.fontName屬性

適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.AntiAliasType 類別

[AS3] TextField.embedFonts屬性 + TextField.AntiAliasType類別 + TextField.thickness屬性



TextField.embedFonts = true; //指定是否要使用內嵌的字體外框顯示。
TextField.antiAliasType = AntiAliasType.ADVANCED;
thickness : Number 在這個文字欄位中,Glyph 邊緣的粗細。thickness的屬性值範圍在 -200~200之間。




摘錄Flash Help一句話:

flash.text.TextField.antiAliasType 屬性必須有值 AntiAliasType.ADVANCED,才能讓您設定銳利度、粗細或gridFitType 屬性,或使用 TextRenderer.setAdvancedAntiAliasingTable() 方法。

當然, 前提得先 TextField.embedFont = true;



比較銳利度:
1. 未定義antiAliasType屬性



2.TextField.antiAliasType = AntiAliasType.ADVANCED;


3.TextField.antiAliasType = AntiAliasType.NORMAL;



● 顯然  2.TextField.antiAliasType = AntiAliasType.ADVANCED 是比較銳利清晰。


SWF ---> TextField.antiAliasType = AntiAliasType.ADVANCED




SWF --- TextField.thickness = 200;



//
import flash.display.Loader;
import flash.net.URLRequest;
import flash.text.TextFormat;
import flash.text.TextField;
//
var ldr:Loader = new Loader();
//載入外部擁有字型分享資訊的swf檔
ldr.load(new URLRequest("991115_shareFont_2.swf"));
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, lcHandler);
//
function lcHandler(e:Event):void
{
 //*******將字体清單的裝置字體設為false,所以字型清單陣列僅剩下"嵌入字型"
 //所引入的嵌入字型只有一個
 var embededFonts:Array = Font.enumerateFonts(false);
 trace("991115_TextField.embedFonts_3.swf裡的嵌入字型為 " + embededFonts[0].fontName);
 //
 var aTextFormat:TextFormat = new TextFormat();
 //******所引入的嵌入字型只有一個,其名稱就是embededFonts[0].fontName
 aTextFormat.font = embededFonts[0].fontName;
 trace("aTextFormat.font = " + aTextFormat.font);
 aTextFormat.color = 0xffffff;
 aTextFormat.size = 16;
 //letterSpacing - 字元間距
 aTextFormat.letterSpacing = -1;
 aTextFormat.leftMargin = 15;
 aTextFormat.rightMargin = 15
 aTextFormat.target = "_blank";
 //aTextFormat.url = "";
 //
 var aTextField:TextField = new TextField();
 //*******在文字欄位實體設定embedFonts(嵌入字型)屬性為真
 aTextField.embedFonts = true;
 aTextField.multiline = true;
 aTextField.wordWrap = true;
 aTextField.background = true;
 aTextField.backgroundColor = 0xff2288;
 aTextField.x = 10;
 aTextField.y = 10;
 aTextField.width = 530;
 //aTextField.height = 200;
 aTextField.autoSize = TextFieldAutoSize.LEFT;
 //***Flash Help:進階消除鋸齒功能能讓小型文字顯示高品質的字體外觀, 
 //特別適用於含有許多小型文字的應用程式。 
 //對於非常大的字體 (大於 48 點) 則不建議使用進階消除鋸齒的功能。
 //見http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/flash/text/AntiAliasType.html
 aTextField.antiAliasType = AntiAliasType.ADVANCED;
 //aTextField.antiAliasType = AntiAliasType.NORMAL;
 //thickness : Number  在這個文字欄位中,Glyph 邊緣的粗細。
 //thickness的屬性值範圍在 -200 ~ 200之間。
 aTextField.thickness = 200;
 //
 aTextField.defaultTextFormat = aTextFormat;
 aTextField.text = "Oh, Microsoft. You just can’t seem to help but be the last one to every party you attend. You launched the Kin just as messenger phones began to die, then you launched Windows Phone 7 when the smartphone wars were so far underway that most folks had already declared an allegiance.And now you’ve got your motion gaming platform, the Kinect, hitting the shelves years after the Nintendo Wii and months after the Playstation Move. I’ve spent the last week living with a Kinect in my life. How does it fare? Find out after the jump.Short Version:The Kinect isn’t bad. Not at all. It also, however, is not great.. yet. Of the six launch titles I tested, there’s only one that I’d whole-heartedly recommend and proves to me that the platform might be worthwhile. A few of the others are worthwhile rentals — and unlike the PS3 Move’s “KungFu Rider”, none of them made me want to throw the whole thing into a fire.Oh — and if one of your primary interests in the Kinect is using it to navigate through the 360 interface, you’ll want to hold off. Kinect support on the dashboard is currently pretty slow, and pretty clunky.";
 //aTextField.setTextFormat(aTextFormat);
 addChild(aTextField);
}


SWF --- TextField.thickness = -200;



適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考__flash.text.TextField.thickness屬性

適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考__flash.text.TextField.gridFitType屬性

2010年11月14日 星期日

[AS3] TextField.restrict屬性

restrict : String  預設值為 null。
指出使用者能夠輸入文字欄位中的字元組。
此例:aTf.restrict = "A-Z a-z 0-9 \\- \\_ \\^";

指定使用者可以在輸入文字欄位中鍵入的字元,可以允許特定字母、數字或是某範圍的字母、數字和字元

如果 restrict 屬性的值是 null,表示可以輸入任何字元。
aTf.restrict = null;

如果 restrict 屬性的值是空字串,則不能輸入任何字元。
aTf.restrict = "";

可以使用連字符號 (-) 字元指定範圍。指定所有大小寫字母、數字,和破折號(-)、底線(_)、跳脫字元 (^)。
aTf.restrict = "A-Z a-z 0-9 \\- \\_ \\^";

如果字串以跳脫字元 (^) 開始,會接受所有的字元,但字串中的後續字元則會排除在接受的字元組之外。
aTf.restrict = "^abc";

如果字串不是以跳脫字元 (^) 開始,便不會接受任何字元,並且字串中的後續字元都會包含在接受的字元組內。
aTf.restrict = "abc";

這個例子,包含所有字元,但排除小寫字母:
aTf.restrict = "^a-z";

^ 可以在字串中的任何一處使用,用以切換包含的字元及排除的字元。下列程式碼只包含大寫字母,但排除大寫字母 Q:
aTf.restrict = "A-Z^Q";

您可以使用反斜線來逐字輸入 ^ 或 -。 接受的反斜線序列為 \-、\^ 或 \\。 反斜線必須是字串中的實際字元,因此當您在 ActionScript 中指定它時,就必須使用雙反斜線。 例如,以下的程式碼只包含破折號 (-) 和跳脫字元 (^):
aTf.restrict = "\\-\\^";

Script 可以將任何文字放入文字欄位中。
這個屬性不會與「屬性」檢測器中的「嵌入字體」選項同步化。


可以使用連字符號 (-) 字元指定範圍。指定所有大小寫字母、數字,和破折號(-)、底線(_)、跳脫字元 (^)。
aTf.restrict = "A-Z a-z 0-9 \\- \\_ \\^";
以下輸入字元,受限於A-Z a-z 0-9 - _ ^



package  {
 //
 import flash.text.TextField;
 import flash.text.TextFieldType;
 import flash.display.Sprite;
 public class TextField_restrict_991114_1 extends Sprite {
  //
  private var aTf:TextField = new TextField();
  //
  public function TextField_restrict_991114_1() {
   //
   aTf.type = TextFieldType.INPUT;
   //可以使用連字符號 (-) 字元指定範圍。指定所有大小寫字母、數字,和破折號(-)、底線(_)、跳脫字元 (^)。
   aTf.restrict = "A-Z a-z 0-9 \\- \\_ \\^";
   
   aTf.background = true;
   aTf.x = 100;
   aTf.y = 100;
   aTf.width = 300;
   aTf.height = 20;
   
   addChild(aTf);
  }
 }
}


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.TextField.ristrict

[AS3] TextField.displayAsPassword

displayAsPassword : Boolean
指定文字欄位是否為密碼文字欄位。

。displayAsPassword 設為 true 時,「剪下」和「複製」指令以及其對應的鍵盤快捷鍵將失去作用
。在輸入文字時隱藏文字 ( 將它顯示為一連串的星號)。



package 
{
 //
 import flash.display.Sprite;
 import flash.text.TextField;
 import flash.text.TextFieldType;
 //
 public class displayAsPassword_991114_1 extends Sprite {
  //
  private var aTf:TextField = new TextField();
  public function displayAsPassword_991114_1()
  {
   //設定 TextField 類別的 type 屬性為input TextField
   aTf.type = TextFieldType.INPUT;
   //displayAsPassword : Boolean -指定文字欄位是否為密碼文字欄位
   aTf.displayAsPassword = true;
   aTf.background = true;
   aTf.height = 20;
   aTf.x = 200;
   aTf.y = 70;
   addChild(aTf);
  }

 }

}


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.TextField.displayAsPassword

[AS3] 擷取文字輸入,並顯示於另一TextField類別實體

TextField.addEventListener(TextEvent.TEXT_INPUT, textInputHandler)
每當使用者在文字欄位中輸入文字,或在 HTML 文字欄位中按下超連結時,物件就會傳送 TextEvent 物件。
注意:Delete 或 Backspace 鍵不會傳送這個事件。

於黃色文字欄位輸入文字,輸入之文字將出現在白色文字欄位,但英文字元的出現會慢一個字元,
中文字則可同步。但貼上剪貼簿內中文字也會慢一步顯示。



package 
{
 //
 import flash.display.Sprite;
 import flash.text.TextField;
 import flash.text.TextFieldType;
 import flash.text.TextFieldAutoSize;
 import flash.events.TextEvent;
 import flash.display.Stage;
 //'
 public class Text_INPUT_1 extends Sprite
 {
  //
  private var inputTf:TextField = new TextField();
  private var outputTf:TextField = new TextField();
  private var inputStr:String = "在這裡鍵入文字";
  //
  public function Text_INPUT_1()
  {
   captureText();
  }
  //
  private function captureText():void
  {
   inputTf.type = TextFieldType.INPUT;
   inputTf.background = true;
   inputTf.backgroundColor = 0xffff00;
   inputTf.autoSize = TextFieldAutoSize.LEFT;
   inputTf.width = 260;
   inputTf.wordWrap = true;
   inputTf.x = 10;
   inputTf.y = 10;
   addChild(inputTf);
   inputTf.text = inputStr;
   //***Delete 或 Backspace 鍵不會傳送TEXT_INPUT事件。
   inputTf.addEventListener(TextEvent.TEXT_INPUT, textInputCapture);
  }
  //
  private function textInputCapture(e:TextEvent):void
  {
   //var str = inputTf.text;
   var str = e.currentTarget.text;
   creatOutputFt(str);
  }
  //
  private function creatOutputFt(str:String):void
  {
   outputTf.background = true;
   outputTf.autoSize = TextFieldAutoSize.LEFT;
   outputTf.width = 260;
   outputTf.wordWrap = true;
   outputTf.x = 280;
   outputTf.y = 10;
   addChild(outputTf);
   outputTf.text = str;
  }

 }

}


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.events.TextEvent.TextEvent

適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.TextFieldAutoSize

[AS3] TextFieldType類別-是常數值的列舉,用於設定 TextField 類別的 type 屬性

TextField.type = TextFieldType.INPUT; //輸入文字欄位
TextField.type = TextFieldType.DYNAMIC;  //動態文字欄位
*TextFieldType 類別是常數值的列舉,用於設定 TextField 類別的 type 屬性。

適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考__flash.text.TextFieldType

[AS3] 擷取使用者所選取的文字並顯示在另一TextField中 - selectionBeginIndex、selectionEndIndex、substring()

substring(startIndex:Number, endIndex:Number):String
TextField.selectionBeginIndex、TextField.selectionEndIndex


//selectionBeginIndex -
//[唯讀] 目前選取範圍中,第一個字元的字元索引值 (從零開始)。
 var beginIndex:int = myTextField.selectionBeginIndex;
//selectionEndIndex -
//[唯讀] 目前選取範圍中,最後一個字元的字元索引值 (從零開始)。
 var endIndex:int = myTextField.selectionEndIndex;


//substring(開頭字元索引, 結束字元索引);
//substring(startIndex:Number, endIndex:Number):String
//參考http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/String.html#substring()


選取文字,所選取文字片段的開始字元索引,和結束字元索引,會顯示在左下文字欄位。
所選取的文字片段則顯示在藍色文字欄位中。



//
import flash.text.TextField;
//
var myTextField:TextField = new TextField();
myTextField.text = "TextField selectionBeginIndex 和 selectionEndIndex 是「唯讀」屬性,因此無法設定為透過程式設計方式選取文字,但可以用來擷取使用者目前已選取的項目。此外,輸入文字欄位可以使用 caretIndex 屬性。";
myTextField.x = 30;
myTextField.y = 15;
myTextField.width = 300;
myTextField.wordWrap = true;
myTextField.multiline = true;
//
var beginTF:TextField = new TextField();
var endTF:TextField = new TextField();
beginTF.width = 300;
beginTF.x = 50;
beginTF.y = 220;
endTF.width = 300;
endTF.x = 50;
endTF.y = 235;
//
var outputTF:TextField = new TextField();
outputTF.width = 300;
outputTF.x = 180;
outputTF.y = 90;
outputTF.wordWrap = true;
outputTF.multiline = true;
outputTF.background = true;
outputTF.backgroundColor = 0x0066cc;
outputTF.textColor = 0xffffff;
//
addChild(myTextField);
addEventListener(MouseEvent.MOUSE_UP, selectText);
//
addChild(beginTF);
addChild(endTF);
addChild(outputTF);
//
function selectText(event:MouseEvent):void
{
 //selectionBeginIndex -
 //[唯讀] 目前選取範圍中,第一個字元的字元索引值 (從零開始)。
 var beginIndex:int = myTextField.selectionBeginIndex;
 //selectionEndIndex -
 //[唯讀] 目前選取範圍中,最後一個字元的字元索引值 (從零開始)。
 var endIndex:int = myTextField.selectionEndIndex;
 beginTF.text = "First letter index position: " + beginIndex;
 endTF.text = "Last letter index position: " + endIndex;
 //substring(開頭字元索引, 結束字元索引);
 //substring(startIndex:Number, endIndex:Number):String
 //參考http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/String.html#substring()
 outputTF.text = myTextField.text.substring(beginIndex,endIndex);
}


String類別的 substring()方法


TextField的selectionBeginIndex 和 selectionEndIndex 屬性

2010年11月12日 星期五

[AS3] setSelection()方法 - 動態選取文字欄位內的部份文字

selectable : Boolean -出文字欄位是否可選取的Boolean值,預設true
setSelection(beginIndex:int, endIndex:int):void
滑鼠點選爭間紅色背景文字欄位,觸發選取文字事件




package TextField
{
 //
 import flash.text.*;
 import flash.display.Sprite;
 import flash.events.MouseEvent;
 //
 public class setSelection_1 extends Sprite
 {
  //
  private var aTextField:TextField = new TextField();
  private var textContent:String = "No matter where you click on this text field the TEXT IN ALL CAPS is selected.";
  //
  public function setSelection_1()
  {
   //
   aTextField.text = textContent;
   //aTextField.autoSize = TextFieldAutoSize.LEFT;
   aTextField.width = 200;
   aTextField.height = 100;
   aTextField.x = 150;
   aTextField.y = 100;
   aTextField.wordWrap = true;
   aTextField.multiline = true;
   aTextField.border = true;
   aTextField.borderColor = 0xffff00;
   aTextField.background = true;
   aTextField.backgroundColor = 0xff0000;
   //文字欄位中文字的顏色,以十六進位格式表示。
   aTextField.textColor = 0x2222ff;
   //selectable : Boolean - 指出文字欄位是否可選取的Boolean 值。
   //selectable預設為true
   //aTextField.selectable = false;
   //
   addChild(aTextField);
   aTextField.addEventListener(MouseEvent.MOUSE_DOWN, selectText);
  }
  //
  private function selectText(e:MouseEvent):void
  {
   //setSelection(beginIndex:int, endIndex:int):void
   //beginIndex:int 和 endIndex:int 皆為0 base
   e.currentTarget.setSelection(49,65);
  }
 }
}


適用於 Adobe  Flash  Professional CS5 的 ActionScript  3.0 參考 - setSelection()方法

[AS3] 在文字欄位中點擊滑鼠,垂直捲動文字 - TextField.scrollV屬性

點擊一次捲動兩行 --->  myTextField.scrollV +=2;
點擊後滑鼠取得文字欄位為焦點,可用滾輪捲動文字行


package 
{
 //
 import flash.display.Sprite;
 import flash.text.*;
 import flash.events.MouseEvent;
 //
 public class TextField_TextScrollExample_1 extends Sprite
 {
  //
  private var myTextField:TextField = new TextField  ;
  private var myText:String = "Hello world and welcome to the show. It's really nice to meet you.Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again.";
  //
  public function TextField_TextScrollExample_1()
  {
   //
   myTextField.text = myText;
   //
   myTextField.x = 150;
   myTextField.y = 100;
   myTextField.width = 150;
   myTextField.height = 100;
   myTextField.multiline = true;
   myTextField.wordWrap = true;
   myTextField.background = true;
   myTextField.border = true;
   //
   var format:TextFormat = new TextFormat  ;
   format.font = "Times New Rpman";
   format.color = 0x000088;
   format.size = 20;
   //
   myTextField.defaultTextFormat = format;
   //setTextFormat-將format參數所指定的文字格式,套用至文字欄位中的指定文字
   //setTextFormat(format:flash.text:TextFormat, beginIndex:int = -1, endIndex:int = -1):void
   //參考http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/flash/text/TextField.html#setTextFormat()
   myTextField.setTextFormat(format);
   //
   addChild(myTextField);
   //
   myTextField.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownScroll);
  }
  //
  public function mouseDownScroll(event:MouseEvent):void
  {
   //scrollV-文字欄位中文字的垂直位置
   //如果顯示的第一行是文字欄位中的第一個字行,scrollV 便會設定為1
   //參考http://help.adobe.com/zh_TW/Flash/CS5/AS3LR/flash/text/TextField.html#scrollV
   //myTextField.scrollV ++; //點擊一次捲動一行
   myTextField.scrollV +=2;  //點擊一次捲動兩行
  }
 }
}



[AS3] 以htmlText屬性在文字欄位TextField之中顯示SWF

[CTRL+ENTER]預覽時有不能強制轉型的錯誤訊息,但仍成功匯出可運作的swf。

TypeError: Error #1034: 強制轉型失敗: 無法將 flash.text::TextField@265e8061 轉換成 flash.display.DisplayObjectContainer。
at org.papervision3d.core.utils.virtualmouse::VirtualMouse/handleUpdate()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.papervision3d.core.utils.virtualmouse::VirtualMouse/update()
at org.papervision3d.core.utils.virtualmouse::VirtualMouse/setLocation()
at org.papervision3d.core.utils::InteractiveSceneManager/handleEnterFrame()




package 
{
 import flash.text.TextField;
 import flash.text.TextFieldAutoSize;
 import flash.display.Sprite;
 public class TextFieldSample_4 extends Sprite
 {
  private var aTextField:TextField = new TextField();
  private var aHtmlTxt:String;
  public function TextFieldSample_4()
  {
   aHtmlTxt = "< font size='18' color='#ffff00'>< p>
以下在< b>文字欄位< /b>< i>TextField< /i>顯示< u>SWF< /u>,記得要控制寬和高。< /p>
< /font>< img src='991028_pv3d_Cube_BitmapAssetMatrial.swf' width='320' height='220'>";
   //若HTML文字中有標籤,則不能使用autoSize屬性
   //aTextField.autoSize = TextFieldAutoSize.LEFT;
   aTextField.width = 400;//文字欄位寬度(像素)
   aTextField.height = 300;//文字欄位高度(像素)
   aTextField.x = 120; //文字欄位x座標
   aTextField.y = 40;  //文字欄位y座標
   aTextField.multiline = true;//多行文字欄位-true開啟
   aTextField.wordWrap = true;//文字換行功能-true開啟
   aTextField.border = true;//指定文字欄位是否具有邊框
   aTextField.borderColor = 0xffff00;//文字欄位邊框的顏色
   aTextField.background = true;//指定文字欄位是否具有背景填色
   aTextField.backgroundColor = 0x660000;//文字欄位背景的顏色,預設為白色
   //alwaysShowSelection為true而且文字欄位不在焦點中時,
   //Flash Player 便會將文字欄位中的選取範圍反白標示為灰色。
   aTextField.alwaysShowSelection = true;
   addChild(aTextField);//將aTextField加入顯示清單
   aTextField.htmlText = aHtmlTxt;//htmlText-以HTML顯示文字欄位內容
   aTextField.rotationY = -30; //旋轉y軸-30度
   aTextField.scaleX = 1.2; //從註冊點套用的物件水平縮放
  }
 }
}

[AS3] 以htmlText屬性在文字欄位TextField之中顯示影像 + TextField類別常用屬性

以htmlText屬性在文字欄位TextField之中使用HTML時,img 標籤支援 JPEG、GIF、PNG 和 SWF 檔



package 
{
 import flash.text.TextField;
 import flash.text.TextFieldAutoSize;
 import flash.display.Sprite;
 public class TextFieldSample_3 extends Sprite
 {
  private var aTextField:TextField = new TextField();
  private var aHtmlTxt:String;
  public function TextFieldSample_3()
  {
   aHtmlTxt = "< font size='18' color='#ffff00'>< p>以下在< b>文字欄位< /b>< i>TextField< /i>顯示< u>影像< /u>,記得要控制寬和高。< /p>< /font>< img src='990916_01a_w250px.jpg' width='250' height='160'>";
   //若HTML文字中有標籤,則不能使用autoSize屬性
   //aTextField.autoSize = TextFieldAutoSize.LEFT;
   aTextField.width = 360;//文字欄位寬度(像素)
   aTextField.height = 250;//文字欄位高度(像素)
   aTextField.x = 120; //文字欄位x座標
   aTextField.y = 65; //文字欄位y座標
   aTextField.multiline = true;//多行文字欄位-true開啟
   aTextField.wordWrap = true;//文字換行功能-true開啟
   aTextField.border = true;//指定文字欄位是否具有邊框
   aTextField.borderColor = 0xffff00;//文字欄位邊框的顏色
   aTextField.background = true;//指定文字欄位是否具有背景填色
   aTextField.backgroundColor = 0x660000;//文字欄位背景的顏色,預設為白色
   //alwaysShowSelection為true而且文字欄位不在焦點中時,
   //Flash Player 便會將文字欄位中的選取範圍反白標示為灰色。
   aTextField.alwaysShowSelection = true;
   addChild(aTextField);//將aTextField加入顯示清單
   aTextField.htmlText = aHtmlTxt;//htmlText-以HTML顯示文字欄位內容
   aTextField.rotationY = -30; //旋轉y軸-30度
   aTextField.scaleX = 1.2; //從註冊點套用的物件水平縮放
  }
 }
}

2010年11月11日 星期四

[AS3] 指定文字欄位TextField類別實體的文字內容_TextField.text屬性



package 
{
 import flash.display.Sprite;
 import flash.text.*;
 public class TextFieldSample_1 extends Sprite
 {
  //建構myTextBox為TextField類別的實體
  private var myTextBox:TextField = new TextField();
  //宣告newText為字串變數,並指定其值。
  private var myText:String = "Hello World";
  public function TextFieldSample_1()
  {
   //將myTextBox加入顯示清單
   addChild(myTextBox);
   //將myText字串變數的值指定給myTextBox的text屬性
   myTextBox.text = myText;
   //控制myTextBox實體在舞台上的位置
   myTextBox.x = 100;
   myTextBox.y = 80;
  }
 }
}

[AS3] 在文字欄位TextField類別實體顯示HTML文字_ TextField.htmlText 屬性+autosize



package 
{
 //
 import flash.text.TextField;
 import flash.text.TextFieldAutoSize;
 import flash.display.Sprite;
 //
 public class TextFieldSample_2 extends Sprite
 {
  //建構myTextField為TextField類別的實體
  private var myTextField:TextField = new TextField();
  //宣告newText為字串變數
  private var newText:String;
  //
  public function TextFieldSample_2()
  {
   //TextFieldAutoSize.LEFT --> 自動欄位寬度,文字靠左。
   myTextField.autoSize = TextFieldAutoSize.LEFT;
   newText = "< p>
這段< b>文字< /b>< i>格式化< /i>為< u>HTML< /u>文字。< /p>
";
   //htmlText屬性 --> 包含 HTML 表示方式的文字欄位內容。
   myTextField.htmlText = newText;
   addChild(myTextField);
   myTextField.x = 160;
   myTextField.y = 80;
  }
 }
}


Flash Player 支援哪些 HTML 標籤:(快照圖像引用自下方連結)





2010年11月10日 星期三

[AS3] TextFormat 參數


2010年11月8日 星期一

[AS3] ( UIComponent ) 組件在可視物件類別表上的位置


2010年11月4日 星期四

[AS3] Transition Types 漸變型態展示

點選Transition Types項目,而後按Click鈕,觀賞漸變效果。

SWF瀏覽


//匯入Tweener類別;匯入MouseEvent類別
import caurina.transitions.Tweener;
import flash.events.MouseEvent;
//匯入ColorShortcuts類別
import caurina.transitions.properties.ColorShortcuts;
//初始化ColorShortcuts
ColorShortcuts.init();

//
//將 List 組件加入應用程式時,您可以加入下列 ActionScript 程式碼,讓螢幕朗讀程式能夠存取此組件
import fl.accessibility.ListAccImpl;
ListAccImpl.enableAccessibility();
//匯入List類別
import fl.controls.List;
//宣告tranVar為tweenFun2()之漸變參數transition的參數值
var tranVar:String;
//主場景上實體名稱為aList之List組件,addItem()將項目逐一附加至項目清單的結尾
aList.addItem({label:"linearx", data:"linear"});
aList.addItem({label:"easeInSine", data:"easeInSine"});
aList.addItem({label:"easeOutSine", data:"easeOutSine"});
aList.addItem({label:"easeInOutSine", data:"easeInOutSine"});
aList.addItem({label:"easeInCubic", data:"easeInCubic"});
aList.addItem({label:"easeOutCubic", data:"easeOutCubic"});
aList.addItem({label:"easeInOutCubic", data:"easeInOutCubic"});
aList.addItem({label:"easeOutInCubic", data:"easeOutInCubic"});
aList.addItem({label:"easeInQuint", data:"easeInQuint"});
aList.addItem({label:"easeOutQuint", data:"easeOutQuint"});
aList.addItem({label:"easeInOutQuint", data:"easeInOutQuint"});
aList.addItem({label:"easeOutInQuint", data:"easeOutInQuint"});
aList.addItem({label:"easeInCirc", data:"easeInCirc"});
aList.addItem({label:"easeOutCirc", data:"easeOutCirc"});
aList.addItem({label:"easeInOutCirc", data:"easeInOutCirc"});
aList.addItem({label:"easeOutInCirc", data:"easeOutInCirc"});
aList.addItem({label:"easeInBack", data:"easeInBack"});
aList.addItem({label:"easeOutBack", data:"easeOutBack"});
aList.addItem({label:"easeInOutBack", data:"easeInOutBack"});
aList.addItem({label:"easeOutInBack", data:"easeOutInBack"});
aList.addItem({label:"easeInQuad", data:"easeInQuad"});
aList.addItem({label:"easeOutQuad", data:"easeOutQuad"});
aList.addItem({label:"easeInOutQuad", data:"easeInOutQuad"});
aList.addItem({label:"easeOutInQuad", data:"easeOutInQuad"});
aList.addItem({label:"easeInQuart", data:"easeInQuart"});
aList.addItem({label:"easeOutQuart", data:"easeOutQuart"});
aList.addItem({label:"easeInOutQuart", data:"easeInOutQuart"});
aList.addItem({label:"easeOutInQuart", data:"easeOutInQuart"});
aList.addItem({label:"easeInExpo", data:"easeInExpo"});
aList.addItem({label:"easeOutExpo", data:"easeOutExpo"});
aList.addItem({label:"easeInOutExpo", data:"easeInOutExpo"});
aList.addItem({label:"easeOutInExpo", data:"easeOutInExpo"});
aList.addItem({label:"easeInElastic", data:"easeInElastic"});
aList.addItem({label:"easeOutElastic", data:"easeOutElastic"});
aList.addItem({label:"easeInOutElastic", data:"easeInOutElastic"});
aList.addItem({label:"easeOutInElastic", data:"easeOutInElastic"});
aList.addItem({label:"easeInBounce", data:"easeInBounce"});
aList.addItem({label:"easeOutBounce", data:"easeOutBounce"});
aList.addItem({label:"easeInOutBounce", data:"easeInOutBounce"});
aList.addItem({label:"easeOutInBounce", data:"easeOutInBounce"});
//
//aList.selectedItem={label:"easeInOutElastic", data:"easeInOutElastic"};
//將aList組件被選取項目之索引編號設為34
aList.selectedIndex = 34;
//將aList組件捲軸捲動至項目索引編號39
aList.scrollToIndex(34+5);
trace(aList.selectedItem.data);
//將aList組件被選取項目物件的data屬性指定給tranVar
//tranVar為tweenFun2()之漸變參數transition的參數值
tranVar = aList.selectedItem.data;
//aList廣播Event.CHANGE事件給getData偵聽函式
aList.addEventListener(Event.CHANGE, getData);
//
function getData(event:Event) {
 //將event.target事件物件的selectedItem物件的data屬性值導入tranVar
 tranVar = event.target.selectedItem.data;
}


//宣告oriX和oriY,將a_mc在主場景上的初始位置x及y座標存入
var oriX:Number = a_mc.x;
var oriY:Number = a_mc.y;
//
click_mc.buttonMode = true;
click_mc.addEventListener(MouseEvent.MOUSE_DOWN, tweenFun1)

//定義tweenFun1的內容,a_mc的漸變參數為{x:470, y:80, time:1.5, onComplete:tweenFun2}
//onComplete:tweenFun2將驅使x:470, y:80, time:1.5的漸變完成後,
//呼叫tweenFun2開始執行
//Complete color transformation properties裡的_color參數,其值為16進位數值
//例如0xff0000為紅色
function tweenFun1(e:MouseEvent):void{
Tweener.addTween(a_mc, {x:280, y:50, time:1, _color:0xffff00, onComplete:tweenFun2});
} 

//其中transition:"easeOutElastic"定義漸變階段的動作型態,
//可參照Transition Types 之說明。
//_color:null可將_color參數值回歸初始無值狀態。
function tweenFun2(){
 Tweener.addTween(a_mc, {x:oriX, y:oriY, time:1.5, delay:0.5, _color:null,transition:tranVar});
}



Transition Types




2010年11月3日 星期三

[AS3] Tweener.addTween() ← tweeningParameters參數的三種寫法

Tweener.addTween(target:Object, tweeningParameters:Object):Void

//
Tweener.addTween(a_mc, {x:470, y:80, time:1.5, _color:0xff0000, delay:1.5, onComplete:tweenFun2});
//或
// Tweener.addTween(a_mc, {
    x:470, 
    y:80, 
    time:1.5, 
    _color:0xff0000, 
    delay:1.5,
    onComplete:tweenFun2
});


//
var tweeningObj:Object = new Object();
tweeningObj.x = 470;
tweeningObj.y = 80;
tweeningObj.time = 1.5;
tweeningObj._color = 0xff0000;
tweeningObj.delay = 1.5;
tweeningObj.onComplete = tweenFun2;
//
Tweener.addTween(a_mc, tweeningObj);


//
var tweeningObj:Object = {x : 470, y : 80, time : 1.5, _color : 0xff0000, delay : 1.5, onComplete : tweenFun2};
//
Tweener.addTween(a_mc, tweeningObj);





2010年11月2日 星期二

[AS3] Tweener類別_Tweening Parameters>>base

SWF瀏覽


// WITH base, using an array of base objects:
import caurina.transitions.Tweener;
import flash.display.MovieClip;
import flash.events.MouseEvent;

var aOri:Object = {x:a_mc.x, y:a_mc.y, transition:"easeInOutBounce", time:2};
var myFade:Object = {x:450, time:1};
Tweener.addTween(a_mc, {base:myFade, y:300});

a_mc.addEventListener(MouseEvent.CLICK, oriFun);
function oriFun(e:MouseEvent){
 Tweener.addTween(e.currentTarget, aOri);
}

[AS3] Tweener→→→游移在兩種狀態間?

Tweener的解釋→游移在兩種狀態間?蠻有一點意思.
所以,從某種狀態到另一種狀態間的漸變過程,該是Tweener類別的意圖。

Tweener是開放源碼的程式庫。
Tweener網址:http://code.google.com/p/tweener/
Tweener類別下載:http://code.google.com/p/tweener/downloads/list
Tweener Documentation:http://hosted.zeh.com.br/tweener/docs/en-us/

基本的Tweener漸變,需要知道以下1和2:
  1. import caurina.transitions.Tweener; //Tweener不是內建類別,必須匯入caurina類別套件下的transitions類別套件下的Tweener類別

  2. Tweener.addTween(target:Object, tweeningParameters:Object):Void//以Tweener類別的addTween方法,將tweeningParameters定義的漸變參數附加到target物件上,據此產生漸變動畫。

    //target:Object — Any object that will suffer a tweening. These objects are usually MovieClip, TextField, or Soundinstances, or any other custom object with a numeric property that needs to be tweened.

    //
    tweeningParameters:Object — An object containing various properties of the original object that you want to tween on the original objects, with their final values assigned (some special properties are also allowed), as well as some built-in Tweener properties used when defining tweening parameters. This is like the recipe for the tweening, declaring both what will be tweened, and how.

//所以→
 Tweener.addTween(目標物件:Object, 漸變參數:Object)
→目標物件可以是影片實體、文字欄位、聲音實體、其它擁有數值屬性的自訂物件。
→漸變參數定義目標物件新的屬性值,漸變過程即原有屬性值到新的屬性值之間的動畫過程。

swf例一:Tweener.addTween()


//匯入Tweener類別;匯入MouseEvent類別
import caurina.transitions.Tweener;
import flash.events.MouseEvent;

//
click_mc.addEventListener(MouseEvent.MOUSE_DOWN, tweenFun)

function tweenFun(e:MouseEvent):void{

//針對a_mc附加漸變動畫,{x:450, y:100, time:1.5}為其漸變參數,物件類型
Tweener.addTween(a_mc, {x:450, y:100, time:1.5});

} 


swf例二onComplete:value、transition:transitionType(String)




//匯入Tweener類別;匯入MouseEvent類別
import caurina.transitions.Tweener;
import flash.events.MouseEvent;

//宣告oriX和oriY,將a_mc在主場景上的初始位置x及y座標存入
var oriX:Number = a_mc.x;
var oriY:Number = a_mc.y;
//
click_mc.buttonMode = true;
click_mc.addEventListener(MouseEvent.MOUSE_DOWN, tweenFun1)

//定義tweenFun1的內容,a_mc的漸變參數為{x:470, y:80, time:1.5, onComplete:tweenFun2}
//onComplete:tweenFun2將驅使x:470, y:80, time:1.5的漸變完成後,
//呼叫tweenFun2開始執行
function tweenFun1(e:MouseEvent):void{
Tweener.addTween(a_mc, {x:470, y:80, time:1.5, onComplete:tweenFun2});
} 

//其中transition:"easeOutElastic"定義漸變階段的動作型態
//可參照Transition Types 之說明
function tweenFun2(){
 Tweener.addTween(a_mc, {x:oriX, y:oriY, time:1.5, transition:"easeOutElastic"});
}



swf例三:ColorShortcuts類別→Complete color transformation properties→_color:Number(16進位色彩碼)





ColorShortcuts類別 參考文件


//匯入Tweener類別;匯入MouseEvent類別
import caurina.transitions.Tweener;
import flash.events.MouseEvent;
//匯入ColorShortcuts類別
import caurina.transitions.properties.ColorShortcuts;
//初始化ColorShortcuts
ColorShortcuts.init();

//宣告oriX和oriY,將a_mc在主場景上的初始位置x及y座標存入
var oriX:Number = a_mc.x;
var oriY:Number = a_mc.y;
//
click_mc.buttonMode = true;
click_mc.addEventListener(MouseEvent.MOUSE_DOWN, tweenFun1)

//定義tweenFun1的內容,a_mc的漸變參數為{x:470, y:80, time:1.5, onComplete:tweenFun2}
//onComplete:tweenFun2將驅使x:470, y:80, time:1.5的漸變完成後,
//呼叫tweenFun2開始執行
//Complete color transformation properties裡的_color參數,其值為16進位數值
//例如0xff0000為紅色
function tweenFun1(e:MouseEvent):void{
Tweener.addTween(a_mc, {x:470, y:80, time:1.5, _color:0xff0000, onComplete:tweenFun2});
} 

//其中transition:"easeOutElastic"定義漸變階段的動作型態,
//可參照Transition Types 之說明。
//_color:null可將_color參數值回歸初始無值狀態。
function tweenFun2(){
 Tweener.addTween(a_mc, {x:oriX, y:oriY, time:5, _color:null,transition:"easeOutElastic"});
}

2010年11月1日 星期一

[AS3] Tweener類別_Tweener.addTween()

Tweener.addTween(target:Object, tweeningParameters:Object):Void

SWF瀏覽



//
import caurina.transitions.Tweener;
import flash.display.MovieClip;
import caurina.transitions.properties.FilterShortcuts;
//
FilterShortcuts.init();
//var bX:Number = _Blur_blurX;
//var bY:Number = _Blur_blurY;
//
var clip_mc:MovieClip = new ClipMC();
clip_mc.x = 0;
clip_mc.y = 200;
clip_mc.scaleX = 0.5;
clip_mc.scaleY = 0.5;
addChild(clip_mc);
//
var obj:Object = new Object();
obj.x = 400;
obj.y = 200;
obj.time = 2;
obj.transition = "easeOutBounce";
obj._Blur_blurX = 10;
obj._Blur_blurY = 10;
obj.alpha = 0.2;
obj.scaleX = 0.8;
obj.scaleY = 0.8;
//  
clip_mc.buttonMode = true;
clip_mc.addEventListener(MouseEvent.MOUSE_DOWN, function(){
 Tweener.addTween(clip_mc, obj);
})