AIR 2.0 Beta and Flash Player 10.1 Prelease

详细如下:
http://swfever.com/?p=627

http://flash.9ria.com/thread-39581-1-1.html
http://blog.digitalbackcountry.com/2009/11/air-2-and-flash-player-10-1-betas-now-available/
http://www.senocular.com/?entry=785
http://blogs.adobe.com/air/2009/11/adobe_air_2_beta_now_available.html
http://www.insideria.com/2009/11/air-20-beta-now-available-on-a.html
http://www.gskinner.com/blog/archives/2009/11/flash_player_10.html
http://blogs.adobe.com/penguin.swf/2009/11/flash_player_101_beta.html
他们的速度真快, 我只赶上个消息尾巴~~
Flash Player 10.1 Beta 下载
AIR 2.0 Beta 下载

RSA Encryption for Flex 4 RSLs

原文地址:
http://www.gridlinked.info/how-to-encrypt-flex-rsls/
这里截取并尝试翻译了一段FLEX程序初始化及此解密过程.
应用启动过程:
1. 首先, 为第1帧加载足够的数据.
2. Flash Player通过创建SystemManager实例执行加载数据.
3. SystemManager命令Flash Player停止在第一帧.
4. SystemManager创建Preloader,
通过它创建DownloadProgressBar控件并显示在客户界面上.
5. Preloader开始从FLEX SWF(或外部SWF)加载其余数据.
一旦FLEX框架及程序代码数据加载, System Manager跳到第2帧并初始化Application实例.
1) 所有的RSL及相关类现在已加载[到ApplicationDomain];
注意加载的顺序就是app编译时定义的顺序.
2) 所有应用程序使用的类定义(视图, 逻辑等)先加载到第2帧.
注意这里, 在第一帧的preloader代码甚至可以在FLEX框架类加载前, 安装补丁到其中.
3) 这种技术就被叫做”monkey-patching”, 会被用在后面提到的解密过程中.
6. 一旦Application实例创建, SystemManager设置
Application.systemManager指向自己,
之后你就可以访问SystemManager了.
7. Application在初始化处理开始前派发预初始化(preinitialize)事件.
8. Application继续创建内部实例.
application调用createChilden()方法.
这时每个应用的组件被构造并调用自己的createChilden()方法.
具体情况参考组件生命周期章节.
9. Application派发初始化(initialize)事件,
指明所有的组件已被初始化.当然, 此时所有的组件尚未布局.
10.最后,所有的子控件及容器被创建并设置大小及位置后,
Application就会派发creationComplete事件.
11.creationComplete事件派发后,
Preloader移除DownloadProgressBar 控件,
SystemManager将Application实例加到Flash Player的
显示列表中(Flash Player display list基本上是个树结构,
包含着可视及潜在可视对象,构成整个应用.
当向应用中添加或移除组件时,
基本上就是将它们从显示列表(display list)中添加或移除掉).
12.Application一旦添加到Flash Player显示列表中,
Application派发applicationComplete事件.
13.Application此时已被创建好并显示到屏幕上准备与用户交互了.
这种RSL的解密过程如下:
1.Flash Player加载已加密的RSL/SWF并同时派发RSLError事件;
这会停止预加载过程使程序”挂起”.
2.中断掉这个事件防止由于冒泡机制被其他监听器捕获;
这能有效的阻止加载序列中的其他RSL.
3.使用Nitro-LM,异步请求RSA解密密钥.
4.重新加载加密的RSL(清除已加载的SWF字节码).
5.解密数据.
6.将已经解密的数据加载到AVM中.
7.通知Preloade恢复加载其他等待的RSL.
很巧妙的一个方法 :)

Flash位图的处理限制

读了后, 做了一下测试.的确存在这样的问题.
文档(FlashPlayer10)中指出BitmapData的高或宽不能超过8191个像素, 总像素数不能超过16777215.
这里估计也是Flash的位图处理限制.即使是在Flash CS4这样的可视化的IDE中, 同样存在这个现象:
找来一张3200×1666的图片(尽量选择大尺寸图片便于测试极限情况).
将其宽度缩小至50, 在舞台中从最左拖至最右(舞台范围尽量调大),
X轴上总会有一个位置M,当图片经过M时, 图片内容会发生变化,
出现重复图像(导入的图片被打散[Ctrl+B操作])或出现纯色以及拉丝等现象.
而且在编辑状态,这个位置M和Flash舞台(0,0)位置无关,而是与编辑区的左上顶点有关.
可以这么理解, 编辑区其实是一个实时编译的”SWF”.
这点和Flex Builder有些相似, 有时我们会发现在进入CSS的预览面板时,
能够看到熟悉的FLEX程序加载进度条.
进一步测试可以发现这个M与图像高度无关(下图中第二组图片经过外面剪切后重新导入Flash中):

