package src {
import flash.display.Sprite;
import flash.filesystem.File;
import flash.display.Bitmap;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.TextEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.geom.Rectangle;
public class Main extends Sprite {
public const fu:String = "\\";
public var fmt:TextFormat = new TextFormat(null,12,null,null,null,null,null,null,"center");
public var f:File = new File;
public var nav:TextField = new TextField;
private var div:Sprite = new Sprite;
private var num:uint = 0;
private var n:uint = 0;
private var isdrag:Boolean = false;
public function Main() {
nav.x = nav.y = 10;//导航
nav.width = 780;
nav.height = 20;
nav.type = "input";
nav.border = true;
addChild(nav);
nav.addEventListener(TextEvent.LINK,link); //链接监听
stage.addEventListener(KeyboardEvent.KEY_DOWN,kd); //键盘监听
addChild(div);
div.y = 40;
view(File.getRootDirectories()); //得到根目录 返回一个数组 C:\ D:\
this.addEventListener(MouseEvent.DOUBLE_CLICK,click); //鼠标监听
this.addEventListener(MouseEvent.MOUSE_DOWN,down);
this.addEventListener(MouseEvent.MOUSE_UP,up);
}
private function kd(a:KeyboardEvent):void{
switch(a.keyCode){
case Keyboard.ENTER:
f.nativePath = nav.text;
if(f.exists){
openFile();
}
break;
case 65:
case Keyboard.BACK:
if(n > 0){
gotoDir(--n);
}
break;
}
}
private function view(a:Array):void{
while(div.numChildren) div.removeChildAt(0);
for(var i:int = 0;i<a.length;i++){
div.addChild(icon(a[i] as File,i));
}
}
private function icon(f:File,i:int):Sprite{
var s:Sprite = new Sprite;
var t:TextField = new TextField;
var b:Bitmap = new Bitmap(f.icon.bitmaps[0]);
s.doubleClickEnabled = true; //打开鼠标双击许可
s.alpha = f.isHidden?0.5:1;
s.name = f.nativePath;
t.defaultTextFormat = fmt;
t.text = f.name;
t.y = 32;
t.width = 40;
t.height = 20;
s.addChild(t);
s.addChild(b);
s.x = (i%20) *40;
s.y = int(i/20)*60;
return s;
}
private function click(e:MouseEvent):void{
if(e.target is TextField)return;
f.nativePath = e.target.name;
nav.htmlText =setlink(f.nativePath);
n = nav.text.split(fu).length - 1;
openFile();
}
private function down(e:MouseEvent):void{
if(!isdrag){
e.target.startDrag(); //允许组建可拖动
}
}
private function up(e:MouseEvent):void{
e.target.stopDrag(); //停止组建拖动
isdrag = false;
}
private function openFile():void{
if(f.isDirectory)
view(f.getDirectoryListing());
else
f.openWithDefaultApplication();
}
private function setlink(s:String,t:String= "我的电脑\\"):String{
var m:Array = (t+s).split(fu);
num = m.length - 1;
t = "";
for(var i:int=0; i<m.length-1; i++){
t += '<a href="event:'+i+'">'+m[i]+fu+'</a>';
}
return t+m.pop();
}
private function link(e:TextEvent):void{
gotoDir(Number(e.text));
n = nav.text.split(fu).length - 1;
}
private function gotoF(n:uint):void{
if(n == 0){
view(File.getRootDirectories());
nav.htmlText =setlink("");
return;
}
f.nativePath = nav.text.replace("我的电脑\\","").split(fu, n).join(fu);
nav.htmlText =setlink(f.nativePath);
view(f.getDirectoryListing());
}
private function gotoDir(n:uint):void{
if(n == 0){
view(File.getRootDirectories());
nav.htmlText =setlink("");
return;
}
f.nativePath = nav.text.replace("我的电脑\\","").split(fu, n).join(fu);
nav.htmlText =setlink(f.nativePath);
view(f.getDirectoryListing());
}
}
}