Air SDK和Flex SDK的区别

最近将 AS 开发的 SDK 从 Flex SDK 4.9.1 升级到了 Air SDK 4.0,导致之前写的一个 FLV 播放器不能播放视频了,最后发现 bug 是一个方法内的变量名和类中的一个 get 方法重名了。类似下图中所示情况: 图中变量 time 和 get 方法 time 重名,而编译器对这种重名的处理在 Flex SDK 和 Air SDK 下是不一样的。 Flex SDK 下,会根据上下文将var time:int = time;中的第二个 time 作为 get 方法,而 Air SDK 中,这行两个 time 会被当作同一个变量,也就是自己等于自己,而 int 类型定义时候会被初始化为 0,所以使用 Air SDK 输出结果为 0,使用 Flex SDK 输出结果为 1000。 看来 Air SDK 不如 Flex SDK 智能啊 :)

三月 27, 2014 · 1 分钟 · Zhiya

Eclipse 4.3安装Flash Builder Plugin

Flash Builder 是一个基于 Eclipse 的 IDE,在 Flash Builder 文件夹下的 utilities 目录下,官方已经为我们提供了插件版的安装程序,名为 Adobe Flash Builder 4.7 Plug-in Utility,插件版可以将 Flash Builder 嵌入到已经安装好的 Eclipse 中,作为 Eclipse 的一个视图,这样就可以在 Eclipse 中开发 AS 程序。 执行插件版安装程序后按提示进行,Eclipse 目前的最新版是 4.3,而 Flash Builder 4.7 的插件版只支持 Eclipse 3.7 或 4.2 版,无法安装在 4.3 中。 解决办法是,下载 Eclipse 4.2,现将 Flash Builder 插件版安装到 4.2 版的 Eclipse 中,再拷贝 Eclipse 文件夹下的 dropins 目录覆盖 Eclipse 4.3 的 dropins。启动 Eclipse 4.3,第一次启动速度会很慢,启动后,Flash Builder 插件版就已经安装到 Eclipse 4.3 中了。

二月 27, 2014 · 1 分钟 · Zhiya

升级到Flex SDK 4.9.1后无法找到基类BitmapAsset的问题

一个使用 flex sdk 编译的项目在升级 sdk 到 4.9.1 后出现了如下错误: errors: 1017: The definition of base class BitmapAsset was not found. google 后发现也有人遇到了这样的问题,详见:http://mail-archives.apache.org/mod_mbox/flex-dev/201303.mbox/%3CCD596C86.4E4D3%[email protected]%3E flex sdk 4.9 中的 core.swc 的体积比 4.8 中 core.swc 的体积小了大概 1/2,估计部分基类被从 core.swc 中移了出来,导致找不到 BitmapAsset。 解决办法是,在项目上单击右键——属性——Actionscript 构建路径——添加 SWC,定位到 sdk 安装路径下的 framework/libs 文件夹下,选择 framework.swc。 如果展开 framework.swc 包,可以看到 BitmapAsset 类,所以将其添加到构建路径中,就可以解决找不到基类的问题。

八月 27, 2013 · 1 分钟 · Zhiya

在Flash中载入swf文件并逐帧播放

在 Flash 中导入 swf 并且播放,使用 ActionScript 中的 loadMovie()函数就可以完成,但是如果要逐帧播放就比较麻烦了。因为逐帧播放时,要么给每帧定一个播放时间,要么然手动设置按钮控制。 这里以按时间逐帧播放为例,介绍一下如何使用 ActionScript 控制。 控制逐帧播放的代码如下: var currentPage = _root._currentframe; //设定当前页变量 var i = 0; function timer() { if(currentPage == _root._currentframe) { //如果播放到当前页则跳到下一页 gotoAndPlay(currentPage + 1); currentPage = _root._currentframe; } } timeInter = setInterval(timer, 3000); //设置定时器3000ms 载入影片代码: loadMovie("XXX.swf",_root); 具体效果图: Interval 层第一帧为计时器代码,Interval 最后一帧代码非常重要: ClearInterval(timeInter); 最后一帧清除掉计时器,是防止循环播放后重复添加多个计时器。 Stop 层每一帧添加 stop();命令。Content 层为具体内容。

十一月 22, 2012 · 1 分钟 · Zhiya