RIAMeeting 每周RIA行业资讯报道第二期

2 views
Skip to first unread message

cont...@riameeting.cn

unread,
Mar 23, 2009, 6:52:36 AM3/23/09
to RIAMeeting Discussion
存档地址:
http://www.riameeting.cn/?page_id=8

各位朋友大家好,欢迎您收看RIAMeeting为你带来的每周RIA行业资讯报道,我是RIAMeeting成员Lwz7512,让我带你回顾这一周
(2009/03/15--2009/03/20)的精彩内容!

本周可谓是好戏连台,惊喜不断,首先是Adobe开发者中心放出系列文章,而且SEO(搜索引擎优化) Technology Center也在这个时
间正式上线;随后在18号,Microsoft发布了Silverlight 3 beta,和IE8以加速其在RIA领域发展的步伐,巧合的是,同一
天Unity3D终于发布了众多游戏开发者,包括flash game开发者期待的Unity3D 2.5(windows版);此外我们还获得了开源
3D引擎papervision3D的最新消息,PaperVisionX的发展内幕;本周开源社区为我们带来了两个视频播放工具,pyro-
player和Open Video Player;诺基亚论坛为Flash Lite开发者带来了Flash Lite Developer's
Library v1.3;此外还有个小小的好消息,不知大家注意了没有,就是现在我们能访问国外一些原来不能访问的网站了,比如workpress域
名网站,其中最让我开心的是原来只能通过代理访问的网站比如PV3D的官方博客 和第一本PV3D的书作者的网站也能访问了。好了,下面我们就来详细了
解一下吧!

1 . ADC新一期精彩文章点评

这一期ADC推出了几篇非常实用的文章,比如:
建立可自动更新的AIR应用几个技巧

使用AIR可以使有web开发背景的人很容易的建立桌面应用,但是与传统web应用部署方式不同的地方在于,桌面应用的更新远比web应用复
杂,你要考虑原有版本在用户机器上的遗留内容,幸运的是AIR runtime 和SDK提供了updating API和framework。尽管有
更新框架的帮助,实际过程中还是会有写细节需要注意,该文章指出了在建立和部署AIR应用更新程序时可能遇到的潜在问题,并提供了一些技巧和技术来避免
它,这些技巧包括:

* 首先,你要为将来可能的更新做好准备,这些可能的更新原因包括安全补丁、bug、文字错误、丢失知识产权信息等,这些准备包括,你
要决定何时检测新的版本,更新是否是强制性的,最重要的是你必须认识到每一个版本都是产品生命周期的一小步,所以尽可能的减少对用户系统的侵入;
* 其次,重视应用ID(application ID),AIR应用是通过应用ID被AIR runtime和OS识别的,这个ID
有三个作用:关联应用存储目录(Application Storage Directory)、关联加密的本地存储(Encrypted
Local Store)、在更新过程中runtime用它来识别那个应用要被替代。所以一旦你的应用发布,你就不要轻易改变你的应用ID,除非你发布
的是一个完全不同的应用,当然应用ID不是识别一个应用的唯一标识,有相同ID但是不同签名的应用仍视为不同的应用;
* 再次,处理好文件依赖问题,AIR有三种文件类型:用户设置文件、SQLite数据库、特定应用的文件类型,所以对这些依赖的文件
做个记录来描述他们的路径、角色、目的地等信息,最后是能记录版本信息在文件里,这样对将来的更新非常有好处,你必须假定这些文件随时有可能在用户的机
器上丢失、损坏,并提供机制来修复他们;
* 第四,注意开发版和发布版的不同,首先应用存储目录不同,开发版是以应用ID开头的,而发布版是应用ID后面跟着随即数组合而成,
其次加密的本地存储也是不同的;
* 第五,打包和签名应用,在打包AIR应用时,有些文件类型是不能被ADT识别,这时需要开发者来确保程序需要的文件能被最终打包
到.air文件中,由于 Flexbuilder的向导缺陷,它不能浏览外部文件和目录,所以你必须手工拷贝他们到src目录或者bin目录,以保障能
把这些文件打包到.air文件中;
* 第六,测试新版本,新版本测试要考虑两种情况,一种是从原有版本升级,一种是首次安装,对于第一种情况,可能直接从AIR包安装更
新比较好,如果是在相同的测试环境来测试全新安装的情况,要确保卸载当前的应用、删除应用存储目录和其他应用创建的文件,然后再安装新的应用;
* 最后,发布你的应用,典型的一些步骤包括发布你的.air包到服务器上,修改你的updater xml文件以匹配新版本,检查你
的install badge以确保是最新的而且是功能齐备的,发布你的网站说明内容。

