2008年3月31日
如代码所示:
var pane:JPanel = new JPanel();
pane.setSizeWH(100, 100); //必须 或者 pane.pack();
mc.addChild(pane);
pane.revalidate(); //必须 此函数可以触发 RepaintManager.getInstance().addInvalidComponent(this);
因为我们自己把组件加到player容器中, 组件不受任何父容器的布局管理影响和默认没有加入重绘管理器. 所以要我们手动做这些事情才行.
于 http://www.richbox.net/blog/?p=218 看到下面对于交互设计的体会:
1.设计交互系统,应该尽量本着简单的原则,将负担留给系统,而不是留给用户。
2.以上原则是基于一个假设:用户都是缺乏耐心的,特别是当他们面临众多选择的时候。
3.强大的系统,必然会拥有相当复杂的逻辑,但不要表现给用户,只需要给用户一个经过优化的,最短的完成任务的路径。
4.实际应用中,如果一些流程过于复杂,且无法跳跃,这个时候,我们可以依据经验“猜测”一下用户的需求,给与用户两个选择:一,选择由系统代劳,二,选择自己动手。
5.这就是模板的概念,相信很多操作复杂的软件系统都提供了这样的机制。
6.这样既解决了大部分人群简化操作的需求,也满足了少部分人群个性化的需求。
这种模版的交互设置方法再很多软件安装,软件设置步骤上都经常可见, 好处也是不言而喻的,
可以提供一条供大多数人的几类人选择的捷径完成他们想到的目的, 像QQ的安装后提示的 多类型用户设置, 包括网吧用户, 家庭用户,
公司用户等等就是很好的针对了几大类型的用户的模版设置,要做到这个模版设置的最佳效果有几点是要注意的:
1,先要统计所有用户的类型
2,各种类型用户常用的设置相同点
3,针对这些类型和设置相同点创建模版
1,2点都是基于比较充份的用户调查才比较清楚, 但是由于这个调查可能是在软件提供之前无法做的, 那就要像文章所说的要经验猜测 用户的类型和设置相同点 做模版了。在软件越多人使用的时候能够收集用户意见了这个模版自然会做得比较好了。
Flash Player 9,0,124 这个版本加强了一些安全性相关的限制.
http://www.adobe.com/devnet/flashplayer/articles/flash_player9_security_update.html#policy_file
http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security_03.html
主要这几个. 如果不注意会对一些应用产生奇怪的现象.
1. 我遇到的一个是自己增加httpheader内容后引发的.
crossdomain.xml的DTD
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Adobe DTD for cross-domain policy files -->
<!-- Copyright (c) 2008, Adobe Systems Inc. -->
<!ELEMENT cross-domain-policy (site-control?,allow-access-from*,allow-http-request-headers-from*)>
<!ELEMENT site-control EMPTY>
<!ATTLIST site-control permitted-cross-domain-policies (all|by-content-type|by-ftp-filename|master-only|none) #REQUIRED>
<!ELEMENT allow-access-from EMPTY>
<!ATTLIST allow-access-from domain CDATA #REQUIRED>
<!ATTLIST allow-access-from to-ports CDATA #IMPLIED>
<!ATTLIST allow-access-from secure (true|false) "true">
<!ELEMENT allow-http-request-headers-from EMPTY>
<!ATTLIST allow-http-request-headers-from domain CDATA #REQUIRED>
<!ATTLIST allow-http-request-headers-from headers CDATA #REQUIRED>
<!ATTLIST allow-http-request-headers-from secure (true|false) "true">
<!-- End of file. -->
注意一下这个东西就可以了
因为flash的跨域问题, 会导致BitmapData.draw() 方法在对有跨域加载的视频流, 图片等资源时抛出SecurityError异常导致无法正常抓图
解决方式在帮助文档也有说, 总结一下:
1.图片跨域
在被加载图片域放置crossdomain.xml
load(new URLRequest(path), new LoaderContext(true));
2.点播流(http视频流)
在被加载视频域放置crossdomain.xml
设置netStream.checkPolicyFile = true;
3.实时流跨域
这个要在FlashPlayer 9.0.115.0才有效
方法来源于:
http://www.ekameleon.net/blog/index.php?2008/02/20/93--fmis3-bitmapdatadraw-and-flash-player-901150-security-sandbox-violation
我只做了fms3下的测试通过.
简单点说就是在fms应用的main.asc 中加上
application.onConnect = function( client )
{
// fix Security sandbox violation : BitmapData.draw on RTMP source
client.videoSampleAccess = "/";
this.acceptConnection(client) ;
}