用vim写as3

由于本人是个vim控,特别不习惯传统的IDE,以前用dreamweaver写php,到换了vim写php,那简直不是一般的变化。IDE写代码其实也很不错,软件里面弄了很多人性化的设置。vim我喜欢的是它那种命令和输入切换的模式,以及一系列自由调整的快捷键。 用vim写as3确实是很纠结的一件事情,原因如下: 1.团队开发,大家都用FLASHBUILDER,可能有很多协调上的任务不能再vim上完成。(这个到到具体工作才知道) 2.对FLASH的组件包支持不完整,有很多flex不能够编译的包,在百度上能找到解决方案,百度上搜索到用vim来编写as3的文章很少很少,我需要花很多时间自己探索解决。 3.不能自动加载类,不能简捷的进行断点调试。 好吧,凡事都不能两全其美的,但是能用上vim进行as3开发,在速度上,还是自身体验上都是很爽的事情。 下面入正题

安装Ant

  1. Ant下载页面下载最新版的Ant。我将它解压到D:\ant;
  2. Ant需要安装JRE,但是如果你安装JDK的话,支持的task更多,所以现在下载JDK并安装,我将其安装到D:\Java\jdk1.6.0_25;
  3. 设置环境变量JAVA_HOME到D:\Java\jdk1.6.0_25,设置环境变量ANT_HOME到D:\ant;
  4. 将D:\Java\jdk1.6.0_25\bin和D:\ant\bin加入环境变量PATH。
  5. 安装flex sdk http://www.adobe.com/devnet/flex/flex-sdk-download.html
  6. 设置环境变量 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

发表评论