编者注:AIR应用的更新确实是个系统工程,其实跟我们的web应用在server端升级的道理一样,少不了一些配置和程序的更改,只不过程序
员关注的目标从服务端转到用户的机器上,AIR有他的特殊性,相信通过这篇文章的介绍,广大AIR开发者能很好的掌握更新系统的要点。
使用Flex Ant任务来编译Flex工程--第一部分:创建编译脚本

Flex ant任务是什么呢,做过java开发的人一定对ant不陌生,和编译java应用一样,flex ant task也是通过借助
ant编译环境来批量执行一系列flex编译任务,这些任务包括编译flex应用、modules、组件、生成asdoc、生成 swf文件的HTML
包裹页面等任务。flex ant task的原理是通过ant执行flexTasks.jar调用mxmlc和compc编译器任务,这种运行方式可
以是在FB中配置,也可以独立运行,这篇文章对这两种方式都做了详细的解释,文章末尾指出,对于编译企业级应用来说,自动编译和部署尤为重要,而且编译
脚本要做到:干净而且简单、可重用、对目前和将来的开发者来说易于使用;

编者注:使用flex ant tasks的好处在开发大型应用时能体现出来,如果开发的应用和模块有很多依赖关系,而且有些配置是不能在FB
中制定,这时只能通过这种方式来进行,不过这篇文章没指出flex ant tasks在使用时会遇到的问题,比如内存分配问题,相信他在下一部分中会
讲到,我们翘首期盼吧!这里对于对Flex Ant有兴趣的朋友,给出一个现成的例子,那就是Spring Actionscript 项目,这个项目
有完整的Flex Ant Task使用时需要的依赖,可以帮助大家快速上手使用ant编译Flex项目。点击这里获取SVN地址。
理解Flex itemEditors --第二部分:定义事件和复杂的编辑器

在 Flex框架中,当使用表格组件(DataGrid)或者List组件时,如果你希望用户可以编辑表格中或者列表中的内容时,可以通过使
用 ItemEditor来实现。这篇文章举了两个例子来介绍itemEditor中的两个事件itemEditEnd和
itemEditBeginning 的用法:

1,使用itemEditEnd来做数据输入结束后的校验,
2,使用itemEditBeginning来控制特定单元格状态是否可编辑。
同时指出itemEditEnd不能做异步的数据校验,也就是说只能做客户端的校验。

编者注:熟练掌握Flex框架中的一些使用技巧,可以对我们日常的开发起到非常好的帮助作用。
Flex cookbook 精选之 faqcontrib

faqcontrib实际上是来自印度班加罗的两位adobe的flex工程师组成的小组,他们积极贡献了许多开发技巧到flex
cookbook中去,文章列举了他们提供的一些很有用的技巧,采访了这二人的经历和他们对广大开发者的建议。

编者注:想当Technical Evangelist还得有真才实料啊,这样才真正能为社区做贡献。
H.264 视频的编码选项

这是一篇非常专业的介绍H.264规范和flashplayer关系的文章,相信许多开发者都不会很关注这样的内容,除了做流媒体开发的人,该
文章介绍了 H.264的基本概念,和制作这个编码格式的视频方法,以及大篇幅的介绍了各种编码参数的差异,还介绍了CS4中的媒体编码器的用法,看来
说来说去还是在做广告。曾经在youtube中看过一段高清视频,虽然效果好,但是下载速度慢的离奇,真怀疑这种媒体何时能突破网络的带宽限制。

