在纯AS项目中嵌入swf资源

在纯as项目中,使用Embed元标签嵌入swf资源。

近来想要告别Flash Pro编译,因为从效率上和资源占用上来说,FlashDevelop功能齐全又快速方便。不过有些图形资源还是只有用Flash Pro做起来最简单,而且我的早期项目大多是在Flash Pro里做的,所以我需要将他们嵌入到代码当中。

经过尝试,最符合我要求的操作是这样:

[Embed(source = '/assets/bannerProducer.swf', symbol = "toolbar")]
[Bindable]
public static var TOOL_BAR:Class;

其中,source后面的路径是项目路径,和嵌入元素的类所在的包无关;symbol属性指向的是希望从swf中取出哪个元件,元件需要事先在属性里选择“为ActionScript导出”。使用的时候直接声明实例就好:

var toolbar:TOOL_BAR = new TOOL_BAR();

PS:发现这样做之后,字体会有问题。在Flash Pro里面,文本框设置字体为“微软雅黑”,然后在平滑选项里选择“使用设备字体”,输出的swf会有限使用本地的“微软雅黑”字体;导入再输出的时候,只会保留“设备字体”这个选择。如果在Flash Pro里面嵌入字体,显示就正常了。

AS3中的插件模式开发(一)

插件式开发是我非常喜欢的一种设计模式。实际工作中,对某一产品,经常因时间和场景的不同,需要不同的功能。比如,视频播放器,有时候需要包含贴片广告、更多推荐的全功能版本,有时候只需要播视频的基础功能;再比如一款在线游戏,可能圣诞需要上线一个活动,春节又希望上线另一个活动,但是两个活动的逻辑和功能可能完全不同,而且活动下线之后,里面的逻辑和功能可能再也用不上了。于是,为了解决这些问题,我们可以求助插件式开发。

本系列文章将在新博客更新,链接在此,请移步阅读。

继续阅读“AS3中的插件模式开发(一)”

Flash开发Android应用的一点摸索

今天早上在小米手机上跑通了Flash Builder开发Android应用的流程,大致经验如下:

  1. 真机测试要求移动设备必须有驱动,能够被windows系统识别
  2. Flash Builder比较傻,只能真机调试
  3. 调试的设备需要安装air,我的xt800系统只有2.1,无法安装air,所以虽然可以识别,但是无法调试,用小米就没问题
  4. 发布的时候可以直接打包运行时,但是体积会膨胀很多(大约8M,应该包含了air运行时)
  5. 发布后的apk能否在机器上运行仍需比照air的系统要求,xt800又败了……

分析Adobe的现状,我这么认为:

正如之前宣布的,已经放弃继续开发移动端的Flash Player插件,因为他们认为在移动端,Native App会击败绝大多数的Web App,而且开发者也几乎不会针对移动用户做很好的优化。与此同时他们加大对新开发环境的布局,新版Flash Pro和Flash Builder都支持至少三种Native App的发布(iOS、Android、Blackberry)。不过可惜的是,相对于iOS直接编译成原生应用,Android系统必须附带一个内绑定的air运行时实在让人很不爽,性能和系统要求会给产品发布带来很大问题。而且我相信iOS那种封闭的环境都能搞定,Android这种开放的标准理应更好做才是。

这可能跟air的尴尬处境有关。相比Flash Player这个事实标准,air从推出到现在始终不温不火,Adobe始终没有公布过它的安装率,估计一定不高。air除了能让我们这些前端工程师能不太费力的开发一些本地应用,似乎并没有起到很大的作用。但是Adobe官方对他寄予厚望,应用市场、开发大赛一直在搞,不过似乎没什么起色。如今,他们将air定位成移动端开发解决方案,试图和Flash Player各自霸占一条业务线。但是AIR对系统的要求使得它无法适用于所有机型,这就更让人心生迷惑了,有谁会选择这样一个解决方案呢?

或者我只能这样理解,air本身提供了多种成熟的解决方案,比如视频支持、3D支持、绘图API等,这些东西如果使用标准SDK自行开发的话会是很大一笔开支;而系统是可以自己刷的,所以相对起来,我们可以认为用户会比看起来的更多。

在Flash Builder 4.6里使用spark + Robotlegs

在spark里使用Robotlegs的小问题,官网现在还是mx框架,可能会有人遇到。

为了有一套好用的框架和组件改善开发环境,近期开始学习flex。因为之前几乎没有接触过flex,所以直接从FB4.6学起,直接开始用spark库。

自从7月份换了新工作接触到Robotlegs后,我就喜欢上这个框架,它非常自然、方便的解耦功能模块。所以学习flex第一步还是想继续使用Robotlegs框架,结果很快遇到了第一个问题。

继续阅读“在Flash Builder 4.6里使用spark + Robotlegs”

Flash Player 11 找不到JSON?

想试用FP11的新API,需要Flex 4.5.1,并且在编译的时候增加参数-swf-version=13

2011-11-23 更新

需要使用FP11中的新API,使用Flex 4.5.1默认编译仍然不行,必须在编译时增加参数:-swf-version=13,强制mxmlc输出13版本的swf文件。

在FD里面,应该右击项目 > Properties > Compiler Options > Additional Compiler Options > 添加参数,保存。

之后,编译通过,测试通过。


继续阅读“Flash Player 11 找不到JSON?”

Flash Player的TextField自动缩放机制

Flash Player在处理文本时,出于效率考虑,不会随时根据代码来调整文字排版——据我所知文字排版消耗非常大——而是在添加到显示列表或每一帧结束时再做处理。

今天发现一个问题,先详细描述一下我的需求:

  1. 显示一段文字,文字字数不定,但文本框长度有限,短于限制则完全显示,超过限制则截断只剩一行,并续以“…”
  2. 必须应对多语言环境,比如中文、英文、俄文等

继续阅读“Flash Player的TextField自动缩放机制”

解决ANT编译Flash时的 Error Loading : jvm.dll

调用Ant编译时,执行mxmlc出错,但是Ant并未捕获到错误的真正内容,于是报告了默认错误——“Error loading : jvml.dll。其实这个错误并未包含真正的错误信息,从这个错误出发无法找到问题所在。我通过逐步排查发现问题处在mxmlc编译上,真正的错误提示是找不到“mvcr100.dll”这个文件,下载复制到指定位置后,就正常了。

新工作的第一个功能即将开发完毕,但是在发布的时候遇到点问题。因为工程浩大,版本更迭的编译发布是个严峻问题,这边使用Ant来解决 。其他人都用FDT做开发,Eclipse本身就有Ant插件,所以用起来自然而然,没遇到过什么问题。而我用FD,FD不支持类似的插件,所以必须用命令行进行编译。

于是问题来了,当我下载Ant并运行时,报错:

Error loading : C:\Program Files\Java\jre6\bin\client\jvm.dll

继续阅读“解决ANT编译Flash时的 Error Loading : jvm.dll”

Astinus 0.2版升级计划

我决定,正式将“肉山用户路径分析系统”命名为“Astinus”,中文名“阿斯特纽斯”。关于阿斯特纽斯,可以看下这个链接:http://tieba.baidu.com/f?kz=533326440。

我决定,正式将“肉山用户路径分析系统”命名为“Astinus”,中文名“阿斯特纽斯”。关于阿斯特纽斯,可以看下这个链接

在8月内,我计划对该产品进行一次升级,升级的主要Features如下:

继续阅读“Astinus 0.2版升级计划”