由 Jinni 于 February 3rd, 2010 8:48 am 发布 0条评论

访问这里获取AIR 2.0最新的测试版本。
注意:基于AIR 2.0 Beta 1创建的应用程序将无法在Beta 2上运行。请更新你的应用程序并将应用程序描述文件中的命名空间修改为:
<application xmlns="http://ns.adobe.com/air/application/2.0beta2">
AIR 2.0 Beta 2的新特性
- 增强的打印机交互能力:获取和控制更多打印有关的属性,允许后台打印等。
- 支持TSL/SSL Socket通讯:TSL/SSL让AIR应用的安全性又迈上一个台阶。
- IME(输入法) API增强:增加了更多与输入法软件协同工作的API。
- 各种Bug修正
其他AIR 2.0范例可访问Tuor de Flex获取。
同时发布的还有Flex SDK 3.5a,修正了之前AIR Update Framework的Bug。
Enjoy!
由 Jinni 于 February 2nd, 2010 6:08 pm 发布 2条评论
就在“乔帮主”手持“iPhone 4 in 1”大放厥词之时,Adobe也在Flash for iPhone的道路上不停的前进着,根据最新的视频显示,基于Flash技术的Connect客户端已经可以在iPhone上流畅地运行。以下是我针对几个核心功能做的视频截图:
起始页面

实时聊天

摄像头视频

屏幕共享

完整的视频请看:
Enjoy!
由 Jinni 于 February 1st, 2010 3:26 pm 发布 0条评论
由 Jinni 于 January 29th, 2010 10:40 am 发布 1条评论
Flex 4 SDK除了全新的API和编译效率的提升,对一些辅助的命令行工具也有所改进,ASDoc就是一例。
在Flex 3的时代,我们为一个工程或者类库提供ASDoc说明时,所有包(package)的说明,必须通过命令行来指定,例如
./asdoc -source-path src -doc-sources src \
-package com.swfever.pkg1 "Package 1 Description" \
-package com.swfever.pkg2 "Package 2 Description" \
-package com.swfever.pkg3 "Package 3 Description" \
-output $1
这样的写法非常不易于维护。更为麻烦的是,由于是命令行参数,取决于系统编码,有些时候一些双字节字符,如中文,会变成乱码。
在Flex 4 SDK中的ASDoc提供了一个新的参数:package-description-file。你可以将所有的对包的说明组织在一个XML文件中,并通过该参数进行传递。例如:
<overviews>
<packages>
<package name="com.swfever.pkg1">
<shortDescription>
<![CDATA[
沉默...
]]>
</shortDescription>
<description>
<![CDATA[
你可以保持不沉默,但我会快会让你沉默....
]]>
</description>
</package>
<package name="com.swfever.pkg2">
<shortDescription>
<![CDATA[
春节。
]]>
</shortDescription>
<description>
<![CDATA[
外国人信圣诞老人,所以过圣诞节。
中国人信春哥,所以过春节。
]]>
</description>
</package>
</packages>
</overviews>
其中shortDescription中包含的描述用于在Overview页面对包的简述。而description标签中的内容则会显示在包的详细页面(类列表)。
接下来,只需要向ASDoc指定该文件的路径即可。
./asdoc -source-path src -doc-sources src \
package-description-file package-descriptions.xml
-output $1
这样,既可以方便管理,中文乱码问题也可以轻松解决。:)
Enjoy!
由 Jinni 于 January 26th, 2010 12:02 am 发布 17条评论
在Stratus Beta2上线后,有很多朋友表示不知道如何基于NetGroup进行开发。事实上,NetGroup是一个非常强大的类,可以实现诸如Direct Routing, Posting和Object Replication等功能。为此,我花了20分钟时间写了一个简单的Demo:基于NetGroup的P2P多人聊天室,其中主要使用了Posting功能。其他NetGroup功能的使用方法大同小异,请各位自行发掘。
要运行这个Demo,你需要一个Stratus Developer Key,并确保你的Flash Player版本为10.1。
点击下图运行Demo

