服务器端是用mongoose架设的轻量级服务器,客户是flex的swf
1. 服务器端可以响应几乎任何URL请求,单独URL可以JSP也没问题,但用FLEX做时就会出问题,
RPC Fault faultString="Security error accessing url"
faultCode="Channel.Security.Error"
faultDetail="Destination: DefaultHTTP"
在实在是办法时曾经以JSP或SERVLET为跳板,倒是可以解决问题,但这个解决办法本身就是问题啊。。。。
是单独进行HTTP请求时产生的跨域请求造成的,解决方法为:
在服务器端添加XML文件,crossdomain.xml,将可以访问的域domain设置为全部(*)
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
参考:http://blog.ntsky.com/flex-rpc-security-error-accessing-url.html
2. FLEX的默认编码为UTF-8,但将其改为GB2312时,传递的参数编码似乎仍为UTF-8,必须在代码中加入
System.useCodePage=true;
这样使得FLEX编码与MXML编码一致,同为GB2312
3. RaVis的在线帮助文档
http://birdeye.googlecode.com/svn/trunk/ravis/libRaVis/asdoc-output/index.html
4. Error #1088: 文档中根元素后面的标记格式必须正确。
a. 这是错误是在我用
var loader:URLLoader = URLLoader(event.target);
EngModel.getInstance().chnCaption= new XML((loader.data)as String);
时出现的.原因是XML分析器出错,要改为new XMLList((loader.data)as String);
来自:http://www.cnblogs.com/fishert/archive/2007/07/18/822717.html
b.
最近的一个项目,里面需要用as3载入xml,xml由PHP输出,编码为gbk.as3里用了System.useCodePage=true.
调试时发现时不时会出现错误:TypeError: Error #1088: 文档中根元素后面的标记格式必须正确.特别是数据稍大一点的时候.
经调试发现载入的数据在XML末端有时会莫明其妙跟上一串随机乱码.
检查了PHP确定格式无误后,明白了这是flash as3使用了System.useCodePage=true后的BUG..
网上解决办法是使用utf-8的格式.可是现在全站都统一为GBK了,接口又多,改起来很麻烦.
于是结合的XML特定格式,在flash上想了个小小的办法,轻松搞定了.
下面把我的办法共享一下吧.
private function onLoadComplete ( e : Event ): void {
var loader : URLLoader = e . currentTarget as URLLoader ;
var data = loader . data ;
data = data . substr ( 0 , data . lastIndexOf ( ">" )+ 1 );
var xml : XML = new XML ( data );
............
}
看出来了吧,其实就是把多出的随机字符串过滤一下,因为xml必定是以'>'结尾的,将最后的'>'之后的字符都去掉就OK了。也不用全站都改代码了。需要的朋友可以参考一下吧。
来自:http://www.cnblogs.com/xxcainiao/archive/2009/06/05/1496955.html
5. 关于initialize和creationComplete等事件的发生时机
假设程序中有这样的结构:
Application
OuterVBox
InnerVBox1
InnerVBoxLabel1
InnerVBox2
InnerVBoxLabel2
事件: preinitialize, initialize, creationComplete发生的顺序是这样的:
OuterVBox preinitialize
InnerVBox1 preinitialize
InnerVBox1Label preinitialize
InnerVBox1Label initialize
InnerVBox1 initialize
InnerVBox2 preinitialize
InnerVBox2Label preinitialize
InnerVBox2Label initialize
InnerVBox2 initialize
OuterVBox initialize
InnerBox1Label creationComplete
InnerVBox2Label creationComplete
InnerVBox1 creationComplete
InnerVBox2 creationComplete
OuterVBox creationComplete
如果将 OuterVBox容器变成ViewStack并且creationPolicy 属性为auto, 则事件发生顺序是:
OuterViewStack preinitialize
InnerVBox1 preinitialize
InnerVBox2 preinitialize
OuterViewStack initialize
InnerBox1Label preinitialize
InnerBox1Label initialize
InnerVBox1 initialize
InnerBox1Label creationComplete
InnerVBox1 creationComplete
OuterViewStack creationComplete