但是与图像原始宽度及缩放比例有密切关系:


放大2000倍的舞台:


在Y轴上,同样存在对应着图片的”极限”位置N:

这个点怎么确定呢? 不知道. 这里通过对点位置有影响的几个属性值做了简单推算, 以宽度计算为例, 图片原始宽度ow, 当前宽度w, 假设存在某个常量C,
那么公式可能是C=M*(ow/w), 这个C大概在35000~36000, 而对于高度测试中大概在18000左右浮动.
上面文章中指出2562宽度的图片,实际宽度为50,坐标不超过640, 按C=M*(ow/w)可以算出数值为(640+50)*(2562/50) = 35355.6
当然,真正的过程不得而知,也许和内存占用,位图渲染处理有关.这种计算结果不可能是一个”范围”, 上面的推算仅供参考,博君一笑.
希望有知道原理的兄弟指点一下 :)
扩展阅读:
Flash Player Bitmap Limits
Flash Player Bitmap Limits Again
BitmapData

大型Flash游戏 机械迷城(Machinarium)

今天玩了下机械迷城(Machinarium), 相当有趣.
与主人公一起在未知的机械城里转来转去, 如同历险一样.游戏精美的画面和略含幽默剧情很快会让你上瘾.
游戏是由Amanita Design(blog), 一个捷克的独立开发小组制作的, 属于冒险解谜类型的游戏.


当然, 这个游戏不是免费的, 但也不贵, 官网上的报价是$20, 且上面有游戏试玩 :)
我无耻的下了一个免费版 -__- 安装完游戏, 里面有很多由数字组成的文件, 将后缀改为swf, 双击便可打开.
随意找了个文件小探了下, 是AS2.0的编写的.进入游戏中, 右键仍旧是熟悉的Flash设置与版本声明. 为什么要留下这个呢, 推测是方便用户设置”启用硬件加速”的.

Grant Skinner的关于AS3代码优化演示稿

来源:http://theflashblog.com/?p=1416

地址:http://gskinner.com/talks/quick
很不错的slides, 共100页, 简单明了, 还配有实例.
使用左右方向键查看前后页, 或者直接在页码处填写100内的数字,回车即可.当然, 直接在地址栏写入页码也是可行的 :)
P.S. slides过渡效果也很帅的

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);

非开发者如何使用动态流及DVR技术

通过此文可以了解一下动态流及DVR的简易配置和使用过程.
有些句子翻得不太顺, 见谅 :)
http://flash.9ria.com/thread-35933-1-1.html

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.
附带项目代码:
点击下载此文件

通过命令行调用FlexPMD

FlexPMD可以用来改进Flex或AS3 Project的代码质量.
资料参考:
[b]
FlexPMD开源项目发布
使用FlexPMD改进AS3/Flex代码质量
FlexPMD – Finding worst practices in your projects
[/b]
Windows操作系统, 下载了command line版本(1.0.RC3). 解压到D:\Program Files\Adobe\flex-pmd
打开命令行窗口, 输入D:, 回车进入D盘, 输入cd D:\Program Files\Adobe\flex-pmd, 回车, 进入pmd目录
键入java -Xmx256m -jar flex-pmd-command-line-1.0.RC3.jar
注意更换版本号, 这里有可能与你下载的不同.
回车, 输出:
2009-9-3 9:59:08 com.adobe.ac.pmd.commandline.FlexPMD areCommandLineOptionsCorre
ct
严重: Usage: java com.adobe.ac.pmd.commandline.FlexPMD (-s|–sourceDirectory)
ourceDirectory> (-o|–outputDirectory) [(-r|–ruleSet)>] [(-e|–excludePackage) ]
-s 就是源代码目录, -o 输出检测结果目录, -r 检测规则 -e应该是排除检测的包
例如, 运行:
java -Xmx256m -jar flex-pmd-command-line-1.0.RC3.jar -s D:\Work\oVideoPlayer\src -o D:\testPMD
运行结束后, 发现生成了pmd.xml文件.
然后我们打开FlexPMD Violations Viewer, 将pmd.xml导入便可查看分析结果.
更详细的说明请参考文章开头三篇文章. 总之, 是个不错的工具.

《心灵之窗》

信息来源:http://acfun.cn/html/art/20090830/45330.html
百度原帖
看后感觉很震惊, 已经抄袭到这种地步了! 学学新海诚的手法是不错的, 但直接拿来用就不对了.

Page 4 of 24« First...234561020...Last »