从零开始开发最简单的AIR程序(FlashCS3)

March 18th, 2008

对于Flash的学习,我认为跳跃性和自信心是非常重要的。哪怕你现在连面向对象是什么都不知道,也不必惧怕“AIR的开发”:当你不知不觉地进入状态的时候,也许会发现“柳暗花明又一村”:

  1. 下载FlashCS3(这里)并安装
  2. 下载AIR Update for Flash CS3(这里)并安装
  3. 这里看完整的教学视频(下载FLV源
    注意,第一次安装,请务必看视频,否则很可能在开始菜单中找不到New AIR Project的入口:)

就这么简单。Adobe继承了Macromedia的光荣传统:开发和设计永远都不是“专业人员”的特权!

附:如果您已经安装了beta版的AIR扩展,可以先卸载,流程在这里可以看到。

SWFObject更新到2.0并发布AIR代码生成器(1.1)

March 7th, 2008

SWFObject项目经历了Flash Object的重名法律风波,又经历了与UFO、SWFFix的合并重组,现在重新启用了“SWFObject”这一命名。(详情)

现在SWFObject已经发布了2.0版本,并提供基于Adobe AIR技术的SWFObject代码生成器供大家使用:

我有幸负责SWFObject1.5的简体中文翻译,稍后将发布2.0的中文翻译(包含SWFObject详细的历史发展、新版使用说明以及1.5到2.0的迁移指南)。

Windows Vista无法安装Flash CS3的解决方案

March 6th, 2008

我最新的Windows Vista @ Lenovo T61(T7500/Dual 2.2G, 2G RAM, 160GM HDD)居然无法安装Flash CS3,每次预置文件载入到100%都显示:

"A problem occurred while extracting some files. Check space on your computer and write privileges on the destination folder."

对应中文版是:

“在解压缩某些文件时出现问题。检查计算机上的可用空间和对目标文件夹的写入权限。”

然而,我是以管理员身份登录,并且即便是用“Run as Administrator”来执行,也会遇到这个问题。新买的T61硬盘有足足160G,怎么可能是“space问题”呢。

在Papervision3D的邮件列表看到一个解决方案:

  1. 以管理员方式运行cmd.exe:在开始菜单的搜索框中输入“cmd”,然后在结果列表中右键选中,并“run as administrator”,中文版我没有用过,大概是“以管理员方式”。运行成功后,会进入DOS命令提示符,目录应该是C:\Windows\system32
  2. regsvr32 jscript.dll
  3. regsvr32 vbscript.dll

使用之后,仍然不可行。绝望之余,看到Adobe官方有人说重新下载一边安装文件即可!

非常“神奇”,下载之后直接安装竟然一切顺利(甚至都没有用“Run as Administrator”)。奇怪的是,两安装包的大小都是413400kb,个人猜测可能是在下载时Adobe会根据不同的client request给特定的“metadata”

果然,用MD5 Sum查看发现两个文件的MD5并不相同!

分别是:

  • 115aec9d8adc833aea0db1b2847fe900  ADBEFLPRCS3_WWE.exe(之前拷贝的安装文件)
  • 3df74402849ce3ada2e5152aea34666a  ADBEFLPRCS3_WWE.exe(trial.adobe.com下载到的安装文件)

FlashPlayer9的早先版本全屏下的疑似bug

March 5th, 2008

FlashPlayer9经过漫长的发布,终于来到了9.0.115.0。FlashPlayer9先于ActionScript3发布,让更多AS1、2的应用可以享受到许多新功能,其中最著名的就是全屏功能。

然而,之前的一些版本存在一些问题可能会影响我们开发全屏应用程序,尤其是视频播放器类应用,需要在全屏状态下调用Mouse.hide()函数(以ActionScript2而非ActionScript3)则会带来一些麻烦:

全屏之后,一旦调用Mouse.hide()那么即便退出全屏,Mouse.hide()也会继续执行,甚至影响到浏览器之外的任何鼠标位置。

