Apache flex 如何在flex HGroup中选择对象?

Apache flex 如何在flex HGroup中选择对象?,apache-flex,containers,Apache Flex,Containers,我有一个按钮,可以在每次单击时创建一个图像对象,并将该图像对象添加到Hgroup中。Hgroup可以包含几个图像对象。和另一个按钮来旋转对象 我想做的是: 可以选择一个对象 因此,每次单击“旋转”按钮时,选定对象可以围绕一个点旋转90度 还希望限制容器/组中添加的项目数。(必须有边框) 哪一个是我可以用于上述目的的最佳容器(列表、边框容器、Hgroup) 目前我的代码可以做什么: 1.在每次单击按钮时将图像对象添加到HGroup 2.我只能旋转H组中的第一项 我对flex很陌生。我不知道该怎么做

我有一个按钮,可以在每次单击时创建一个图像对象,并将该图像对象添加到Hgroup中。Hgroup可以包含几个图像对象。和另一个按钮来旋转对象

我想做的是:

  • 可以选择一个对象
  • 因此,每次单击“旋转”按钮时,选定对象可以围绕一个点旋转90度
  • 还希望限制容器/组中添加的项目数。(必须有边框)
  • 哪一个是我可以用于上述目的的最佳容器(列表、边框容器、Hgroup) 目前我的代码可以做什么: 1.在每次单击按钮时将图像对象添加到HGroup 2.我只能旋转H组中的第一项

    我对flex很陌生。我不知道该怎么做。请有人帮我举个例子。你可以运行我的代码来了解我要做什么

    请帮帮我。。 谢谢:)

    这是我目前拥有的全部代码(如果您愿意,可以在您的计算机上运行):


    下面是一个示例,说明如何使用列表组件实现这一点。
    首先创建一个模型对象,它将成为图像状态的表示模型

    public class MyImage {
    
        [Bindable]
        public var source:Class;
    
        [Bindable]
        public var rotation:Number = 0;
    
    }
    
    现在使用自定义ItemRenderer创建列表。请注意,我使用了列表而不是数据组(正如我在评论中所建议的),因为您需要知道选择了哪个项目

    <s:List id="imageList" dataProvider="{dp}" 
            x="216" y="53" width="319" height="367">
    
        <s:itemRenderer>
            <fx:Component>
                <s:ItemRenderer width="20" height="20">
                    <s:Image source="{data.source}" rotation="{data.rotation}"
                             horizontalCenter="0" verticalCenter="0" 
                             scaleX=".5" scaleY=".5"/>
                </s:ItemRenderer>
            </fx:Component>
        </s:itemRenderer>
    
        <s:layout>
            <s:HorizontalLayout/>
        </s:layout>
    </s:List>
    
    <s:Button x="23" y="324" label="Add Image Object" click="addImage()"/>
    <s:Button x="149" y="324" label="Rotate" click="rotateImage()"/>
    
    并在单击按钮时添加一些项目:

    [Embed(source='assets/CalendarIcon.png')] var myImg1:Class;
    
    private function addImage():void {
        var image:MyImage = new MyImage();
        image.source = myImg1;
        dp.addItem(image);
    }
    
    该列表将自动创建一个新的ItemRenderer,以在dataProvider中反映此新项目

    现在,单击第二个按钮旋转它:

    private function rotateImage():void {
        if (imageList.selectedItem) imageList.selectedItem.rotation += 90;
    }
    

    更新所选
    MyImage
    实例的
    rotation
    。绑定将完成其余的工作,并在ItemRenderer中旋转实际的
    图像。

    我将使用带有水平布局和自定义ItemRenderer的数据组(或列表)来显示图像,而不是将图像动态添加到HGroup。从那以后,你只需要操纵数据。嗨。。我想试试你说的话。但是,当涉及到重写项目呈现中某些必要的方法时,我总是不知所措。例如,我最近使用(面板作为我的自定义工具提示)做了一个自定义工具提示,我需要实现ItoolTip并重写一些方法,如getText和setText。那么,我必须重写任何方法,让这个自定义ItemRenderer也显示图像吗???虽然我在AdobeHelp中读了很多关于项目呈现的文章。我似乎仍然不明白这个概念,也不知道如何使用项目渲染器。你能解释一下吗?哇!我不知道可以将旋转属性绑定到图像。你的解决方案太棒了!再加上用一个物体来操纵,这正是我想要的。我会马上试试,让你知道!非常感谢你,先生!这个解决方案非常有效!这也给了我一个关于如何使用对象模型的想法。再次感谢你们。
    [Embed(source='assets/CalendarIcon.png')] var myImg1:Class;
    
    private function addImage():void {
        var image:MyImage = new MyImage();
        image.source = myImg1;
        dp.addItem(image);
    }
    
    private function rotateImage():void {
        if (imageList.selectedItem) imageList.selectedItem.rotation += 90;
    }