2010年10月29日

Flash获取当前文件名、路径名

Flash获取当前文件名、路径名

其实这个功能没有什么大用,很简单;只是最近在做一些课件时,并不知道这节课将来属于某个年级,即便知道,现在的教材这么混杂,也有可能更换。

为了方便课件使用,我决定,用目录与文件名来设定是哪节课,如课件放在“\小学\语文\3年级\上册”目录下时,打开课件,会自动显示“小学语文三年级上册”;课件的文件名称写为“12.春.swf”,则打开课件时,课堂标题会显示为“第十二课 《春》”。

实现如上效果,无法是判断课件所处的路径与文件名,并将数字转到汉字就行了。

如下是一个完整的类。

class FileName extends MovieClip {
//构造方法
function FileName() {
}
//获取文件路径
function getPath():String {
   var filePath:String = _root._url;  
   return filePath.substring(0, filePath.lastIndexOf("/"));
}
//获取当前文件名
function getFileName():String {
   var filePath:String = _root._url;
   return filePath.substring(filePath.lastIndexOf("/")+1, filePath.length);
}
//获取课程名称
function getCaseName():String {
   //取出文件名
   var fileName:String = this.getFileName();
   //取出课程名称                           
   if (fileName.indexOf(".")>-1) {
    var tName = fileName.substring(fileName.indexOf(".")+1, fileName.lastIndexOf("."));
    return unescape(tName);
   }
   return "";
}
//获取课程编号,即第几节课
function getCaseNumber():Number {
   //取出文件名
   var fileName:String = this.getFileName();
   //取出课程编号
   if (fileName.indexOf(".")>-1) {
    var tNum = fileName.substring(0, fileName.indexOf("."));
    var caseNum = Number(tNum);
    if (isNaN(caseNum)) {
     caseNum = 100;
    }
    return caseNum;
   }
   return 0;
}
//获取课程中文编号,即第几节课,如第十节,第二十一节;
function getCaseChineseNumber(num):String {
   var caseNum = num;
   //中文课程编号
   var chinaNum:String;
   var arrNum:Array = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "百");
   if (caseNum<=10) {
    //个位数
    chinaNum = arrNum[caseNum];
   } else {
    //取十位
    var tNum = Math.floor(caseNum/10);
    if (caseNum%10 == 0) {
     //十位整数,如20,30,50
     chinaNum = arrNum[tNum]+"十";
    } else {
     if (caseNum>10 && caseNum<20) {
      //十至20
      tNum = caseNum-tNum*10;
      chinaNum = "十"+arrNum[tNum];
     } else {
      chinaNum = arrNum[tNum];
      chinaNum += arrNum[10];
      //取个位
      tNum = caseNum-tNum*10;
      chinaNum += arrNum[tNum];
     }
    }
   }
   return chinaNum;
}
//获取科目
function getSubject() {
   var filePath:String = this.getPath();
   //去除上下册
   filePath = filePath.substring(0, filePath.lastIndexOf("/"));
   //去除年级
   filePath = filePath.substring(0, filePath.lastIndexOf("/"));
   return filePath.substring(filePath.lastIndexOf("/")+1, filePath.length);
}
//获取年级
function getLevel() {
   var filePath:String = this.getPath();
   //去除上下册
   filePath = filePath.substring(0, filePath.lastIndexOf("/"));
   return filePath.substring(filePath.lastIndexOf("/")+1, filePath.length);
}
//获取上下册
function getBook() {
   var filePath:String = this.getPath();
   return filePath.substring(filePath.lastIndexOf("/")+1, filePath.length);
}
//获取当前课件的名称,并返回“第N课 (课程名)”
public function getCaseTitle() {
   //中文课程编号
   var chinaNum:String = this.getCaseChineseNumber(this.getCaseNumber());
   //课程名称
   var caseName:String = this.getCaseName();
   caseName = "第"+chinaNum+"课 \n《"+caseName+"》";
   caseName = unescape(caseName);
   return caseName;
}
//获取当前课件的主标题,如“小学语文一年级上册”
public function getTitle():String {
   var title = this.getSubject();
   var level = this.getLevel();
   var book = this.getBook();
   //
   if (level.length>0) {
    var t = level.substring(0, 1);
    level = this.getCaseChineseNumber(Number(t))+level.substring(1);
   }
   var reTitle = title+level+book;
   if (reTitle == "" || reTitle.length<1||reTitle.indexOf("%")>-1) {
    return "该课件存放位置错误!";
   }
   return reTitle;
}
}


没有评论:

发表评论