【问题标题】:TypeError: Error #1034: Type Coercion failed: cannot convert Object to ArrayTypeError:错误#1034:类型强制失败:无法将对象转换为数组
【发布时间】:2013-10-04 07:52:05
【问题描述】:

我对将对象、变量或从我的 Red5 Java 服务器应用程序发送到 AS3 脚本的理解有疑问。

我面临的问题是我用Java写了以下代码:

        ((IServiceCapableConnection) conn).invoke("say", params);

它调用我的 ActionScript 中的一个方法,该方法调用“say”,其参数称为“params”。 到现在为止还挺好。

我的 ActionScript 看起来像:

        public function say(user:Array):void{
            var usr:Array = user  as UserVO;
            list.appendText(usr[0] + "\n");
        }

所以它得到了数组,但我不能使用它,它告诉我导致以下错误:

TypeError:错误 #1034:类型强制失败:无法将 Object@123b4a7f1 转换为数组。

那么有人可以告诉我如何“转换”这部分吗?我看了一些关于序列化的文章,但没有得到问题。

【问题讨论】:

    标签: java actionscript-3 apache-flex red5 coercion


    【解决方案1】:

    UserVOArray 不兼容:

     var usr:Array = user  as UserVO;
    

    你可以试试这个:

     var usr:UserVO = user[0] as UserVO;// or similar in a for loop
    

    如果您验证以下内容会很好:

    Java

    package abc;
    public class UserVO implements Serializable { .. }
    

    AS

    [Bindable]
        [RemoteClass(alias="abc.UserVO")]
        public class UserVO 
        { .. }
    

    【讨论】:

    • Ty,为您的评论添加帽子,但我仍然收到此异常 TypeError: Error #1034: Type Coercion failed: cannot convert Object@10957eac1 to Array。我可以为每个值在 for 循环中进行转换吗?
    • 您在哪一行收到此错误?您还可以发布您在Java 调用中传递的params 是什么..
    • 啊抱歉忘了贴... Object[] params = new Object[] {user}; User 是一个包含我所有用户属性的值对象。它的构建类似于: public class UserVO { private int id; public int getId() { 返回 id; } public void setId(int id) { this.id = id; } }
    • 编辑了我的评论,Java UserVO 应该 implement Serializable
    • 非常感谢,但我现在收到以下异常:TypeError:错误#1009:无法访问空对象引用的属性或方法。我现在会搜索这个,但你帮了我很多。
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多