在itemrenderer中使用自定义类时出错

时间:2014-02-20 08:18:51

标签: flex

我创建了一个Event Class的子类。我在itemrenderer中使用了子类,没有观察到错误。但是,一旦我将itemrenderer声明为Main应用程序中的List,就会在itemrenderer中出现错误,声称“找不到类型或者不是编译时常量:CustomDeleteEvent”和“参数数量不正确:预期不超过1”< / p>

请给我一些建议。提前谢谢。

在子类中:

package widgets.GetMap
{

    import flash.events.Event;

    public class CustomDeleteEvent extends Event
    {
        public static const DELETE_ITEM:String = "DELETE_ITEM";
        public var deletedItem:String;

        public function CustomDeleteEvent(type:String, deletedItem:String)
        {
            super(type);
            this.deletedItem = deletedItem;
        }
    }
}

在ItemRenderer中:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer name="CustomItemRen"
                xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="true"
                minHeight="24">
    <s:states>
        <s:State name="normal" />
        <s:State name="hovered" />
        <s:State name="selected" />
    </s:states>

        <fx:Script>
            <![CDATA[
                import mx.controls.Alert;
            import mx.events.CloseEvent;

            import spark.components.List;

            protected function deleteHandler():void 
            {
                var deleteItem:String = itemIndex.toString();
                var tryevent:CustomDeleteEvent;
                owner.dispatchEvent(tryevent,deleteItem);
                Object(owner).dataProvider.removeItemAt(itemIndex);

            }
        ]]>
    </fx:Script>

    <s:HGroup width="100%" height="100%"
              verticalAlign="middle"
              paddingLeft="2" paddingRight="2"
              paddingTop="2" paddingBottom="2">
        <s:Label id="lbl" text="{data.toString()}" width="100%" color="#30FF00"/>
        <s:Button id="btn" includeIn="hovered,selected" y="-16" width="35"             height="22" label="X"
                  accentColor="#FFFFFF" color="#FF0000" fontFamily="Verdana" fontSize="12"
                  fontWeight="bold" mouseDown="deleteHandler();" toolTip="Delete item"/>
    </s:HGroup>

</s:ItemRenderer>

在主要申请中:

<s:Application name="Spark_List_itemRenderer_hovered_test"
               xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Style source="test.css"/>

    <s:List id="lst"
            itemRenderer="CustomItemRen"
            width="300"
            horizontalCenter="0" verticalCenter="0">
        <s:layout>
            <s:VerticalLayout gap="0"
           horizontalAlign="justify"
           requestedRowCount="8" />
        </s:layout>
        <s:dataProvider>
            <s:ArrayList>
                <fx:Object label="Application" />
                <fx:Object label="Label" />
                <fx:Object label="List" />
            </s:ArrayList>
        </s:dataProvider>
    </s:List>   
</s:Application>

1 个答案:

答案 0 :(得分:0)

在这一行中,你没有初始化事件对象(“t​​ryEvent”就像新的CustomDeleteEvent())..

以及你的“CustomDeleteEvent”..还有“type”参数,它不在“tryEvent”对象中......

var tryevent:CustomDeleteEvent; owner.dispatchEvent(tryevent,deleteItem);

使用以下代码发送活动....

owner.dispatchEvent(new CustomDeleteEvent(CustomDeleteEvent.DELETE_ITEM,deleteItem));

希望这会对你有帮助....