Flex/ActionScript/AIR
AMF调试利器-AMF Explorer
三 5th
我是工具控,有啥新工具都爱用。
之前介绍过两款AMF抓包工具Charles 和ServiceCapture,今天再介绍一款非常靠谱的:AMF Explorer
AMF Explorer是一款不错的基于FireFox、Firebug的调试插件。
工具首页:http://amfexplorer.riaforge.org/

Flash Builder 4 Beta 2 灵异 Bug
一 18th
这个Bug是在上周五发现的,及其及其诡异。
简单说明一下:
使用FB4的新建了一个Flex Library Project。
然后莫名其妙地FB报了:发生了内部构建错误。右键单击以获取更多信息。
查看了一下FB的Log,
!ENTRY com.adobe.flexbuilder.project 4 43 2010-01-18 18:14:04.510
!MESSAGE Uncaught exception in compiler
!STACK 0
java.lang.StackOverflowError
at macromedia.asc.parser.Scanner.nexttoken(Scanner.java:427)
at macromedia.asc.parser.Parser.getNextToken(Parser.java:670)
at macromedia.asc.parser.Parser.lookahead(Parser.java:628)
at macromedia.asc.parser.Parser.parseFullPostfixExpressionPrime(Parser.java:2159)
at macromedia.asc.parser.Parser.parseFullPostfixExpressionPrime(Parser.java:2173)
在重启了N遍FB甚至机器之后,意外发现了,这个AS文件的体积竟然达到了183K。
用记事本打开后发现了N多以”ggggggggggggggggggg”或者”———————”之类字符填充,很奇怪的是,在FB的IDE中显示却是正常的。
这个as文件只能重写了。然后解决,项目正常编译。
FB4 beta 2目前还不怎么稳定,所以用在生产环境下还需细细斟酌。
另外,关于这个Bug很偶然,同时这个as文件涉及到了保密要求, 所以暂时也很难详细说明并提交到Adobe官方。
《Actionscript 3.0 基础教程》出版
十一 19th
和NShen共同翻译的《ActionScript 3.0基础教程》终于出版了!昨天下午样书也到手了。
这本翻译的书陆陆续续弄了快一年,图灵的编辑很用心,赞!
这是一本as3 入门的书,如果对其中的内容或者翻译上的问题请留言:)

AIR 2.0 Beta和Flash Player 10.1 Prelease发布!
十一 17th
其实这新闻晚上发已经不是新闻了,中午一点多的时候native在天地会已经发了flash player 10.1发布的消息。随后根据ryan的twitter 我也发flash player 10.1和air 2.0 beta发布的消息。
新功能很多,天地会的新闻资讯版块已经发了好几条关于这两个可爱的玩意儿的资讯:
这次的消息资讯是国内首发的,最快最新:)
相信在不久的将来一定会是国内最快的RIA资讯信息发源地:)
对了,据称,明天Google 将发布Chrome OS,这个要重点关注!!!
非IE浏览器下Flash Player的Cookie/Session丢失Bug
九 17th
这个bug,我整整折腾了2两天,目前为止还没找到一个好的解决方案。
好多人都遇到过,包括圣叹,KingLong, VSky 看来好多人都被这个该死的Bug QJ过了。
普遍的解决方法是使用JS获取FireFox中的Cookie,然后设置URLRequest中的data属性作为post方式传递过去,服务器读取Request对象中的POST的数据(不同的语言处理方式各不相同)进行校验,但是淘宝的校验只能使用Cookie验证,用POST传过去识别不了。而为了一个Flash改动验证系统基本不可能。
设想是使用一个代理页。
Flash通过post方式把cookie的数据传过去,代理页再模拟提交一次。这样开发说会遇到安全问题。遂罢!
至今无解,求解……
———————2009年9月18日 Update-———————
这个问题通过Flash本身解决好像已经基本无望了。
想更改URLRequestHeader因为安全问题,被罢掉。
还有另外一种方法是,当用户的浏览器为非IE时,在Flash的上层覆盖一个HTML的<input type=”file”/>标签,通过HTML的上传机制解决,可非常无奈的是,我的Flash要输入中文,必定使得wmode要为window,所以想要在Flash上层覆盖一个<input type=”file”/>标签 这种方案也被排除了。起初还想到另外一个方案就是通过代码模拟点击一个隐藏的<input type=”file”/>标签,非常郁闷的是,因为安全限制,这个也不可能。
因此,目前来说还没找到一个更好的方法去解决或者绕过这个Bug
Amethyst Beta 6: 基于Visual Studio 的Flex可视化IDE
九 7th
前几个月发过一篇博文关于Amethyst beta 1释放的,转眼间beta 6都释放了。
SapphireSteel软件今天释放出了基于Visual Studio 的Amethyst Flex IDE的Beta 6版本,这个版本首次集成了Amethyst Designer – 可进行拖拽的Flex 程序开发工具。