时间仓促,界面使用FB4的Design模式胡乱搭的:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" width="600" height="400">
<fx:Script> .... </fx:Script>
<s:TextInput id="developerKeyInput" x="10" y="10" width="304" text="@{developerKey}"/>
<s:TextInput id="yourNameInput" x="320" y="10" width="192" text="@{yourName}"/>
<s:Button id="connectBtn" x="520" y="10" label="Connect" click="connectBtn_onClick()" />
<s:TextArea text="{logText}" left="10" right="10" bottom="10" editable="false"/>
<s:TextArea text="{chatMsg}" width="372" x="218" y="56" height="129" editable="false"/>
<s:Label left="10" bottom="170" text="Log:"/>
<s:Label left="10" bottom="350" text="Neighbor:"/>
<s:Label left="218" bottom="350" text="Chat:"/>
<s:List id="userList" x="10" y="57" width="200" height="153">
<s:ArrayCollection id="userList_ac" />
</s:List>
<s:Button x="520" y="189" label="Send" id="sendButton" click="sendBtn_onClick()" enabled="false"/>
<s:TextInput x="218" y="188" width="294" id="chatMsgInput"/>
</s:Application>
Script标签内的代码如下:
import mx.utils.StringUtil;
[Bindable]
private var developerKey:String = "Your Developer Key";
[Bindable]
private var yourName:String = "no name";
private const SERVER_URL:String = "rtmfp://stratus.adobe.com/";
[Bindable]
private var logText:String = "";
[Bindable]
private var chatMsg:String = "";
private var netConn:NetConnection;
private var netGroup:NetGroup;
private function connectBtn_onClick():void {
if(!netConn) {
netConn = new NetConnection();
netConn.addEventListener(NetStatusEvent.NET_STATUS, netConn_onNetStatus);
}
netConn.connect(SERVER_URL+developerKey);
}
private function sendBtn_onClick():void {
if(StringUtil.trim(chatMsgInput.text).length) {
var msg:Object = {
text: chatMsgInput.text,
sender: yourName
};
netGroup.post(msg);
msgRecieved(msg);
chatMsgInput.text = "";
}
}
private function netConn_onNetStatus(event:NetStatusEvent):void {
log(event.info.code);
if(event.info.code == "NetConnection.Connect.Success") {
connectBtn.enabled = false;
developerKeyInput.enabled = false;
yourNameInput.enabled = false;
log("My Peer Id = "+netConn.nearID);
var groupSpec:GroupSpecifier = new GroupSpecifier("swfever");
groupSpec.serverChannelEnabled = true;
groupSpec.ipMulticastMemberUpdatesEnabled = true;
groupSpec.multicastEnabled = true;
groupSpec.postingEnabled = true;
var groupId:String = groupSpec.groupspecWithAuthorizations();
log("Group Id = "+groupId);
netGroup = new NetGroup(netConn,groupId);
netGroup.addEventListener(NetStatusEvent.NET_STATUS, netGroup_onNetStatus);
} else
if(event.info.code == "NetGroup.Connect.Success") {
sendButton.enabled = true;
}
}
private function netGroup_onNetStatus(event:NetStatusEvent):void {
log(event.info.code);
if(event.info.code == "NetGroup.Neighbor.Connect") {
log("NetGroup Neighbor Count = "+netGroup.neighborCount);
userList_ac.addItem(event.info.neighbor);
} else
if(event.info.code == "NetGroup.Neighbor.Disconnect") {
log("NetGroup Neighbor Count = "+netGroup.neighborCount);
userList_ac.removeItemAt(userList_ac.getItemIndex(event.info.neighbor));
} else
if(event.info.code == "NetGroup.Posting.Notify") {
msgRecieved(event.info.message);
}
}
private function log(msg:String):void {
logText+=msg+"\n";
}
private function msgRecieved(msg:Object):void {
chatMsg+=msg.sender+" : "+msg.text+"\n";
}
源代码下载
NetGroup_Posting_Demo_src (1.4 KiB, 93 hits)
由 Jinni 于 January 23rd, 2010 8:49 pm 发布 1条评论
你需要注册一个Developer ID来使用免费的Stratus服务。
另外,为了使用组和MultiCast功能,你需要安装Flash Player 10.1或AIR 2.0。
下图中非常清楚地描述了传统的流直播、Flash Player 10.0以后支持的单点P2P,以及Flash Player 10.1支持的Group和MultiCast后在数据传输方面的区别:

目前主流的在线视频其实可以分为Flash视频 (渐进下载/VOD/直播流)和P2P视频,如PPLive,Sina直播等。
P2P在传输速度和对服务器带宽压力上有较大优势,一般在直播中应用的较多。
但是现有的P2P解决方案基本上只支持IE,并且需要额外安装ActiveX控件且各家的插件互不通用。
Flash + P2P的到来是否会统一在线视频阵线?让我们拭目以待吧!
更多详细信息请访问这里。
由 Jinni 于 January 20th, 2010 10:00 am 发布 2条评论
ASDoc是Flex SDK提供的一款命令行工具,可以非常方便地将代码中(符合标准的)注释转化为API文档。唯一遗憾的是ASDoc是一款基于命令行的工具,使用起来并不是特别方便(例如要实现某些特定功能时还要查询参数列表)。
ASDocr的出现解决了这一问题,借助AIR 2.0强大的本地进程访问能力,ASDocr可以直接和ASDoc进行通讯,并帮助你通过界面进行各种配置。快去体验一下吧。

Mac版下载
Windows版下载
P.S. 这款工具在使用上可能不是特别习惯,记得要先点击右上角的文件图标来创建一个Configuration,才能够开始使用。另外选择文件路径的图标是在最左侧。
P.S.S 我最喜欢的开发者辅助工具之一,Doc?,也已经放出3.0Beta版本。增加了如远程文档,自定义Title等功能。点击这里访问。
由 Jinni 于 January 18th, 2010 8:38 pm 发布 1条评论
Tour de Flex堪称是Flex/AIR开发者的福音,也是我迄今为止看到的最好的开发者参考工具。通过Planetary Dashboard,你可以查看到每秒钟全世界有哪些开发者在使用Tour de Flex,甚至可以看到他们在查看哪些实例。酷!

由 Jinni 于 January 14th, 2010 9:56 am 发布 3条评论
Ryan Stewart介绍的Social Gold的In-Game Playments确很酷,特别是对国内很多做Social Game的公司来说,值得参考。
目前为止,我们看到的绝大多数Flash游戏/应用的支付都是通过弹出或者跳转到其他网页,用户完成支付,再回到游戏中的流程。而Social Gold推出的解决方案,可以让你完全在Flash中安全地完成整套支付流程。
由于天朝锁国,我还是照例将Youtube视频转移到Youku:
由 Jinni 于 January 14th, 2010 9:07 am 发布 0条评论
根据AIR Team的Blog,Adobe Labs最近将放出AIR 2.0 Beta2的下载。
敬请关注。