错误描述

flex在加载module时报出如题所示的错误,

实际表现

问题就出现在这 我取消这个错误提示框 再次在前台查询数据 就一切ok

问题就出现在这一句

var zoufangModel:ZfRecord=ZfRecord(data);

调试

第一次是这样 继续就出抛出错误

取消错误再次查询 调试的结果就是这样

多了个[inherited] 确实第二次是正常的 但为什么第一次不行 到现在也不明白

解决方法

将错误的那一句改成

var zoufangModel:ZfRecord = ObjectTranslator.objectToInstance( data, ZfRecord ) as ZfRecord;

ObjectTranslator类的代码如下

/*

* Copyright (c) 2006 Darron Schall <darron@darronschall.com>

*

* Permission is hereby granted, free of charge, to any person

* obtaining a copy of this software and associated documentation

* files (the "Software"), to deal in the Software without

* restriction, including without limitation the rights to use,

* copy, modify, merge, publish, distribute, sublicense, and/or sell

* copies of the Software, and to permit persons to whom the

* Software is furnished to do so, subject to the following

* conditions:

*

* The above copyright notice and this permission notice shall be

* included in all copies or substantial portions of the Software.

*

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES

* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

* OTHER DEALINGS IN THE SOFTWARE.

*/

package com.common.util

{

    

    import flash.net.ObjectEncoding;

    import flash.net.registerClassAlias;

    import flash.utils.ByteArray;

    import flash.utils.describeType;

    import flash.utils.getDefinitionByName;

    

    /**

     * Utility class to convert vanilla objects to class instances.

     */

    public final class ObjectTranslator

    {

        

        /**

         * Converts a plain vanilla object to be an instance of the class

         * passed as the second variable.  This is not a recursive funtion

         * and will only work for the first level of nesting.  When you have

         * deeply nested objects, you first need to convert the nested

         * objects to class instances, and then convert the top level object.

         *

         * TODO: This method can be improved by making it recursive.  This would be

         * done by looking at the typeInfo returned from describeType and determining

         * which properties represent custom classes.  Those classes would then

         * be registerClassAlias'd using getDefinititonByName to get a reference,

         * and then objectToInstance would be called on those properties to complete

         * the recursive algorithm.

         *

         * @param object The plain object that should be converted

         * @param clazz The type to convert the object to

         */

        public static function objectToInstance( object:Object, clazz:Class ):*

        {

            var bytes:ByteArray = new ByteArray();

            bytes.objectEncoding = ObjectEncoding.AMF0;

            

            // Find the objects and byetArray.writeObject them, adding in the

            // class configuration variable name -- essentially, we're constructing

            // and AMF packet here that contains the class information so that

            // we can simplly byteArray.readObject the sucker for the translation

            

            // Write out the bytes of the original object

            var objBytes:ByteArray = new ByteArray();

            objBytes.objectEncoding = ObjectEncoding.AMF0;

            objBytes.writeObject( object );

            

            // Register all of the classes so they can be decoded via AMF

            var typeInfo:XML = describeType( clazz );

            var fullyQualifiedName:String = typeInfo.@name.toString().replace( /::/, "." );

            registerClassAlias( fullyQualifiedName, clazz );

            

            // Write the new object information starting with the class information

            var len:int = fullyQualifiedName.length;

            bytes.writeByte( 0x10 );  // 0x10 is AMF0 for "typed object (class instance)"

            bytes.writeUTF( fullyQualifiedName );

            // After the class name is set up, write the rest of the object

            bytes.writeBytes( objBytes, 1 );

            

            // Read in the object with the class property added and return that

            bytes.position = 0;

            

            // This generates some ReferenceErrors of the object being passed in

            // has properties that aren't in the class instance, and generates TypeErrors

            // when property values cannot be converted to correct values (such as false

            // being the value, when it needs to be a Date instead).  However, these

            // errors are not thrown at runtime (and only appear in trace ouput when

            // debugging), so a try/catch block isn't necessary.  I'm not sure if this

            // classifies as a bug or not... but I wanted to explain why if you debug

            // you might seem some TypeError or ReferenceError items appear.

            var result:* = bytes.readObject();

            return result;

        }

        

    } // end class

} // end package

参考资料

http://blog.163.com/hongwei_benbear/blog/static/118395291201122612328768/

flex 强制转换类型失败无法将object转换为XXX的更多相关文章

  1. TypeError: Error #1034: 强制转换类型失败:无法将 "" 转换为 Array。

    1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 "" 转换为 Array. at mx.charts.series::LineSeries/ ...

  2. TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill。

    1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill. at mx.charts.ser ...

  3. TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。

    1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9aa90a1 转换为 spark.core.IViewport. ...

  4. TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。

    1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClick ...

  5. Flash Professional 报错 TypeError: Error #1034: 强制转换类型失败:无法将 xxxx@zzzz 转换为 yyy

    通常是因为xxx yyy 两个不同链接名的元件 使用了同一个属性名

  6. Web | JavaScript的引用数据类型强制转换类型

    我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...

  7. PHP强制转换类型

    PHP强制转换类型   获取数据类型 : 1.如果想查看某个表达式的值和类型,用var_dump(). 2.如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype().3.要查看某个类型 ...

  8. 简述Java变量和强制转换类型

    简述Java变量和强制转换类型 java变量 1. java变量 变量:顾名思义,就是在java执行程序过程中可以发生改变的量,就好比方程式中的未知数X一样. 变量的内存分配过程 int a ; // ...

  9. C++ 4 种具有更 为准确语义的新强制转换类型

    1. static_cast<T>() 可用于把指向A 的指针强制转换为指向B 的指针,其约束条件是类B必须是类A的子类.例如:A *obj = new B;B *b = static_c ...

随机推荐

  1. Redis开启远程登录连接

    Redis 安装详见 http://www.cnblogs.com/zendwang/p/6560628.html 当前安装测试版本:Redis 3.2.8 默认安装完毕Redis只能本机访问 [ro ...

  2. 脱离文档流两操作,float和position:absolute的区别

    文档流:将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,块状元素独占一行,内联元素不独占一行: CSS中脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离 ...

  3. java-反射深度剖析

    Java反射是Java语言一个很重要的特征,简单剖析下反射的定义.原理.使用.性能及应用场景. (一)定义 程序运行时,允许改动程序结构或变量类型,这种语言称为动态语言.java不属于动态语言,但提供 ...

  4. vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画

    当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的 异步 ...

  5. [转]关于OpenGL的绘制上下文

    [转]关于OpenGL的绘制上下文 本文转自(http://www.cnblogs.com/Liuwq/p/5444641.html) 什么是绘制上下文(Rendering Context) 初学Op ...

  6. CentOS, Fedora, or Red Hat一行命令安装apache + mysql + php 及各种依赖库

    sudo sh -c "yum install httpd httpd-devel mysql mysql-server mysql-devel php php-mysql php-comm ...

  7. ACM 畅通工程

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

  8. Node.js 逐行读取

    逐行读取 稳定性: 2 - 不稳定 使用 require('readline'),可以使用这个模块.逐行读取(Readline)可以逐行读取流(比如process.stdin) 一旦你开启了这个模块, ...

  9. Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API

    新语法 方法引用Method references Lambda语法 Lambda语法在AndroidStudio中报错 Stream API 我正参加2016CSDN博客之星的比赛 希望您能投下宝贵 ...

  10. dynamic initializer和全局变量

    "慎用全局变量,包括全局静态变量" 是众所周知的原则,因为全局变量除了会增加程序的维护成本. 如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多.因为全局变 ...