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
Actionscript 3 在此itemrenderer中使用“删除”按钮创建dropdownlist_Actionscript 3_Apache Flex_Air_Flash Builder - Fatal编程技术网

Actionscript 3 在此itemrenderer中使用“删除”按钮创建dropdownlist

Actionscript 3 在此itemrenderer中使用“删除”按钮创建dropdownlist,actionscript-3,apache-flex,air,flash-builder,Actionscript 3,Apache Flex,Air,Flash Builder,我使用Flex4.5,我喜欢创建一个自定义的dropdownlist。事实上,我想在我的下拉列表的每一行显示一个标签和一个删除按钮。 目标是在单击删除按钮时删除该行。 这看起来很简单,但我不知道怎么做 感谢您的帮助,对于这一点,您必须跳过一些障碍,因为DropDownList可以阻止任何MouseeEvent。从ItemRenderer内的对象中单击 第一件事:您需要一个自定义事件才能使其工作。携带物品或至少其索引的物品。e、 g: public class ItemEvent extends

我使用Flex4.5,我喜欢创建一个自定义的dropdownlist。事实上,我想在我的下拉列表的每一行显示一个标签和一个删除按钮。 目标是在单击删除按钮时删除该行。 这看起来很简单,但我不知道怎么做


感谢您的帮助,对于这一点,您必须跳过一些障碍,因为DropDownList可以阻止任何
MouseeEvent。从ItemRenderer内的对象中单击

第一件事:您需要一个自定义事件才能使其工作。携带物品或至少其索引的物品。e、 g:

public class ItemEvent extends Event {
    public static const REMOVE:String = "itemRemove";

    public var item:MyClass;

    public function ItemEvent(type:String, item:MyClass, 
                              bubbles:Boolean=false, 
                              cancelable:Boolean=false) {
        super(type, bubbles, cancelable);
        this.item = item;
    }

    override public function clone():Event {
        return new ItemEvent(type, item, bubbles, cancelable);
    }

}
然后创建一个带有“删除”按钮的自定义ItemRenderer,该按钮将分派此事件

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[
            private function remove():void {
                owner.dispatchEvent(
                    new ItemEvent(ItemEvent.REMOVE, data as MyClass)
                );
            }
        ]]>
    </fx:Script>

    <s:Label id="labelDisplay" verticalCenter="0" left="10" />

    <s:Button verticalCenter="0" right="10" width="16" height="16"
              mouseDown="remove()" />

</s:ItemRenderer>
下面是如何侦听该自定义事件并删除所选项目:

myDropDownList.addEventListener(ItemEvent.REMOVE, removeSelectedItem);

private function removeSelectedItem(event:ItemEvent):void {
    var items:IList = myDropDownList.dataProvider;
    var index:int = items.getItemIndex(event.item);
    items.removeItemAt(index);
}

因为我们没有单击myDropDownList,而是按下了鼠标。selectedIndex
属性仍将位于以前选择的项目(如果没有选择,则为-1)。这就是我们需要自定义事件的原因,因为没有其他方法可以知道您要删除哪个项目。

对于此项目,您必须跳过一些限制,因为DropDownList可以防止触发任何
MouseeEvent。从ItemRenderer内的对象单击

第一件事:您需要一个自定义事件才能使其工作。携带物品或至少其索引的物品。e、 g:

public class ItemEvent extends Event {
    public static const REMOVE:String = "itemRemove";

    public var item:MyClass;

    public function ItemEvent(type:String, item:MyClass, 
                              bubbles:Boolean=false, 
                              cancelable:Boolean=false) {
        super(type, bubbles, cancelable);
        this.item = item;
    }

    override public function clone():Event {
        return new ItemEvent(type, item, bubbles, cancelable);
    }

}
然后创建一个带有“删除”按钮的自定义ItemRenderer,该按钮将分派此事件

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[
            private function remove():void {
                owner.dispatchEvent(
                    new ItemEvent(ItemEvent.REMOVE, data as MyClass)
                );
            }
        ]]>
    </fx:Script>

    <s:Label id="labelDisplay" verticalCenter="0" left="10" />

    <s:Button verticalCenter="0" right="10" width="16" height="16"
              mouseDown="remove()" />

</s:ItemRenderer>
下面是如何侦听该自定义事件并删除所选项目:

myDropDownList.addEventListener(ItemEvent.REMOVE, removeSelectedItem);

private function removeSelectedItem(event:ItemEvent):void {
    var items:IList = myDropDownList.dataProvider;
    var index:int = items.getItemIndex(event.item);
    items.removeItemAt(index);
}

因为我们没有单击myDropDownList,而是按下了鼠标。selectedIndex
属性仍将位于以前选择的项目(如果没有选择,则为-1)。这就是我们需要自定义事件的原因,因为没有其他方法知道要删除哪个项目。

创建一个itemRenderer以在下拉列表中显示delete按钮和标签。然后单击按钮时,弹出一个事件,您可以使用该事件从数据提供程序中删除该项。谢谢您的回答。但你能给我一个代码样本来做吗?Thanks@www.Flextras.com不起作用:DropDownList阻止按钮的点击触发。然而,鼠标下移并没有被阻止。但是列表的selectedIndex尚未设置。请创建一个itemRenderer以在下拉列表中显示delete按钮和标签。然后单击按钮时,弹出一个事件,您可以使用该事件从数据提供程序中删除该项。谢谢您的回答。但你能给我一个代码样本来做吗?Thanks@www.Flextras.com不起作用:DropDownList阻止按钮的点击触发。然而,鼠标下移并没有被阻止。但是列表的selectedIndex还没有设置。谢谢你的回答,我会测试它。谢谢你的回答,我会测试它