编者注:H.264视频编码这篇文章已经由RIAMeeting的翻译小组翻译中,我们会在此篇文章翻译完成后,尽快更新中文译文的链接地
址。
使用TimelineWatcher类来让时间轴标签来派发事件

在广大Flash设计者和开发者中,你是否遇到过需要在Flash中,时间轴运行到某一个特定点的时候去做某些操作?
虽然大家常用的做法一般都是在需要做某种操作的时间的关键帧上添加具体操作代码或者派发操作事件。这样的做法带来的问题也显而易见:那就是使得
代码的维护变得越来越困难。当项目越来越大时,你不得不在各个时间轴上寻找你做了标记和操作的那个关键帧去找出,或者修改你的原有代码。

TimelineWatcher 类的发明是在将时间轴和动作分离的原则下,为了解决在时间轴的特定帧上执行动作的问题,通过在fla文件中制
定文档类,将这个 TimelineWatcher引入文档类,这样就可以对特定标签的帧和结束帧进行事件监听了。这是添加监听的一个例子:

timelineWatcher.addEventListener(TimelineEvent.END_REACHED,
handleTimelineEvent);

大家可以看到,这样的代码帮助你将时间轴和具体操作逻辑分离开来,并且很容易维护代码。

此外,ADC还在这期文章发布之际推出了SEO(搜索引擎优化)中心,这个话题在下面的专题中详细介绍;以及ADC写作与回报计划,该文章主要
介绍adobe通过给慈善机构捐款来回报在ADC的发表文章的作者。

编者注:使用TimelinWatcher你可以把代码写到主时间轴上,这样避免的代码的分散编写,不过作者还是推荐你使用文档类的形式来编写
代码,利于集中管理。从RIAMeeting成员的平时实践中,我们认为使用addFramescript 方法也是一个值得使用的将时间轴和具体操作
逻辑分离的很好的方法。其语法如下:

var mc:MovieClip = new MovieClip();
mc.addFrameScript(0, onFrame1);
addChild(mc);

function onFrame1():void
{
trace("Main::onFrame1(): " + mc.currentFrame);
}

需要注意的是,这里这个方法的第一个参数是从0开始计数的,也就是说frame中的第一帧是0。 onFrame1则可以放入当时间轴运行到第
一帧时想要运行的代码。这个方法的潜在隐患是你可以创建监听,但不知道怎么去删除。
2 . Adobe SEO战略与Search Engine Optimization Technology Center

adobe为了因对外界对SEO的疑问,此次正式推出SEO技术中心,并刊登四篇文章阐述了如何使flashplayer中的内容被索引的系列
问题。

* 第一篇针对RIA(FLASH)的搜索引擎优化技术,该文章介绍了各种RIA技术面临的挑战,指出对于swf来说,提供url和链
接对于改善搜索效果的重要性,随后提出了几种方法来改进SEO效果,比如:在网站建设规划阶段建立与搜索相关的目标、把swf中的内容(主要是重要内
容,比如产品和服务等信息)尽量能HTML中也放一份描述、为重要的部分创建唯一的URL、考虑动画中的重要内容也放到HTML源文件中、包括你的图片
浏览器视频浏览器内容都能通过URL访问到、避免弹出窗口、创建HTML网站地图、为视频创建网站地图、创建robots.txt文件(告诉搜索引擎什
么文件能被搜索,什么不能);
* 第二篇文章针对RIA做SEO处理的任务表相当于把上一篇文章提到的优化技术做了一个整体的实施指导。
* 第三篇文章adobe flashplayer版本检测协议指出搜索引擎spider往往会受到某些检测flashplayer版
本的javascirpt脚本的干扰而无法正常索引网站内容,随后指出目前流行的 swfobject2的做法,使用div来展示没有安装
flashplayer的提示,而不是使用noscript语法,这样是不利于被搜索的,因为 noscript是比较安全的做法。

