zoukankan      html  css  js  c++  java
  • 【FLEX教程】#008 开发中的问题笔记(慢更…)

    在这里记录一下个人在FLEX开发中遇到的一些问题。方便一些遇到同样问题的朋友们,能够快速的解决这些问题。

    这篇笔记我会慢慢的更新,(PS:有遇到问题就往上面更….)


    2015年1月4日 12:53:55  请求txt中数据格式问题

    情景:用Flex开发前端的时候,服务端的接口还没有写好。 不能等服务端接口写好再做,这样拖慢进度。

    因此,用了虚假的数据,从txt里面读取出来。

    问题:Txt格式是这样的:

    { "SysInfo": { "Name": "综合应用系统", "ID": "1"
    
        },
        "ModuleConfig"
    : { "Name": "xxxxx"
    
        }
    }

    结果用UrlLoader请求回数据,解析成JSON对象的时候,报错了。

    解析代码:(corelib.swc 里面封装好的解析方法)

    var json:String = e.target.data as String;
    var data:Object = com.adobe.serialization.json.JSON.decode(json);

    错误:Error: Unexpected  encountered  …..(一大串,你出错位置)

    解决方案:把txt中的JSON压缩一下, 就 ok 了。


    2015年1月4日 13:14:03  Flex加载类库的机制问题

    问题描述:Flex加载包的机制: 不管 import 多少包,Flex只会编译你代码中有使用的包。

    例子:导入了以下四个包。

    import mx.controls.Alert;
    import mx.controls.Button;
    import mx.controls.CheckBox;
    import mx.controls.ComboBox;

    代码中,没有用到下拉框这个东西(ComboBox),那么Flex就不会把 这个包编辑到SWF中。

    仔细想想是不是好像没有存在什么问题??   正常情况下,的确是没有问题的。

    但是如果我根据 数据库中保存的控件类名(Button,ComboBox…),要生成相对应的控件?

    那么问题来了,SWF中,没有把ComboBox 这个包,编译到SWF中。   根据反射出来的类,生成相对应的控件时。报错了(没装Debug版的Flash Play,所以没截图)。

    解决方案:方法1:专门定义一个类,定义相对应控件的变量(比较麻烦,如果有新增控件,又要添加变量。)

    package strongsoft.utility 
    {
        import mx.controls.Alert;
        import mx.controls.Button;
        import mx.controls.CheckBox;
        import mx.controls.ComboBox;
        import mx.controls.DataGrid;
        import mx.controls.Image;
        import mx.controls.Label;
        import mx.controls.RadioButton;
        import mx.controls.Text;
        import mx.controls.TextArea;
        import mx.controls.TextInput;
        
        
        public class ReflectionHelper
        {
            private var reflectionHelper_Alert:Alert;
            private var reflectionHelper_Button:Button;
            private var reflectionHelper_CheckBox:CheckBox;
            private var reflectionHelper_ComboBox:ComboBox;
            private var reflectionHelper_DataGrid:DataGrid;
            private var reflectionHelper_Image:Image;
            private var reflectionHelper_Label:Label;
            private var reflectionHelper_RadioButton:RadioButton;
            private var reflectionHelper_Text:Text;
            private var reflectionHelper_TextArea:TextArea;
            private var reflectionHelper_TextInput:TextInput;
            
            public function ReflectionHelper()
            {
                
            }
        }
    }

    方法2:(网上的解决办法),没测试过。帖子传送门:http://bbs.csdn.net/topics/350037690

    applicationDomain = ApplicationDomain.currentDomain; //放在ModuleLocator的creationComplete里去

    问题描述: 用URLLoader读取了外部XML文件,然后把读取的XML信息,强转成XML对象。

    var xml:XML = data as XML ;   //返回 null

    然后就奇怪,为什么 用 as 来强转不起作用。

    解决方案:

    1、用 XML(data)来替代 data as XML 就可以了

    2、用 new XML(data) 也可以进行转换。

    理由:

               1、as 不可以转换顶层的类(比如 str as Number)是没有作用的,顶层类有哪些查阅《As/typeof /instanceof /is的作用

      2、as 强转失败的话,不会报错,只会返回null


  • 相关阅读:
    Add Two Numbers
    Reverse Linked List II
    Reverse Linked List
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
    Partition List
    Intersection of Two Linked Lists
    4Sum
    3Sum
    2Sum
  • 原文地址:https://www.cnblogs.com/zhongxia/p/4200870.html
Copyright © 2011-2022 走看看