输出AIR 2.0 EXE文件(zt)

原文地址:

http://blog.everythingflex.com/2009/11/17/your-first-air-2-0-exe-file

在原文的基础上, 把AIR的配置也加上了.以Windows平台, Flash Builder beta 2为例.
首先下载AIR 2.0 SDK.
然后根据说明配置SDK:
1.复制现有的SDK文件夹到当前路径并重命名;

2.将下载的AIR 2.0 SDK解压, 并将里面的文件复制并覆盖到新SDK文件夹中.

3.打开Flash Builder,打开项目Properties对话框, 选择Flex Compiler
4.点击Configure Flex SDKs
5.添加刚刚合并的Flex 和 AIR 2 SDK文件夹
(也可打开Preferences窗口,Flash Builder->Installed Flex SDKs添加)

6.此时可以使用AIR 2 API了.
然后我们新建一个程序:

打开配置文件,版本已经变为2.0beta了:

程序代码:

之后发布AIR安装包, 安装运行, 界面如下:

接下来, 按照Rich Tretola的方法发布exe版:
运行(若提示找不到java, 可先配置环境变量):
adt -package -target native D:\Study\Adobe\Flash\10.1\Air2Test\Air2Test.exe D:\Study\Adobe\Flash\10.1\Air2Test\Air2Test.air
之后可以在项目文件夹下看到生成了Air2Test.exe程序.

运行:

还能输出dmg和rpm文件:
adt -package -target native D:\Study\Adobe\Flash\10.1\Air2Test\Air2Test.dmg D:\Study\Adobe\Flash\10.1\Air2Test\Air2Test.air
adt -package -target native D:\Study\Adobe\Flash\10.1\Air2Test\Air2Test.rpm D:\Study\Adobe\Flash\10.1\Air2Test\Air2Test.air
-target native只有三个选项:exe, dmg, rpm.
当然, Air2Test.exe的顺利安装仍然需要AIR运行时.
补充:
如果生成EXE文件, 那么一定要在WINDOWS操作系统下, 同理, 若为MAC生成安装文件, 则一定要在MAC操作系统下才可以

AIR – 文件分割混排

做了一个文件分割并混排的工具, 实际用处有待挖掘 -__-
文件安装:ByteArrayTool.zip(需要AIR1.5.1)
选择文件:

slice num是每个文件将要分割的块数
buffer size确定保存文件时缓冲区大小
点击运行, 将所有文件分割并混排.

点击保存按钮, 确定保存路径及文件名, 开始保存:

最后保存的文件由配置文件和文件碎片组成, 结构如下:

解文件就容易了, 把上述过程反向一下就OK, 这里写好了一个类供大家使用:
点击下载此文件
举个例子:
URLLoader加载完成时, 使用URLLoader.data做为数据源:
var bytes:ByteArray = urlloader.data;
var decrypt:DecryptByteArray = new DecryptByteArray();
decrypt.decrypt(bytes);
//假设第一个文件是图片
var img:ByteArray = decrypt.getBytesFileAt(0) as ByteArray;
img.position = 0;
//将图片加到舞台上
var loader:Loader = new Loader();
loader.loadBytes(img);
addChild(loader);

AIR List组件右键时选择列表项

当在List中某个item上点击右键时, 同时也要将该项选中.
可以通过以下方法实现.
首先使用自定义的itemRenderer.
在itemRenderer中注册菜单事件Event.DISPLAYING
在事件处理方法中, 派发鼠标事件:
MouseEvent.MOUSE_DOWN,和MouseEvent.MOUSE_UP即可.
或者派发自定义事件, 由父级捕获并处理.
但有一点要注意, 派发MouseEvent.MOUSE_DOWN事件后, 一定要派发MouseEvent.MOUSE_UP事件, 否则会导致拖拽功能失效(目前只发现这一点).
如果只dispatch了MouseEvent.MOUSE_DOWN, 跟踪源代码, 可以发现在ListBase类,mouseMoveHandler方法里处理拖拽的判断语句中:
DragManager.isDragging值始终是true.
继续跟踪到mx.managers.NativeDragManagerImpl类,
public function get isDragging():Boolean
{
return flash.desktop.NativeDragManager.isDragging;// || bDoingDrag;
}
到这里无法继续跟踪了, 返回数值true
不知道是不是AIR的bug.
附带项目代码:
点击下载此文件

