顯示具有 TextFieldAutoSize 標籤的文章。 顯示所有文章
顯示具有 TextFieldAutoSize 標籤的文章。 顯示所有文章

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屬性

2010年11月14日 星期日

[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