用JSFL脚本帮助进行Flash文件的版本控制  

     

大多数版本控制软件都只能管理文本文件,对Flash这样的二进制文件很难找到合适的版本控制软件。不过,本文介绍一个通过jsfl脚本程序实现基本的版本控制的功能的方法,包括记录修改时间,修改者,自动添加版本号等。希望能对大家有一定帮助。

为什么需要版本控制呢?
也许个人作坊式的开发体现不出版本控制的必要性,但在多人协作的环境下,有一套有效的版本控制规则和方法对整个团队的工作效率是大有帮助的。最基本的功能,自动维护一个版本号,这样在每次发布、测试的时候可以马上知道文件的版本,避免一些更新不到位所产生的低级问题。另外在每次文件修改时,对修改时间和修改人做个记录,这样在发生问题的时候至少可以由此找到相关的人员,并推断一些可能的因素。

但是如果要手工记录和维护,又太麻烦,很多人无法坚持,也常常忘记。。。这样的工作最好能够由电脑自动完成。

于是我想到了jsfl,jsfl可以对执行大部分flash软件的操作,我的方案是在适当的时候,让flash执行一段jsfl程序,自动把相应的信息保存在整个flash文件第一帧的as代码的最前面。写成变量的形式,这样既可以由开发者查阅,同时也能在swf中操作这些变量,做相应的显示或操作。

以下是代码

YourName="Frank Li (http://mianwo.blogspot.com)";
function changeVar(as,name,value,sep){
if(sep==undefined){
sep="=";
}
if(as.indexOf(name+sep)!=-1){
var s=as.indexOf(name+sep);
var e=as.indexOf(";",s);
var e2=as.indexOf("
",s);
if(e==-1){
  if(e2!=-1){
   e=e2;
  }else{
   e=as.length-1;
  }
}
var str=as.substring(s,e);
if(value=="++"){
  var ns=name+sep+(Number(str.split(sep)[1])+1);
}else{
  var ns=name+sep+value;
}
return as.split(str).join(ns);
}else{
if(value=="++"){
  value=1;
}
return name+sep+value+";
"+as;
}
}
var as=fl.getDocumentDOM().timelines[0].layers[0].frames[0].actionScript;
as=changeVar(as,"build_num","++");
as=changeVar(as,"build_time",new Date().getTime());
as=changeVar(as,"//Modified by "+YourName,new Date()," at ");
fl.getDocumentDOM().timelines[0].layers[0].frames[0].actionScript=as;
fl.saveDocument(fl.getDocumentDOM());
fl.getDocumentDOM().testMovie();

首先,在flash中新建一个jsfl文件,复制以上代码。

然后,修改第一行YourName变量中的内容,改成你自己的名字。

起一个适当的名字,例如Build Info.jsfl,保存在你的系统盘下面的

Documents and Settings<你的login id>Local SettingsApplication DataMacromedia<你的flash版本><语言>ConfigurationCommands

目录下

这样你的flash的command菜单下会多出一项,名称是你刚保存的jsfl的文件名。

点击这项菜单,你会看到flash开始执行test movie的操作。

然后去查看第一个场景的action,你会发现多出类似下面的内容:

//Modified by Frank Li (http://mianwo.blogspot.com) at Sat Mar 10 11:25:01 GMT+0800 2007;
build_time=1173497101406;
build_num=684;

第一行注释写明了作者以及修改时间
第二行是修改时间的数字格式
第三行是版本号,每次执行这段命令,版本号会自动加1。

你可以通过一些快捷键设定使这段程序完全融入你的日常工作中。通常ctrl-enter是flash开发者最常用的快捷键,我们来把这个快捷键改成执行我们刚才创建的jsfl程序。在维护版本的操作完成之后,这段jsfl最后执行一个Test Movie的操作,这样使用中我们就完全感觉不到区别了。

在flash的菜单中选择Edit -> Keyboard Shortcuts...
从默认设置复制一份setting
找到Control -> Test Movie
删除默认的Ctrl-Enter快捷键
然后到Commands -> [JSFL脚本的文件名]
设定快捷键Ctrl-Enter

这样就完成了

以后你每次按下Test Movie的时候,脚本会帮你记录上你的名字,修改的时间并把版本号加1,很完美吧!哈哈~

点此下载以上脚本