这个问题在FlashPlayer9最新版,也就是上面提到的9.0.115.0中已经被修正。

请在检查您的版本。中国地区的用户可以在国内FlashPlayer下载

Adobe.com大改版,AIR1.0+Flex3正式发布

February 25th, 2008

首页:www.adobe.com

AIR:www.adobe.com/products/air/

Flex3:www.adobe.com/products/flex/

用ActonScript3开发Twitter客户端,发布AIR产品

February 18th, 2008

类似Twitter之类的轻量级SNS的最大优势在于其强大的API支持和巨大无比的扩展空间。目前比较好的产品是twhirl,基于最新的Adobe AIR Beta3(如果是Beta2或者更早的版本,请卸载后安装新的Beta3)

之前,曾在《22 AS3 API》中介绍过相应的API,而今天发现Twitter的官方API中有详细的ActionScript3 Twitter库(当然,也包括AS2库),利用Flex Builder或者下一代Flash IDE可以直接开发AIR应用客户端。这时,产品的设计权完全在开发者的手中,产品竞争力更加草根化、民主化!这也是不提供API的SNS网站所望尘莫及的一点。

GotoAndLearn - AS3学习的视觉体验

January 10th, 2008

很久很久以前,就看到过Lee Brimelow的ActionScript3学习网站GotoAndLearn,与其他教学资源网站不同,GotoAndLearn是全程的视频资料

我看得第一个视频教程是讲解Math类的用法,还是AS1、2时代的教程了。Lee清晰的发音和流畅的FLV画面让我这个非英语母语的人听起来也完全可以理解。当时,Lee只是用类似Flex的一个框架简单地搭建了一个教程列表。中途有一段时间更新并不算快,我看来,这种速度的更新可能最后就“无疾而终”了。但Lee今天在Twitter上的一则消息让我又振作起来。

GotoAndLearn已经焕然一新,所有的FLV视频都提供下载!现在,大量AS3视频教程的跟进让我觉得这个网站真的是每一个Flash Deveoper都值得一看的资源宝地!

地址:GotoAndLearn.com

Adobe AIR beta3发布

December 18th, 2007

这里看到的消息。翻译过来给大家看看,转载请保留:http://as3blog.com/news/air-beta3/

Adobe AIR是一套能够让开发者将他们已经熟知的HTMLAJAX、Flash和Flex技术融会贯通,并极大限度利用客户端资源的体系。

Beta3日前发布,以下是一些新的功能:

  • Beta3发布的应用能设定为“开机自动运行”、“登录自动运行”(aw附:为考证是否仅针对Windows平台)
  • Web Launcher可以在浏览器中判断您是否安装了某种AIR应用,并且直接激活您已经安装的AIR应用
  • 支持H.264高清视频和高级音频编码(AAC)
  • 全屏硬件加速
  • Flash内容可以集成进入基于HTML的应用
  • 支持AIR的在线自动更新(应该能协助Beta3用户顺利过渡到正式Release了)
  • Thawte为AIR应用提供安全性认证。这个类似Yahoo的Widget引擎的功能使得我们可以放心地下载各种AIR应用
  • 支持Mac OSX Lepard操作系统

其中有三项我个人非常喜欢,已经标为黑体

此外,我在官方Wiki中发现,如果不出意外,Beta3的API将会和最终发行版(1.0)保持不变!

下载地址

探索Flash播放器“运行缓慢”的原因及解决方案

November 1st, 2007

转载请注明出处:探索Flash播放器“运行缓慢”的原因及解决方案 - http://as3blog.com/resources/upload-causing-flashplayer-slowly/

最近在实现基于JavaScript和ActionScript的“批量文件上传系统”。感谢SWFUpload这样一个有趣的项目,从前到后ActionScript(AS2)、JavaScript和PHP都已经基本搞定。然而,当我把本地的PHP脚本移到服务器上之后,在上传大文件时,浏览器端的FlashPlayer总是弹出如下警告:

