Tag Archive: ActionScript


Introduce KafeComponent – Part 1

开发KafeComponent陆陆续续有两年的时间了。设计的初衷源自于一个动画师普遍的需求:每次用MovieClip做按钮都要绑定类,相当繁琐而且不便于修改。后来受到Progression框架里提供的组件的启发,改用复合的编程方式来进行开发。再后来又借鉴了Reflex里关于behaviors的思路,再一次进行了大规模的重构。Big Spaceship的display包也给我了很大的启发。一步步发展到今天这个比较稳定版本。

从最初的需求上就决定了这套组件与Flash自带的组件或者ASWing之类的组件的不同之处。我的目的就是为了能够让设计师延续自己的工作习惯,在不需要接触任何代码的情况下就能实现大部分的效果,同时程序员也能避免大量的重复劳动。这也正契合了我所推崇的SWC工作流程。所以在相当长的一段时间里,KafeComponentRobotGaiaAnt都是平行开发的。

前面废话了那么多,我们还是赶紧来看看这套组件提供了些什么功能吧。

首先到下载页面下载最新版本的zxp文件。下载完成后双击打开Adobe Extension Manager完成安装。

注意!中文系统下的Adobe Extension Manager有个bug。如果你安装完以后在Flash IDE里面找不到KafeComponent的话。请到以下目录手动把zh_CN下的文件复制到en_US:

Windows: C:\Users\[your username]\Local Settings\Application Data\Adobe\Flash CS5\en\

Mac: /Users/[your username]/Library/Application Support/Adobe/Flash CS5/en/

KafeComponent安装完成后会在Commands菜单下生成一个Kafe命令包。在组件面板下也会有对应的组件,主要分为两个包:kafekafeUI。以下我们用两个视频教程来分别演示一下基本的使用方法。在墙外的朋友请直接打开这两个链接12

View full article »

RobotGaiaAnt Updated

距离写下第一篇RobotGaiaAnt Workflow的时间已经快满一年了。在这一年里,经过了几个项目的考验,边执行边完善,这套使用SWC的工作方式已经得到了一定范围的推广。在交流中大家遇到最多的问题还是设计与程序的衔接。有关设计师怎么看到最终结果,和如何能够真正减少程序员打开Flash IDE进行的操作等。我在去年12月份的分享会中提出了一定程度的解决方案。直到最近才抽空把设计师提出的预览问题给解决了。

在传统的流程中,发布最终文件是在Flash IDE里,现在把这个工作转移到FDT里以后,要求设计师去使用FDT难度比较大。所以最佳方法还是能在IDE里直接生成最终文件。按照Gaia的做法,搭建网站基本结构的时候通过JSFL脚本复制fla模版,并且把发布设置都做好了,非常方便。那么在FDT里用Ant怎么来实现类似的效果呢。考虑到我们不想要打开Flash IDE,也就是说JSFL的功能不能用了,那么fla里面的设置我们就无法更改。幸好Flash CS5新增了基于文本的xfl格式的支持,我们就可以制作一个xfl文件模版,让Ant来批量复制和修改发布属性,问题就解决了。

按照以上思路我升级了一下RobotGaiaAnt到了0.6.5版本。在这一版里,执行scaffolding target后将会多生成一个ide目录,里面就包含了每个页面的xfl文件。在不需要程序员介入的情况下,设计师可以直接用xfl发布最终文件。设计师还是需要两步工作,第一步永远是生成SWC文件。记住SWC就是给程序员使用的Library,为了更好的协作,这是必须的步骤。

解决协作问题的下一个关键就是团队内部普遍认同和执行的元件命名和帧标签命名规范,以及我在下一篇将会讲到的组件的运用。

Teaser先放一下哈:https://github.com/kyoji2/KafeComponent

给AS程序员的一点建议

最近做了一个AS网站的重构,发现了很多问题。我想这也是互动广告AS开发从业人员普遍存在的问题,有些想法不吐不快。

就互动广告这个行业来说,太多所谓“经验丰富”的AS Web开发者都是从AS2时代成长起来的,所以直到今天还保留着脚本语言的习惯。把以前的思路带到AS3来做开发是极其危险的。我们来看几个典型:

1.滥用全局。

AS2的_global是多好的东西啊,怎么AS3就没了呢?初级程序员还在抱怨,中级程序员二话不说噼里啪啦写出一个Global类,老子照用。高级程序员无语。

关于代码之间的依赖关系是个很长的话题,我在这里不展开说,只想提醒大家现在的AS3业界已经发展到了DI(反转注入)。如果你还是守着静态类或者单例,就难免有点跟不上潮流。这并不是说DI就是最好的,在小网站项目里也许根本用不上。但是一定要对自己代码中用到全局的地方好好做一下反思。也许级别的进阶就是从思考代码依赖的解决方法并且重构而开始的。

2.没有释放资源。

在AS2时代,一个空白帧就可以把时间线上的资源释放掉;一个unload操作之后你所加载的swf资源也全部清空。这些是脚本语言的便捷,也是跨入AS3编程的陷阱。我看到的一些程序员是完全没有释放资源的概念的,在他们的程序里根本找不到destroy()或dispose()等类似方法。没有正确的释放资源在网站开发这种天生就是模块化的程序里是致命的错误。大部分网站仍然能够正常运行是因为网站本身规模太小,以及没有无聊的人来回切换页面几十上百次。但这并不表示这个问题就能忽视,客户是不会开着资源管理器核对内存占用的,但是身为开发者必须这么做,而且必须更专业的去做(Profiler)。通常在析构方法里面的代码可能比构造函数还要长。可笑的是我依然看到很多“制作精良”的网站背后内存占用的飙升曲线。当你想借助AIR进军移动开发的时候,问题将会更加明显。这一刻我仿佛明白了乔布斯数落Flash的原因,可是技术本身并没有错,需要提升的,也许是开发者的质量。 View full article »

Powered by KevinCao.com ©2010 | Platform: WordPress | Theme: Motion
kevincao.com