Flex 4 Timeline – SDK发布日期

如图:

资料来源:
Adobe announces next Flex SDK release time frames
3.4 beta 1: June '09
3.4: August '09
4.0: Q4 '09
4.1: Q3 '10
下载:
Open Iteration Meeting(PDF)

AS3嵌入SWF资源

Embedding Resources with AS3
http://www.bit-101.com/blog/?p=853
Flex Embed SWF 與 Embed Symbol 的差異
http://ticore.blogspot.com/2007/12/flex-embed-swf-embed-symbol.html

Flash全屏BUG?

新建一个项目,添加全屏操作,stage加入键盘监听,编译运行。
使用独立的flashplayer打开,正常
在IE7中打开含flash的页面,多次进行全屏操作,可以发现在全屏事件后,输出了空格的按键事件
在Firefox/3.0.7中测试,每次进入全屏后都会出现这种问题。
flashplayer版本均为最新:10.0.22.87
将版本降至10.0.12.36,问题依旧。
拿到示例到同事电脑上测试,Firefox和flash版本与上述版本相同,但未出现此现象。
被这个问题困扰半日,因为程序中要监听空格键,全屏后自动角触发空格键,扰乱程序执行了。
另外,进入全屏后(测试过目前常见的视频站的播放器),激活右键,会发现fps降到了1~2左右,电脑异常缓慢,右键菜单取消后,恢复正常。但同事电脑上也无此现象。
示例代码:
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
btn.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void
{
if (stage.displayState == StageDisplayState.NORMAL)
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}
else
{
stage.displayState = StageDisplayState.NORMAL;
}
txt.appendText(“stage.displayState –> “+stage.displayState.toString()+”\n”);
txt.scrollV = txt.maxScrollV;
}
function keyUpHandler(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.SPACE)
{
txt.appendText(“你松开了空格\n”);
}
txt.scrollV = txt.maxScrollV;
}
function keyDownHandler(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.SPACE)
{
txt.appendText(“你按下了空格\n”);
}
txt.scrollV = txt.maxScrollV;
}
测试:Download
测试代码:Download
通过全屏后的100ms内禁用按键监听,也算是解决这个问题了

FLEX本地化文件的编码

偶遇介绍FLEX本地化的实现的教程,以前编写的程序没有这方面的需求,刚好借此机会学习一下。
教程再辅以FLEX的帮助,实现简易的本地化还是比较容易的。
中间碰到个问题不得不提一下,是关于本地化.properties文件的编码的。
教程上指出中文要以utf-8编码,于是将文件用记事本保存为了utf-8编码。
但是FLEX一直提示出错:
“characters which are not supported by the ISO-8859-1 character encoding”

最后终于明白了,要在FLEX中修改文档编码:

apply之后一切正常了

F4V Post Processor F4V文件不能播放的一种方法

Flash Media Live Encoder 3/Flash Media Server3.5录制的F4V文件不能用flv播放器播放。
听经理说过F4V和MP4一样是种容器,难道是编码不能被识别?
但以常理来讲,ADOBE自家的”套装”,没道理不支持的。
或许对网络过于依赖了,随手就上了GOOGLE,查到了一些相关信息。
比较有用的一条是:
Subject: F4V
其中提到了解决方案就是F4V Post Processor这个ADOBE官方提供的工具。
下载地址:F4V Post Processor
看了里面文档,大意是说录制生成的是一种碎片文件(fragmented file), 以多种moof atom将数据保存。
有些MPEG-4工具和播放器不支持moof atoms,只支持单一的moov atom。
这些都是视频编码的术语吧,翻译可能不正确,请自行查找相关资料,若行内人士路过请指点一二。
关于moov atom,下面有一点解释:
Re: moov atom
还有相关的MP4文件需要全部加载才能播放的问题,也是由于关于视频的atom数据放在文件结尾导致的,
有人做出了AIR工具:
H.264 and the moov atom
令人高兴的是F4V Post Processor是命令行方式工作的,这点太棒了。另外还提供了Linux版。
不过为什么不像flvcheck等工具集成到FMS中呢,不解。

皮肤库元件加载及解析

最近又开始做播放器(同学一直说我是播霸),打算重新写一个超轻量级的样式管理。
coding的时候不禁怀念并感叹FLEX的样式管理真的很强大。
下面代码是很简单却也是库元件的核心:
package com.skin
{
import flash.display.Loader;
/**
* 解析皮肤元件
* @author kingnare
*
*/
public class SkinFactory
{
public static var loader:Loader;
public static function make(classname:String):*
{
if(!loader)
{
throw new Error(“Loader is null”);
}
try
{
if(loader.contentLoaderInfo.applicationDomain.hasDefinition(classname))
{
var classReference:Class = loader.contentLoaderInfo.applicationDomain.getDefinition(classname) as Class;
return new classReference();
}
else
{
return null;
}
}
catch(e:Error)
{
throw new Error(“Error when getting skin symbol:”+classname);
}
}
}
}
留此文以备用。