跨SWF安全沙箱引起的类型转换问题

问题描述:
今天做Denizen Hello,用的是Gaia框架,LoadingPage调用IndexPage中的MapPainter类型的对象出现如下错误:
TypeError: Error #1034: 强制转换类型失败:无法将 com.couldhll.bitmaptext::MapPainter@24f793a1 转换为 com.couldhll.bitmaptext.MapPainter。

问题分析:
检查LoadingPage和IndexPage中的类型,确认都是com.couldhll.bitmaptext.MapPainter类型。
但是IndexPage中是MapPainter@24f793a1类型,而LoadingPage中是MapPainter类型。
开始怀疑IndexPage中有问题,但是无果。偶尔在Main.as中使用MapPainter类型的对象后,一切正常。

问题解决:
其实我们都知道Loader.load()后面一个参数是安全命名空间参数,要设置成:SecurityDomain.currentDomain。
在Gaia中,可以在site.xml中为page设定domain="current"。
本例如下:
<?xml version="1.0" encoding="UTF-8"?>
<site title="Hello" menu="true">
    <page id="index" src="index.swf" domain="current" >
        <page id="nav" src="nav.swf" depth="top" domain="current" >
            <page id="loading" title="Loading" src="loading.swf" menu="true" domain="current" />
   <page id="home" title="Home" src="home.swf" menu="true" domain="current" />
        </page>
    </page>
</site>

Gaia swfaddress问题

问题描述:今天Cailven用Gaia搭建NewBalance Sonic 574 mini site框架。本地测试时,地址栏并不随菜单跳转而改动。在设置本地安全路径后,地址栏首页能够跳转,但是次页面不行。

问题分析:地址栏有问题说明是swfaddress的问题。仔细看了site.xml,发现首页的title属性是英文,其他次页面都是中文。

问题解决:把其title都改为英文。一切正常了。

Gaia插件消失问题

在Adobe Extension Manager CS4 安装插件後在Flash中却无法找到插件的Bug如果你遇到了如标题中所述的问题,那么估计你是安装了中文版的Extension Manager,却又使用的英文版的其他CS4组件. 🙂

以下是解决办法:

   1. 在Extension Manager CS4的快捷方式上点右键,选择属性.
   2. 到快捷方式选项卡,修改目标栏里的路径,加上 -locale lang=”en_US”.也就是说,修改后的路径是这样的:

    “D:\Program Files\Adobe\Adobe Extension Manager CS4\Adobe Extension Manager CS4.exe” -locale lang=”en_US”

请注意-locale之前有一个半角空格.

然后点击这个快捷方式,打开Extension Manager, 重新启用你安装的插件,然后就ok了.

(感谢Cailven提供)

以下是mac版本的解决方法:

mac运行 Adobe Extension Manager CS4产生的中文版无法切换倒英文版本的解决方法如下:

经过一个下午的常识,终于找到了解决方法:
打开实用工具-终端,然后输入
"/Applications/Adobe Extension Manager CS4/Adobe Extension Manager CS4.app/Contents/MacOS/Adobe Extension Manager CS4" -locale lang="en_US"
这样就可以安装各类flash插件到英文版flash中了

amfphp中文乱码问题解决方法

问题描述:今天过测试dulux项目时候,通过amfphp传输中文的时候出现乱码,变成?????????????。

问题分析:问题应该出在编码问题上。flash中是gb编码,而amfphp是utf-8。

问题解决:
 打开gateway.php:
修改
$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");

$gateway->setCharsetHandler( "mbstring", "gb2312", "gb2312" );
一切安逸了

amfphp远程访问问题

问题描述:
最近在忙Dulux,在连接后台amfphp的时候,Flash返回如下错误:
Error #2044: 未处理的 NetStatusEvent:。 level=error, code=NetConnection.Call.BadVersion

问题分析:
肯定是后台有问题,可能不允许远程访问,查了下。

解决方法:
打开amf/gateway.php,找到代码:
if(PRODUCTION_SERVER)
{
    //Disable profiling, remote tracing, and service browser
    $gateway->disableDebug(); //注释掉               
    //Keep the Flash/Flex IDE player from connecting to the gateway. Used for security to stop remote connections.
    $gateway->disableStandalonePlayer(); //注释掉       
}
将这两句注释掉,重启服务。
大功告成,问题解决。