A script in this movie is causing Adobe Flash Player to run slowly. If it continues to run, your computer may become unresponsive. Do you want to abort the script?

大致意思是:“该Flash中有一段单帧脚本导致Flash播放器运行缓慢,如果继续,很可能会引发‘死机’现象”。其中,单帧脚本是指在Flash的一个关键帧中所处理的脚本。

Flash程序,也就是ActionScript,和C++、Java不同,ActionScript在2.0之前的入门门槛非常低,几乎小学生学几天都可以写一个上来溜溜(这并不是一件坏事)。这样一来,产生了不少效率低下的作品,甚至不少Flash动画含有潜在的死循环体(例如点击某个按钮后执行死循环)。虽然我们应该给初学者鼓励,但对于while(true)类似的死循环,则无疑严重破坏了用户体验,甚至会给用户造成不必要的损失。因此,对于编写不规范的ActionScript代码,采取这种措施是非常有必要的。

Adobe官方的解释是“几乎没有一个用户愿意为一个操作等待15秒以上的时间,他们(用户)会认为应用程序出了问题”。因此,Adobe非常“人性化地”在这个“由众多专家调查而得出的15秒”的时间段后给用户一个提示。同时,也给出了一些方法,例如,可以将循环“分摊”到不同的关键帧上。对于载入服务器端数据,如XML文件的案例,当被载入数据超过64k的时候,应将数据分开载入,并以不同的关键帧建立HTTP请求。这么做,比较类似我们在JavaScript中通过setInterval、setTimeout来解决。例如曾经写过一段JavaScript代码来改变整个页面链接的href属性,提供增加alexa排名的可能性

很遗憾,Adobe忽略了一件事:文件上传

FileReference和FileReferenceList两个类在Flash8的引入,无疑是Flash在Browser端应用极大的突破之一,曾经困扰Web开发者的Ajax文件上传批量上传,尤其是对文件类型、大小的客户端检测,如今都能依靠FlashPlayer实现。而且,借助Flash8的External API,可以使ActionScript与JavaScript方便地通信,这样就可以让FlashPlayer在“幕后”完成一切的文件操作,而让DOM(HTML)来展现内容。

然而,恰恰是如此好的功能,却几乎每次都会受到上面提到的“脚本超时保护”的困扰。显然,Adobe官方的解决方案在这里就行不通了。

利用Google搜索,发现无数的人也在询问同样的问题。后来在这篇介绍用Flex实现的批量上传的文章后的评论里面,找到了一个叫做“Timothee Groleau”的哥们的“自问自答”,终于解开了迷团:FlashPlayer在触发并执行用户定义的脚本(就是你编写的ActionScript)时,会重置“脚本超时值”(上文提到的15秒)。这样,我们可在某一个“马甲MovieClip”上绑定一个onEnterFrame事件,让它不断地(逐帧)执行。最简单的做法就是:

_root.onEnterFrame=function(){return false}

ECMAScript4概要初现端倪

October 24th, 2007

原文地址请保留:
http://as3blog.com/resources/ecmascript4-overview-available/

ECMAScript的官方网站如此诠释EMCAScript脚本:“the language of the web” - 中文说,就是“互联网语言”。我们熟悉的JavaScriptActionScript都是基于ECMAScript体系的脚本语言。

Adobe最新产品线(Flash CS3、Flex Builder、AIR)中也广泛地应用了基于ECMAScript第三版的ActionScript3作为基础语言。

如今,ECMAScript第4版已经初现端倪,在Moock处找到了这篇最新的《Overview PDF》(概要),其中“Features at a Glance”(显著特色功能)一下就吸引了我。关于语法校正(Verification)、性能优化(Speed Optimization)、新的迭代方式(for in和for each in)、自我定义(Soft-hosting)等等。

感兴趣的一定要去看看。