读书人

类型1067:Array 类型值的隐式强制指令

发布时间: 2012-03-30 17:32:09 作者: rapoo

类型1067:Array 类型值的隐式强制指令的目标是非相关类型
新下载了Flash Builder 4来学习flex。按照网上的一个例子写,但出现上面的错误。
代码如下:

JScript code
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"                xmlns:s="library://ns.adobe.com/flex/spark"                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" backgroundColor="#AC8A8A">    <s:layout>        <s:BasicLayout/>    </s:layout>    <fx:Script>        <![CDATA[            //初始化            internal function InitList():void{                var srcArr:Array=new Array();                srcArr.push("China Soft");                srcArr.unshift("BBBB");                srcArr.unshift("CCCC");                list1.dataProvider=srcArr;                            }                        //循环初始化            internal function ForInitList():void{                var cycleArr:Array=new Array();                                for(var i:Number=0;i<3;i++){                    cycleArr.push("TestLs"+i);                }                list2.dataProvider=cycleArr;                            }        ]]>    </fx:Script>    <fx:Declarations>        <!-- 将非可视元素(例如服务、值对象)放在此处 -->    </fx:Declarations>    <s:List x="114" y="87" id="list1" width="139" height="246"></s:List>    <s:List x="441" y="87" width="135" height="246" id="list2"></s:List>    <s:Button x="300" y="130" label="初始化" click="InitList"/>    <s:Button x="300" y="186" label="循环初始化" click="ForInitList"/>        </s:Application>



出错的部分是:
list1.dataProvider=srcArr;
list2.dataProvider=cycleArr;


搞不懂怎么回事,请大家看看。

[解决办法]
呵呵。看来我也要学习Flex4了。我Out了。不过我看了下文档。
发现List的提供者必须实现IList接口。

此 DataGroup 的数据提供程序。它必须为 IList。
在 Flex 框架中包含多个 IList 实现,包括 ArrayCollection、ArrayList 和 XMLListCollection。

所以,list1.dataProvider=srcArr;
改成list1.dataProvider=new ArrayCollection(srcArr);或者
list1.dataProvider=new ArrayList (srcArr);
应该就可以了
[解决办法]
写上面例子的人不太负责,有错误的。我给你用两种方式都写了个例子,你看看:
XML code
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"                xmlns:s="library://ns.adobe.com/flex/spark"                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" backgroundColor="#AC8A8A">    <s:layout>        <s:BasicLayout/>    </s:layout>    <fx:Script>        <![CDATA[            import mx.collections.ArrayCollection;            [Bindable]            private var listAry1:ArrayCollection = new ArrayCollection();            //初始化            internal function InitList():void{                listAry1.addItem("China Soft");                listAry1.addItem("BBBB");                listAry1.addItem("CCCC");                            }                        //循环初始化            internal function ForInitList():void{                var cycleArr:Array=new Array();                                for(var i:Number=0;i<3;i++){                    cycleArr.push("TestLs"+i);                }                list2.dataProvider=new ArrayCollection(cycleArr);                            }        ]]>    </fx:Script>    <fx:Declarations>        <!-- 将非可视元素(例如服务、值对象)放在此处 -->    </fx:Declarations>    <s:List x="114" y="87" id="list1" width="139" height="246" dataProvider="{listAry1}"></s:List>    <s:List x="441" y="87" width="135" height="246" id="list2"></s:List>    <s:Button x="300" y="130" label="初始化" click="InitList()"/>    <s:Button x="300" y="186" label="循环初始化" click="ForInitList()"/>        </s:Application> 

读书人网 >flex

热点推荐