Amethyst Designer 的主要功能
- 从Visual Studio的工具栏中拖动组件到设计区
- 使用鼠标移动组件以及调整组件的尺寸
- 使用键盘上的方向键移动组件(或者使用Shift+方向键进行更大尺度的移动)
- 使用Backspace键删除选择的组件
- 使用自动排列工具栏可视化地对齐组件
- 将组件对齐到网格中(不管是移动还是重新设置它们的大小)
- 使用Amelyst 布局工具栏对已选择的控件的组进行整体性的对齐和调整尺寸
- 在Amethyst Designer中支持右键
- 在代码(Editor)编辑器和设计(Designer)编辑器中切换(在Designer和Editor 窗口的底部的按钮)
- 在代码编辑器和设计编辑器中的多层级的撤销/重做(Undo/Redo)(默认的快捷键是Ctrl+Z和Ctrl+Y)
- 可以根据需要设置Amythyst Designer的显示和行为属性
- 在设计器或者事件窗口中自动创建事件处理方法
- 在设计器的属性窗口中设置控件的属性
淘宝开放平台(TOP)上ActionScript3的使用方法。
八 13th
*签名加密部分需要使用as3corelib,请到http://code.google.com/p/as3corelib/下载
最近在写as3top:基于ActionScript3 的 TOP(Taobao Open Platform)的SDK,因为平时工作很忙,所以也只能用晚上下班之后的时间来写,所以进度一直不快。
先把最基本的请求方法放上来吧。核心是三个文件。
TOPConfig.as 负责保存请求地址,sessionKey,appKey,appSecret等信息;使用单例模式
TOPRequestParam 请求对象的包装类
TOPUtil 进行一些格式的转换以及其他辅助工具
TOPURLLoader 继承至URLLoader负责数据载入。
示例代码请点此下载:TOPExample
PS:关于TOP接入请查看http://wiki.open.taobao.com/index.php/%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5
有问题,请留言:)
另,本项目纯属私人项目,与公司的工作无关。
AMF抓包利器-Charles
八 1st
平常开发中,如果我们要对http(s)的内容进行抓取的时候,我们通常会使用HttpWatch或者Fiddler这几款非常著名的的抓包工具。但这两款工具对于AMF协议是无能为力的。
目前来说,能用的、比较靠谱的AMF工具一款是ServiceCapture 这个在去年4月份的时候介绍过。还有一款就是本文要介绍的Charles。
Charles主页:http://www.charlesproxy.com/
目前,Charles的最新版本为3.3.1。提供了多个版本:Windows 32Bit,Windows 64 Bit,Linux,Mac。同时还提供了FireFox的插件。
TransformTool 在Flex 下的诡异Bug
七 15th
senocular 出的 TransformTool是一套很不错的组件,不过今天被它彻底弄晕了。在Flex下出了N多Bug,花了一天时间除bug,还是有很多问题。
Google了一下,发现了这么一篇博客
senocular.com TransformTool modification
原来还有个修改版的,专用于Flex的,很好,很强大!
下载地址:http://www.sephiroth.it/test/flex/2/transform_tool/srcview/Sephiroth%20-%20Components.zip
完美解决!

ActionScript中使用as运算符类型转换时应当避免以下问题
七 13th
先做个题目吧:
var testNum:Number=662.382;
var testObj:Object=Object(testNum);
trace(testNum,testNum as int,int(testNum),testObj,testObj as int,int(testObj),testObj as Number);
这个的结果刚开始我以为会是
662.382 662 662 662.382 662 662 662.382
不过结果却是
662.382 null 662 662.382 null 662 662.382
在刚刚coding的时候使用PureMVC发送notification之前没有将value转为int就直接发送了,然后接收后将object使用as运算符转换为int发现结果为0。当时相当郁闷了。因此不使用强类型检查时应当特别注意数据类型,另外,使用as运算符也应当注意,避免以上情况,尽量使用显式类型转换。
其实这个问题非常非常基础,对于这种细节性的问题以后还得多注意注意。
Update:http://www.anujgakhar.com/2009/08/26/flex-casting-with-as-vs-casting-with-braces/ 这位老兄也同样遇到了这个问题,不过他比我解释地更为清楚,因此引用一下:)