编者注:adobe SEO中心的上线为所有关注flash内容搜索优化问题的人提供了参考的资料,也是adobe正面面对外界指责flash
诟病的有力武器。
3 . Silverlight 3 beta重磅出击

本届09MIX大会上,Microsoft发布了SL3 beta版,此次发布的SL带来了50多个新的特色,包括脱离浏览器运行SL应用,播
放视频的性能和质量的极大提升,以及从根本上改善开发者效率的一些特色。此次SL3结合visualstudio和expression blend的
持续性改进使.NET开发者能够创建前沿的RIA和媒体体验(翻自官方介绍),具体的介绍见这里。

SL3 的发布带来了诸多亮点,从开发工具集到.NET服务,从改善用户体验的各种效果到改善开发效率的组件和数据处理增强,这种全方位的改进
足见其来势凶猛。尽管这次发布有很多改进,但是总觉得有许多东西是抄袭flash而来,不可否认SL和微软系列开发环境及语言的集成非常紧密,也非常平
滑,这也许是SL最大的优势,如果抓住了.NET开发者社区,SL当然能扎稳脚跟,至于是否能跟flash有的一拼,我认为还为时尚早。此次SL 3
beta的发布没有给flash社区带来多大的反响,也许正印证了这一观点,也许根本就是两条路上的人群,永远都不会有交汇,永远都不会有冲突。
4 . Unity3D 2.5正式发布

本周18号,众人期待的Unity3D2.5终于发布了,这个版本主要是针对widnows用户的版本,因为以前的版本都是Mac版的,这次的
发布无疑为扩大Unity社区的影响力又增添了声势。新版的官方特色介绍在这里 ,在这里能下载到试用30添的windows版Unity3d2.5,
这么一个小小的工具160多兆就是一个非常强大的3D游戏开发平台,其最大的特色在于能开发运行于桌面、浏览器、iPhone的游戏,其强大的表现力和
优异的性能使所有运行与browser的web game都相形见拙。前段时间许多flash开发者在讨论将flash和unity3d和flash结
合做web game的技巧,并强烈建议adobe收购这家公司。PV3D的一位作者John Grden推荐说,从Papervision/
Flash到Unity的学习曲线非常小而且简单,从Unity能学到很多非常帮的特色和技巧, Unity是web/mobile/desktop游
戏公司都应该使用的一个非常棒的工具。这里介绍一些特色来加速了解这个工具,这里是开发手册,尽管开始时有点吓人,但是是一个很好的资源,只要从基础开
始就能慢慢深入下去。开发者社区是Unity的最大特色,在这里你可以提问题,并寻找你的合作伙伴。
5 . PapervisionX:澄清是与非

针对最近开发者对PV3D新版PVX的种种猜测和疑问,其成员John Grden在邮件列表中发布了这一文章 ,来满足大家的好奇心。

全文大意如下,首先svn路径中的CS4 branch不是PVX,只是使用了FP10的一些特殊来测试渲染引擎,但是看到大家对它如此关注,
其成员还是感到兴奋和鼓舞;随后指出,PVX是 papervision下一个版本,基于FP10的新3DAPI开发,团队中的两个人从3月16号开始
新引擎的开发。从PVX开始,不再使用beta这样的版本了,而是使用dot版本,并推出一个将版本号与特色联系起来的路线图。PVX将重构整个
PV3D引擎(从零开始),这种情况下将尽可能的保留原有的 API,并充分利用FP10的各种特色,这将最大程度的有利于引擎的品质、速度、文件尺
寸。为了达到这个目的,引擎的相当大一部分需要被重新设计,在重构的过程中,也会尽最大努力来让它变得更灵活,而允许我们使用Flash新的技术比如
Adobe Alchemy (编者注:Adobe Alchemy是Adobe 还处于研发状态下的可以让你用C,C++编写并编译为SWF的技术,
具体介绍可见上周RIAmeeting行业报道)。关于PV3D2.0,我们不会丢下不管,我们将一直改进它,看起来在FP10的采用率上升到它的目标
程度的这段时间里,PV3D2.0将会是用的最广泛的版本,我们曾经讨论过将PVX的一些特色引入到PV3D2.0,直到团队中的其他成员开始PVX的
工作之前,我们将一直解决2.0的系列问题和特色。至于PVX何时能发布,现在还是未知数,PVX现在还是开发的早期阶段,现在正在做核心设计。我们决
定遵守一个日程表,所以,尽管不能目前不能告诉大家确切的日期,但是我们能保证大家能看到更多更新和进展,所以大家不必疑惑,只要我们有能公布的确切日
期,我们会立即贴出来。感谢大家的耐心和帮助,PVX将是Flash3D最好的礼物,我认为它将让你大吃一惊!