AIR灵异现象

电脑变慢,瞟了一眼任务栏上的任务管理器,CPU正常。
最后实在是慢得不能忍受了,打开任务管理器,一看就傻眼了,300多个进程。虚拟内存达到了3GB。
N(N>200)多的ADOBEA~1.EXE进程,其中有几个占用12MB内存,其他的均在300KB左右。
难道是中毒了?随手关了几个,但这个进程数还在缓缓的增加。
把与ADOBE有关的程序都关了,无效果。
上网查找,发现这应该是AIR运行时程序,Adobe AIR Application Installer.exe或Adobe AIR Updater.exe。
但源头是哪里呢?难道是死锁了?问题是我有好久没有进行AIR程序开发调试了。
诺大一个桌面就一个Firefox在运行,恍然大悟,是页面中的AIR App吧。
嗯,就是这个页面:

http://onflash.org/ted/2008/12/adobe-groups-flash-media-server-group.php

截图,关闭页面,一切都恢复正常了。
再次打开ted的页面,发现ADOBEA~1.EXE生成后会自动销毁。
之后反复测试,这种现象再也没有出现,看来今天中彩了

用AIRSQLite处理SQLite的一些简单操作

这一周来空间不太稳定,日志也没时间写了,补上一篇
自己用的一个SQLite操作类,去年12月左右写的并使用在一个小项目中,但项目迟迟没有完成,被拖了半年了。
整个类非常的简单,使用起来也简单,例如删除记录代码:
//首先连接数据库,alert.sqlite是示例所用到的数据库名
if(!AIRSQLite.setLocalSQLServer(“alert.sqlite”))
{
trace(“连接数据库失败”);
}
//delete
public static function deleteDB(PKId:uint):Boolean
{
//SQL字符串
var sql:String = “Delete FROM EventTable Where PKId=@PKId”;
var parameters:SqlParameter = new SqlParameter();
//参数
parameters["@PKId"] = PKId;
//执行
return AIRSQLite.executeSql(AIRSQLite.localSQLServer, sql, parameters)>0;
}
//查询语句
public static function viewDB(PKId:int = 0):Array
{
var sql:String = “Select * FROM EventTable “;
var parameters:SqlParameter = new SqlParameter();
if(PKId != 0)
{
sql += “Where PKId=@PKId”;
parameters["@PKId"] = PKId;
}
var result:Array = AIRSQLite.query(AIRSQLite.localSQLServer, sql, parameters);
for (var i:int = 0; i < result.length; [...]

AIR:计算系统托盘图标位置 — 观Acrobat AIR有感

大家知道Acrobat AIR程序切换到Widget模式下,最小化时有个收缩并移动到系统托盘区的过渡动画效果,即使将任务栏更改到屏幕的其他区域,程序均能正确的收缩到新的系统托盘位置.
对这个效果很感兴趣,于是从文档及网络查了相关的API,包括DockIcon,SystemTrayIcon,无果.
最后在想是不是Adobe开发人员使用了未开放的屏幕类,呵呵,想到屏幕类忽然来了灵感,虽然最开始时Screen类也排查过,并无提供系统托盘相关方法,但仔细观察她的方法和属性:
[color=Blue]bounds : Rectangle
[color=Black][read-only] The bounds of this Screen.
[color=Blue]mainScreen : Screen
[color=Black][static] [read-only] The primary display.
[color=Blue]visibleBounds : Rectangle
[color=Black][read-only] The bounds of the area on this Screen in which windows will be visible.
通过mainScreen.bounds和visibleBounds的比较得出当前任务栏的位置.
trace得到:
[color=Brown](x=0, y=0, w=1400, h=1050)
(x=0, y=0, w=1400, h=1020)
得出我的任务栏位置是bottom,任务栏高度是30像素.Y坐标没问题了,那么X坐标呢?
观察得知,Acrobat AIR程序并未获得精确的X坐标.通过增加或减少托盘区的图标,可以发现每次收缩结束时的X坐标位置未有任何变化.那么暂时可以使用固定值来代替.
接下来就是代码的工作了
[b]AIR Setup File
Source Code[/b]
测试的操作系统:Windows XP Pro. SP2
如果DEMO程序有BUG或你有更好的方法甚至知道如何获得系统托盘精确位置,务必留言或写信联系我.
auzn1982[AT]gmail.com
Cheers!

AIR:在HTML组件中显示中文

想使用HTML组件来显示一些含HTML标签的字符串,但发现字串里的中文全部变成了乱码。
如果直接使用组件的location属性设置url的话,可以正常显示网页里的中文。
初步推断是页面编码的原因。
没有在文档里查到设置页面编码的属性或方法,正常来说应该是没有的,因为加载页面时会读取网页中的META部分设置编码。(本人对AIR了解有限,如果有更好的方法,请留言)
可以把字符串包含在HTML的标签中并在HTML标签中设置页面字符编码,就可以正常显示中文了
令人欣慰的是,这种方法可行!
程序运行如下:
使用自定义类显示中文字符:

未使用(显示的是乱码):

下面对主要代码进行一下简单的解释:
[code][color=#00a0c0]public [color=#00a0c0]static const beginHtml[color=#0000ff]:[color=#0000a0]String [color=#0000ff]= [color=#ff00ff]""[color=#0000ff];
[color=#00a0c0]public [color=#00a0c0]static const endHtml[color=#0000ff]:[color=#0000a0]String [color=#0000ff]= [color=#ff00ff]""[color=#0000ff];
[color=#00a0c0]public [color=#800000]function HtmlSetter[color=#0000ff]([color=#0000ff])
[color=#0000ff]{
[color=#0000ff]}
[color=#008080]//重新组合,添加HTML头及尾部字符串
[color=#00a0c0]public [color=#00a0c0]static [color=#800000]function getHtmlText[color=#0000ff](htmlStr[color=#0000ff]:[color=#0000a0]String[color=#0000ff])[color=#0000ff]:[color=#0000a0]String
[color=#0000ff]{
[color=#800000]return beginHtml[color=#0000ff]+htmlStr[color=#0000ff]+endHtml[color=#0000ff];
[color=#0000ff]}
[color=#008080]//首先过滤掉begin和end的字符串,再调用getHtmlText,添加begin和end
[color=#00a0c0]public [color=#00a0c0]static [color=#800000]function appendHtmlText[color=#0000ff](oldStr[color=#0000ff]:[color=#0000a0]String[color=#0000ff], appendStr[color=#0000ff]:[color=#0000a0]String[color=#0000ff])[color=#0000ff]:[color=#0000a0]String
[color=#0000ff]{
[color=#800000]var myPatternBegin[color=#0000ff]:RegExp [color=#0000ff]= [color=#800000]new RegExp[color=#0000ff](beginHtml [color=#0000ff],[color=#ff00ff]"i"[color=#0000ff])[color=#0000ff];
[color=#800000]var myPatternEnd[color=#0000ff]:RegExp [color=#0000ff]= [color=#800000]new RegExp[color=#0000ff](endHtml [color=#0000ff],[color=#ff00ff]"i"[color=#0000ff])[color=#0000ff];
oldStr [color=#0000ff]= oldStr[color=#0000ff].replace[color=#0000ff](myPatternBegin[color=#0000ff], [color=#ff00ff]""[color=#0000ff])[color=#0000ff];
oldStr [color=#0000ff]= oldStr[color=#0000ff].replace[color=#0000ff](myPatternEnd[color=#0000ff], [color=#ff00ff]""[color=#0000ff])[color=#0000ff];
[color=#800000]return getHtmlText[color=#0000ff](oldStr[color=#0000ff]+appendStr[color=#0000ff])[color=#0000ff];
[color=#0000ff]}[/code]
首先定义头尾要加入的字符串beginHtml和endHtml
getHtmlText方法将输入字符串进行组装然后返回
appendHtmlText方法将输入字符串去头尾的beginHtml和endHtml,得到原始的输入字符串,然后附加新增的字符串,最后再使用getHtmlText方法返回。
原理很简单,是一种不算办法的办法,呵呵
安装文件及源码(运行环境AIR Beta3,编辑环境:FLEX Builder3 Beta3):
点击下载此文件
P.S 不知道有没有先行者提出过这个方法,如有擂同,请告知,呵呵

Twitterrific 收费的AIR程序

消息来源Selling Twitter Clients Built on AIR
For Mac only,售价为$14.95.也许是第一款收费的AIR程序.
不过真有不少人为这款软件付费,即使有其他多个可选的程序.
点击此查看产品详细信息
相信收费的AIR程序会慢慢的增加,促进AIR的良性发展.
谁是国内的第一个收费的AIR应用呢(也许已经有了,只不过不知道,呵呵)?
网络向桌面的延伸.

Flash CS3中文版安装AIR update Beta 3 for Flash CS3

如果下载英文版的安装,会提示 “更新程序找不到要更新的产品”.
这时只能下载手动安装程序手动安装。
下载地址(http://labs.adobe.com/wiki/index.php/AIR:Flash_CS3_Professional_Update):
For Macintosh
For Windows
手头上的是Windows XP,所以下载了Windows版本。
解压后打开文件中的readme.txt,安装方法都写在里面了,下面的文字也就是安装说明简单的翻译,呵呵
安装前请退出Flash CS3程序。确保是最新的Flash Player。将Flash CS3升级到最新版本。
然后开始COPY和替换文件:
1.打开Flash安装文件夹Adobe Flash CS3(默认地址:C:\Program Files\Adobe\Adobe Flash CS3\)
2.复制AIK文件夹到Adobe Flash CS3文件夹
3.复制ActionScript 3.0 AIR 1.0文件夹到Adobe Flash CS3\zh_cn\Configuration\
4.复制Players文件夹下AdobeAIR1_0.xml到Adobe Flash CS3\zh_cn\Configuration\Players\
5.复制External Libraries文件夹内所有文件到Adobe Flash CS3\zh_cn\Configuration\External Libraries\
6.复制Components文件夹下AIR ServiceMonitor文件夹到Adobe Flash CS3\Confinguraton\Components\
7.复制LastFirstRunInstall.dat到Adobe Flash CS3\zh_cn\First Run\,替换掉原文件
8.复制Publish Profiles文件下的AdobeAIR1_0.xml到Adobe Flash CS3\zh_cn\First Run\Publish Profiles\
9.复制Commands文件夹下的所有文件到Adobe Flash CS3\zh_cn\First Run\Commands\
10.复制CustomActions文件夹到Adobe Flash CS3\First Run\ActionsPanel\ActionScript_3\
欢迎屏:
如果升级这个,欢迎屏会变为英文版.如果要替换,推荐备份原有文件以便恢复.
1.打开用户配置文件夹.
(默认位置:Win XP: C:\Documents and Settings\\Local Settings\Application Data\Adobe\Flash CS3\zh_cn\Configuration\)
2.复制StartPage文件夹下的startpage.swf到C:\Documents and Settings\\Local Settings\Application Data\Adobe\Flash CS3\zh_cn\Configuration\StartPage,替换原文件
3.复制StartPage/Resources文件夹下的config.xml到C:\Document [...]

Adobe Media Player Prerelease 2 与下载

Adobe放出了Adobe Media Player (AMP)的prerelease 2版。支持AIR Beta3。
地址:

http://labs.adobe.com/technologies/mediaplayer/install/

直接下载AIR(安装需要AIR Beta3运行环境):

http://download.macromedia.com/pub/labs/mediaplayer/adobemediaplayer_p2_122007.air

加入了对H.264等的支持,如图

其他截图:
安装第一步:

声明:

接下来:

本地视频:

设置:

Page 1 of 3123»