由于本人是个vim控,特别不习惯传统的IDE,以前用dreamweaver写php,到换了vim写php,那简直不是一般的变化。IDE写代码其实也很不错,软件里面弄了很多人性化的设置。vim我喜欢的是它那种命令和输入切换的模式,以及一系列自由调整的快捷键。 用vim写as3确实是很纠结的一件事情,原因如下: 1.团队开发,大家都用FLASHBUILDER,可能有很多协调上的任务不能再vim上完成。(这个到到具体工作才知道) 2.对FLASH的组件包支持不完整,有很多flex不能够编译的包,在百度上能找到解决方案,百度上搜索到用vim来编写as3的文章很少很少,我需要花很多时间自己探索解决。 3.不能自动加载类,不能简捷的进行断点调试。 好吧,凡事都不能两全其美的,但是能用上vim进行as3开发,在速度上,还是自身体验上都是很爽的事情。 下面入正题
安装Ant
- 到Ant下载页面下载最新版的Ant。我将它解压到D:\ant;
- Ant需要安装JRE,但是如果你安装JDK的话,支持的task更多,所以现在下载JDK并安装,我将其安装到D:\Java\jdk1.6.0_25;
- 设置环境变量JAVA_HOME到D:\Java\jdk1.6.0_25,设置环境变量ANT_HOME到D:\ant;
- 将D:\Java\jdk1.6.0_25\bin和D:\ant\bin加入环境变量PATH。
- 安装flex sdk http://www.adobe.com/devnet/flex/flex-sdk-download.html
- 设置环境变量 PATH = D:\flex\bin
Vim的设置
只需一步,将下面这句代码加入你的vimrc即可:
set makeprg=ant "设置编译器为ant
Ant的设置
将下面两个文件复制到你的项目文件夹(即src文件夹的上层文件夹)这两个文件的最新版本在这里:https://gist.github.com/944712
# 设置FLEX SDK的路径 FLEX_HOME=c:/Program Files/Adobe/FlashBuilder4Plug-in/sdks/4.1.0 # 设置源文件路径 # {$basedir} 就是本文件所在的目录 SRC_DIR =${basedir}/src # libs目录,一般用来放swc文件 LIBS_DIR =${basedir}/libs # 这个就是Flash Builder建立的bin-debug DEPLOY_DIR = ${basedir}/bin-debug #自定义的类库源码 LIBS_DUDU = e:/works/duduw_as3lib/src
<!-- 载入配置文件 --> <!-- 确定flexTasks.jar的位置 --> <!-- 清理部署目录中的内容 --> <!-- 将资源目录复制到部署目录 --> <!-- 编译 --> <!-- 需要libs的时候解开注释 <compiler.library-path dir="${basedir}" append="true"> <include name="libs" /> </compiler.library-path> --> <!-- 必须加上这行,如果不加,当使用[Embed]的标签的时候,就会出现VerifyError: Error #1014: 无法找到类 。 原因应该是没有将mx.core包编译进入。官方文档说这个属性默认是true, 不要相信它--> true <!-- 编译成可调试的版本 --> true <!-- 打开调试器进行调试 --> <!-- 不能直接调用fdb,因为这样不会打开新的命令行窗口,必须使用/K或者/C参数,加上start来启动fdb -->
编译
这个就简单了,只需要在Vim下执行下面的语句:
:make
或者
:!ant
执行下面的代码,然后编译,如果有编译错误,就能正常的跳转到错误文件的对应位置:
:set errorformat=%E\ \ \ \ [mxmlc]%f(%l):\ 列:\ %c\ %m
需要注意一点的是,在ex模式或者在命令行模式中输入errorformat属性值的时候,必须对空格用反斜杠转义,否则Vim会不接受这些参数值。网上找的很多例子可能都忽略了这点。上面的例子中,已经进行了转义。 为什么例子中有个中文?因为编译器自动识别了我的语言,因此输出的错误信息是中文的,我也必须用中文来分析。如果编译器输出信息为英文,那么这里的 列
应为 col
。 由于使用了中文,如果将这段代码写在vimrc中的话,就必须进行编码转换:
let &errorformat=iconv("%E\ \ \ \ [mxmlc]%f(%l):\ 列:\ %c\ %m", 'utf8', &enc)
至于语法的详细含义和用法,这里写的很清楚::help errorformat
注意:这时候vim的_vimrc里面的encoding要设置屏蔽到,(不知道为什么,这应该跟cmd的字符编码有关) 当所有事情准备完毕后你会发现编译速度怎么没有flashbuilder的快?原因是没有安装缓存加速器。 1. 下载FCSHServer并安装; 2. 设置环境变量FCSHServer={你的安装目录,例如:D:\FcshServer}。zrong强烈建议你安装的文件夹不要包含空格,貌似环境变量设置之后,只有重启Windows才能起作用; 3. 设置安装目录下server.ini中的sdk和java的值。sdk指向flex SDK文件夹,java指向JDK文件夹,例如:
sdk=d:\flex_sdks\4.1.0 java=d:\Java\jdk1.6.0_25
4. 配置Ant项目,直接看代码吧,有注释(这个项目会经常更新,最新的版本看这里):
<project name="runtest" default="build"> <property file="build.properties" /> <!-- 取环境变量 --> <property environment="env"/> <!-- 设定一个默认的主文件,默认编译的是RunTest.as。 若需要编译其他文件,可以调用ant -Dmain=Other,不需要扩展名 --> <property name="main" value="RunTest" /> <!-- fcsh的编译地址 --> <taskdef name="fcsh" classname="fcsh" classpath="${env.FCSHServer}/fcsh.jar" /> <target name="build" depends="init,compile,fdb" /> <!-- 清理目录,复制没有嵌入的文件 --> <target name="init"> <delete dir="${DEPLOY_DIR}/test_${main}.swf" /> <delete dir="${DEPLOY_DIR}/assets" /> <mkdir dir="${DEPLOY_DIR}/assets" /> <copy todir="${DEPLOY_DIR}/assets"> <fileset dir="${SRC_DIR}/assets" excludes="**/source/" /> </copy> </target> <!-- 编译 --> <target name="compile"> <fcsh consoleencoding="UTF8"> <arg value="mxmlc ${SRC_DIR}/${main}.as"/> <arg value="-output=${DEPLOY_DIR}/test_${main}.swf"/> <!-- 这个参数其实可要可不要,因为编译的时候,默认会调用这个xml文件。--> <arg value="-load-config=${FLEX_HOME}/frameworks/flex-config.xml"/> <arg value="-source-path=${LIBS_DUDU}" /> <arg value="-debug=true" /> <arg value="-static-link-runtime-shared-libraries=true"/> </fcsh> </target> <!-- 打开调试器进行调试 --> <target name="fdb"> <exec executable="cmd" spawn="true" osfamily="windows"> <arg line="/K start fdb ${DEPLOY_DIR}/test_${main}.swf" /> </exec> </target> </project>
# 设置FLEX SDK的路径 FLEX_HOME=D:/flex_sdks/4.1.0 # 设置源文件路径 # {$basedir} 就是本文件所在的目录 SRC_DIR =${basedir}/src # libs目录,一般用来放swc文件 LIBS_DIR =${basedir}/libs # 这个就是Flash Builder建立的bin-debug DEPLOY_DIR = ${basedir}/bin-debug #自定义的几个类库源码 LIBS_DUDU = e:/works/duduw_as3lib/src
注意:1 flex的路径不能有空格,否则编译时报错 2.在xml里面的fcsh里面加入 <arg value=”-library-path=${LIBS_DIR}” /> 否则找不到swc文件 3.修正报错信息 let &errorformat=iconv(“%E\ \ \ \ \ [fcsh]%f(%l):\ col:\ %c\ %m”, ‘utf8’, &enc)
关于安全沙箱的问题
在 C:\Windows\System32\Macromed\Flash\FlashPlayerTrust 下建立一个名为 myTrustFiles.cfg
内容 c:/ d:/ e:/ f:/
以上资料大部分来自,自己稍作修改: http://zengrong.net/post/1320.htm http://zengrong.net/post/1307.htm http://zengrong.net/post/1423.htm