package
{
//顯示相關
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Loader;
//事件
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.IEventDispatcher;
//讀取本機檔案系列
import flash.net.FileReference;
import flash.net.FileFilter;
public class Main extends Sprite
{
private var btn:Sprite;
private var ba1:ByteArray;
private var picl:Loader = new Loader();
//建構子
public function Main( )
{
init( );
disposeUI( );
}
private function init( ):void
{
//用sprite來做一個按鈕
btn = new Sprite();
//設了width 與 height會照程graphics畫不出來,這個問題還沒想出來
//btn.width = 120;
//btn.height = 120;
//打開滑鼠小手
btn.buttonMode = true;
//畫邊線,設定現的樣式
btn.graphics.lineStyle(0 , 0x00ff00);
//設定填色,透明度
btn.graphics.beginFill(0xFFCC00 , 0.5);
//畫一個矩形
btn.graphics.drawRect(0 , 0 , 60 , 25);
//結束填色套用
btn.graphics.endFill( );
//加入偵聽,MouseDown
addMouseDown(_btn);
}
private function disposeUI( ):void
{
this.addChild(_btn);
}
private function onBtnDown(e:MouseEvent):void
{
//trace("Click");
//實體化一個開啟本機檔案的操作物件
var fr:FileReference = new FileReference( );
//設定檔案選取的類型,與顯示集合名稱
var fileFilter:FileFilter = new FileFilter( "Images", "*.jpg;*.gif;*.png" );
//偵聽,在使用者成功從「瀏覽」檔案視窗中選取項目時傳送。
fr.addEventListener(Event.SELECT , onSelected);
//偵聽, 在使用者取消選取「瀏覽」視窗時傳送。
fr.addEventListener(Event.CANCEL , onCancel);
//讀取系統檔案完成
fr.addEventListener(Event.COMPLETE , onCompLete);
//開啟視窗
fr.browse([fileFilter]);
}
private function onSelected(e:Event):void
{
trace( "Select" );
e.currentTarget.removeEventListener(Event.SELECT , onSelected);
e.currentTarget.removeEventListener(Event.CANCEL , onCancel);
//e.currentarget 發出事件的對象,即fr
//開始讀取目標
FileReference(e.currentTarget).load();
}
private function onCancel(e:Event):void
{
e.currentTarget.removeEventListener(Event.SELECT , onSelected);
e.currentTarget.removeEventListener(Event.CANCEL , onCancel);
trace( "cancel" );
}
private function onCompLete(e:Event):void
{
e.currentTarget.removeEventListener(Event.COMPLETE , onCompLete);
trace( "讀取完畢" );
//該處讀取回來的是byteArray需要透過Loader轉換成displayObject
picl.contentLoaderInfo.addEventListener(Event.COMPLETE , onPicComplete);
//讀取byteArray
picl.loadBytes(e.currentTarget.data);
}
private function onPicComplete(e:Event):void
{
picl.contentLoaderInfo.removeEventListener(Event.COMPLETE , onPicComplete);
try{
if(stage.getChildIndex(picl))
{
this.removeChild(picl);
}
}catch(error:ArgumentError)
{
//代表stage裡面沒有picl所以不用做什麼
}
//this.addChild(e.currentTarget.content);
this.addChildAt(picl,0);
}
//偵聽代理函式
private function addMouseDown(object:IEventDispatcher):void
{
object.addEventListener(MouseEvent.MOUSE_DOWN , onBtnDown);
}
}
}
沒有留言:
張貼留言