Flex

Flex教學-FlashPlayer支援中文字型和開啟與儲存本機檔案

梅干 2009/03/21

  FlashPlayer10終於有了重大的改變了,聽到這個好消息,令梅干心情興奮不已,這幾天就將先前正在開發的影像人先丟一邊,把目前FlashPlayer10支援的部分作個總整理,FlashPlayer10支援本機開啟圖檔與儲存,同時還可呈現出中文的字型,這總算解決了先前將文字先載入,檔案大到嚇死人,因此今天花了一點時間,作了一個小範例,將開啟本機圖檔、儲存以及讀入本機字形作個總整,有興趣的朋友們不坊看一看吧!ps.另外感謝好友鬼佑所拍攝的照片,喜歡鬼佑的朋友們,可到他的部落格去喔!有更多好圖。

[我要前往]


save2Disk.mxml

<?xml version=“1.0” encoding=“utf-8”?>

mx:Script
<![CDATA[ import mx.controls.Alert; import mx.graphics.codec.JPEGEncoder;

        [Bindable]
        private var arr:Array=new Array();
        private var file:FileReference = new FileReference();

        private function init():void{
            //讀取本機端字型
            arr=Font.enumerateFonts(true);
            arr.sortOn("fontName", Array.CASEINSENSITIVE);
            var arrFont:Array=new Array;
            for(var i:int=0; i < arr.length; i++)
            {
                arrFont.push(arr[i].fontName);
            }
            arr=arrFont;
        }

        //瀏覽本機圖檔
        private function openFileClick():void{
            //支援瀏覽的副檔名
            var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png");
            this.fr.browse([imagesFilter]);
        }

        //選擇圖檔
        private function selectHandler(event:Event):void{
            this.fr.load();
        }

        //開啟後將圖檔載入到image中
        private function completeHandler(event:Event):void{
            image.source = this.fr.data;                
        }

        //儲存檔案
        private function savePic():void{
            if(fileNameTxt.text.length > 0){
                var bitmapData:BitmapData = new BitmapData(pic.width, pic.height);
                bitmapData.draw(pic,new Matrix());
                var bitmap : Bitmap = new Bitmap(bitmapData);
                bitmap.smoothing=true;
                var jpg:JPEGEncoder = new JPEGEncoder(100);
                var ba:ByteArray = jpg.encode(bitmapData);
                file.save(ba,fileNameTxt.text + &#8216;.jpg&#8217;);
            } else {
                Alert.show(&#8220;請輸入檔名&#8221;,&#8221;錯誤XD~&#8221;);
            }
        }           

        private function fontFamily():void
        {
            T.setStyle(&#8220;fontFamily&#8221;,this.myfonts.selectedLabel);
        }
    ]]><br />
</mx:Script><br />
<net:FileReference id="fr" 
     select="selectHandler(event)"
     complete="completeHandler(event)"/><br />
<mx:Button label="開啟本機圖檔" click="openFileClick();"/></p>















範例預覽

[範例下載]