Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 通过id[0]、id[1]、id[2]引用组件(可能通过使用中继器或数据组)_Arrays_Apache Flex_Flex4_Repeater - Fatal编程技术网

Arrays 通过id[0]、id[1]、id[2]引用组件(可能通过使用中继器或数据组)

Arrays 通过id[0]、id[1]、id[2]引用组件(可能通过使用中继器或数据组),arrays,apache-flex,flex4,repeater,Arrays,Apache Flex,Flex4,Repeater,我正在尝试将一个游戏从纯AS3移植到Flex4 首先,我希望对代码进行尽可能小的更改 因此,我有一个有3个用户化身的游戏场: <?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.co

我正在尝试将一个游戏从纯AS3移植到Flex4

首先,我希望对代码进行尽可能小的更改

因此,我有一个有3个用户化身的游戏场:

<?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" 
   xmlns:comps="*">

    <comps:User id="user0" x="20" y="20"/>
    <comps:User id="user1" x="250" y="20"/>
    <comps:User id="user2" x="125" y="250"/>

</s:Application>

它工作正常,但我有以下问题:

我希望通过用户[0]、用户[1]、用户[2]引用这些自定义组件

而不是像上面代码中那样由user0、user1、user2执行

如何做到这一点?我可能需要使用中继器或数据组(有什么区别),但如何处理不同的坐标

我应该引入坐标数组(或者ArrayCollection?或者ArrayList?这让我在Flex中感到困惑)并以某种方式使用它吗

更新:

我尝试了以下方法:

<?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" 
   xmlns:comps="*">

    <fx:Declarations> 
        <s:ArrayCollection id="myAC" source="{myDP}"/>
    </fx:Declarations> 

    <fx:Script>
        <![CDATA[
            [Bindable]
            public var myDP:Array = [ 
                { x: 20, y: 20 },
                { x: 250, y: 20 },
                { x: 120, y: 250 },
            ];
        ]]>
    </fx:Script>

    <mx:VBox>
        <mx:Repeater id="r" dataProvider="{myAC}">
            <comps:User id="user" x="{r.currentItem.x}" y="{r.currentItem.y}"/>
        </mx:Repeater>
    </mx:VBox>
</s:Application>

但是组件绘制在错误的位置(在垂直行中)

如何做到这一点

您应该创建用户元素的数组或ArrayCollection;在概念上类似于这样:

var user : Array = new Array();
// create user1
var user1 : userType = new userType();
// set properties on user1
// .....
user.push(user1);

// create user2
var user2 : userType = new userType();
// set properties on user2
// .....
user.push(user2);

// create user3
var user3 : userType = new userType();
// set properties on user3
// .....
user.push(user3);
您可以编写创建用户对象所需的任何逻辑。从概念上讲,这正是我使用Flextras日历创建日期的方法。根据显示的日历月,我们决定创建多少天,并创建它们并将它们存储在一个数组中。您可以使用任何逻辑创建适合您游戏的用户

I probably need to use Repeater or DataGroup (what's the difference), but how do I handle the differing coordinates?
中继器和数据组都不是阵列。它们不会为您创建数组或数据提供程序,也不允许您像访问数组一样访问元素

中继器基本上是MXML版本的环路,我认为应该不惜一切代价避免使用。MXML不是循环的好语言

数据组用于根据指定的数据(数据提供程序)及其布局类(垂直、水平或平铺)显示内容。听起来你想要一个定制的布局;因此,我不确定我是否建议使用数据组进行显示

Should I introduce an array (or ArrayCollection? or ArrayList? this confuses me in Flex) of coordinates and somehow use it?
是的,我会使用数组。ArrayCollection只是一个数组的包装器,它提供了过滤和排序数据的API。ArrayList只是一个实现IList接口的数组,因此它可以用作数据组或其他ListBase类(如DataGrid)的数据提供程序

你发布的代码不是我推荐的方法。如果您在ActionScript中这样做,您将对组件的定位和布局有更精确的控制。您可以通过阅读来了解UIComponents如何在屏幕上绘制自己;以及你如何能融入其中“让东西工作”。在这种情况下,“让东西工作”与你的定位有关

我正在尝试将一个游戏从纯AS3移植到Flex4


我知道你在文章的开头说了这句话,而不是在文章的结尾,但我想问一个问题:“为什么?”?“Flex不是为游戏而设计的;我不确定我会推荐把它作为一个游戏引擎。如果您想创建菜单或高分列表,我可以看到它对您有何好处。但是,您应该能够轻松地同时使用AS3代码和Flex代码,而不必重新编写/修改游戏。

var user:Array=[user0,user1,user2],还是我弄错了?不,我想通过数组引用屏幕上的3个组件:用户[0]、用户[1]、用户[2]嗯,VBox不使用x,y坐标。试试s:Group吧。事实上,你的建议很好!对不起,我一开始没意识到。请作为答案发布,我将accept@Alexander当我看到Flextras写的很长很好的文章时,我觉得这是不对的。事实上,他花时间写下了我所想的一切,但他太懒了,自己都懒得写。也许我的评论更直接地回答了你的问题,但我完全同意这不是正确的方法。在荷兰语中,我们会说使用Flex是“猪上的钳子”(nl:“een tang op een varken”)对不起,我应该提到我正在移植一个纸牌游戏(),所以Flex对我来说更好,因为我需要图表、表单和标准组件,如列表和Buttons@AlexanderFarber那么,这个答案对你有帮助吗?谢谢你的长篇大论,尽管RIAStar已经解决了我的问题:-)无论如何,祝你周末愉快