神魂顛倒論壇logo

icon
首頁Adobe Animate CCFlash CC 新功能專區 → flash.text.engine 可載入 local 端的字型

雷射溶脂 | 瘦小腹 | 植髮 | 眼袋 | 玻尿酸 | 電波拉皮 | Flash | 購物車 | Flash Player 11.2 | 豐胸 |

下一主題 上一主題


flash.text.engine 可載入 local 端的字型


flash.text.engine 可載入 local 端的字型 簡版






flash.text.engine 可載入 local 端的字型

來源:邦邦部落格http://cs4.ben.idv.tw/2008/07/flashtextengine-local.html

Flash Player 10 允許我們動態載入 client 端的字型來顯示,就連中文字也可以作旋轉效果了!

執行效果如下:


圖片:



圖片:


輸出的 swf 檔案大小約 37.2 KB 左右,而下拉選單中的字型列表,是根據 client 端擁有的字型而定,沒有使用 embeded font:


圖片:


關於新的 flash.text.engine 的文件,可於官方查得:

http://livedocs.adobe.com/flex/gumbo/langref/flash/text/engine/package-detail.html

frame 1 的完整程式碼如下:


以下為《AS》原始碼
import fl.controls.Button; 
import fl.controls.ComboBox;
import flash.text.engine.*;

var rotate_btn:Button;
var font_cb:ComboBox;
var msg:String;
var textContainer:Sprite;

function init():void{
font_cb = new ComboBox();
var fonts:Array = Font.enumerateFonts(true);
for(var i:int=0; i<fonts.length; i++){
font_cb.addItem({label:fonts[i].fontName});
}
font_cb.width = 200;
font_cb.addEventListener(Event.CHANGE, fontChange);
addChild(font_cb);

rotate_btn = new Button();
rotate_btn.label = "旋轉 / 停止";
rotate_btn.width = 100;
rotate_btn.x = font_cb.x + font_cb.width + 20;
rotate_btn.addEventListener(MouseEvent.CLICK
, function(evt:MouseEvent):void{
if(hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}else{
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
});
addChild(rotate_btn);

msg = "";
for(var j:int=0; j<20; j++){
msg += "中文世界, ";
}

displayText(msg);
}

function fontChange(evt:Event):void{
displayText(msg, font_cb.selectedItem.label);
}

function displayText(str:String = ""
, fontName:String = "_serif"
, fontSize:Number = 12.0
, fontColor:uint = 0x000000):void{
if(textContainer!=null){
removeChild(textContainer);
}
textContainer = new Sprite();

var fd:FontDescription = new FontDescription(fontName);
var ef:ElementFormat = new ElementFormat(fd, fontSize, fontColor);

var te:TextElement = new TextElement(str, ef);
var tb:TextBlock = new TextBlock();
tb.content = te;

var lineWidth:Number = 250;
var xPos:Number = 0;
var yPos:Number = 0;

var yMax:Number = 0;

var line:TextLine = tb.createTextLine (null, lineWidth);
while(line){
line.x = xPos;
line.y = yPos + line.textHeight;

yPos += line.height + 5;
textContainer.addChild(line);

yMax = line.getBounds(textContainer).bottom;

line = tb.createTextLine(line, lineWidth);
}

textContainer.graphics.lineStyle(0);
textContainer.graphics.drawRect(0, 0, textContainer.width, yMax);

textContainer.x = stage.stageWidth / 2;
textContainer.y = stage.stageHeight / 2;

addChild(textContainer);
}

function onEnterFrameHandler(evt:Event):void{
if(textContainer!=null){
textContainer.rotation++;
//trace("rotation = " + textContainer.rotation);
}
}

init();


至於輸出時,好像選擇 Flash Player 10 或 Flash Player 10 (flash.text.engine API) 都可以:


圖片:


瀏覽效果(記得先安裝 Flash Player 10):
http://ben.rb.chang.googlepages.com/20080730_flash_player10_local_font.html



瘦小腹 | 回到頂部
Icon
網路的事情,讓網路解決

[ 逛網路就像是在探險 ]

    神 魂 顛 倒 T W G

http://bbs.flash2u.com.tw

http://tw.myblog.yahoo.com/flash2u-twg

http://flash-silverlight.blogspot.com/

http://flash2u.spaces.live.com/?_c02_owner=1

簡版






可否給我範例檔?





自體脂肪隆乳 | 回到頂部
下一主題 上一主題