编者注:PVX终于启动了,看起来它确实要利用Alchemy来加速其引擎的执行效率,以超越ASComplier能达到的效果,届时我们开发
者很有可能是基于一个加速后的PVX类库(Alchemy编译后的swc)来做基于PVX开放API的开发。
6 . 介绍Swiz框架

SWIZ是googlecode上的一个开源项目,目标是为RIA开发带来一个全面的简化,Swiz提供IOC,事件处理,和简单的异步远程方
法的生命周期处理。

相对于其他的Flex主流框架,Swiz没有使用JavaEE模式,也没有多余的文件夹,也没有样板代码。Swiz代表了来自业内最好的咨询公
司的顶尖 RIA开发者的最佳实践,使得swiz成为简单的、轻量的,并且非常高效率的工具。该项目提供了几篇文档来做概念性的特色介绍,包括项目建
立、定义应用组件、Swiz控制器、事件处理、动态协调者等内容,作者建议从定义应用组件开始通读全部内容从而对框架有个全面的了解,如果是时间紧张,
可以下载 swiz-test-examples.zip(18M,包括Flex工程和Java工程)来直接看代码。

编者注:该框架将IOC和MVC模式很好的结合起来,看起来是优于其他框架的地方,并意图实现一个真正的MVC模式,而且它的
DynamicChannelSet 和DynamicCommand,以及DynamicEvent、DynamicMediator看起来比较灵
活,其中的元数据充分运用是该框架的一大特色,但这里的机制或许还需要时间掌握才能灵活运用。这里一并奉上对Swiz的视频介绍。

提到Ioc框架,大家还可以考虑Spring Actionscript这个项目,这个项目目前做为Spring官方所支持的一个Ioc框架也
是一个不错的选择。
7 . 开源视频播放工具pyro-player和Open Video Player

这两个项目的目的都在于将构建一个视频播放器所需要做的最底层的事情,比如使用NetConnection,检测网络带宽,这样的底层逻辑操作
封装到项目中。

做为一个开发者,你可能更关注与如果去写上层逻辑,比如说设计更好的播放器界面,添加一个基于视频的应用(比如加载字幕等)。

Pyro让你从底层的代码中解放出来,可以花更多的时间和精力去关注一个播放器的上层内容。Pyro发布到google code了
OpenVideo Player使得一提的是不仅有一个在Flash Player中的实现代码,还有一个在SilverLight中的实现。并且,
Open Video Player还像你展示了构建播放器过程中的一些最佳实践。

Open Video Player更新到 2.0鉴于国内许多网站都有对视频播放器的自定义需求,这两个播放器可以让开发人员多花些时间去研
究一下自定义的那些需求,而不是花很多时间去研究那些被各家网站开发人员研究了无数遍的底层代码开发。
8 . 本周Flex/AS3开发技巧荟萃

在FlexBuilder中设置ASDOC工具

MXML和AS3代码格式化工具
9 . 本周推荐下载内容

* 诺基亚论坛Flash Lite开发者工具包1.3
* Yahoo皮肤更新2

版权所有:RIAMeeting开发者活动组织,转载请注明来源RIAMeeting周刊

投稿或建议请发送邮件致contactus(c)riameeting.cn

Reply all
Reply to author
Forward
0 new messages