всякий раз, когда я нажимаю на меню, прослушивание события из uiloader и текстового поля. Я хотел бы удалить слушатель события - PullRequest
0 голосов
/ 11 декабря 2011
package com
{


    public class gallery_folio extends MovieClip
    {
        var image_xml:XML;
        var xml_loader:URLLoader;
        public var text_style:TextFormat = new TextFormat("Verdana",10,0x333333,"",null,null,null,null,"left");
        public var _style:TextFormat = new TextFormat("Verdana",11,0x333333,"",null,null,null,null,"left");

        public function gallery_folio()
        {
            xml_loader = new URLLoader(new URLRequest("xml/gallery_folio.xml"));
            xml_loader.addEventListener(Event.COMPLETE,xml_loaded);
        }
        public function xml_loaded(e:Event):void
        {
            image_xml = new XML(e.target.data);
            var menu_mc:MovieClip;
            var menu_uldr:UILoader;
            var label_:TextField;
            for (var i=0; i<image_xml.children().length(); i++)
            {
                menu_mc=new MovieClip();
                menu_mc.graphics.beginFill(0xffffff,1);
                menu_mc.graphics.lineStyle(0.25,0xcccccc);
                menu_mc.graphics.drawRect(0,0,100,70);
                menu_mc.graphics.endFill();
                addChild(menu_mc);
                menu_uldr=new UILoader();
                menu_uldr.source = image_xml.children()[i]. @ img;
                menu_uldr.width = 100;
                menu_uldr.height = 70;

                menu_mc.addChild(menu_uldr);
                menu_mc.y = stage.stageHeight / 15;
                menu_mc.x = 10 + 120 * i;
                menu_mc.buttonMode = true;
                menu_mc.name = image_xml.children()[i]. @ name;
                menu_mc.addEventListener(MouseEvent.CLICK,onclick_menu);

                label_=new TextField();
                label_.text = image_xml.children()[i]. @ name;
                menu_mc.addChild(label_);
                label_.selectable = false;
                label_.setTextFormat(text_style);


            }

        }
        public function onclick_menu(e:MouseEvent):void
        {
            trace(e.target.name);
        }

    }

}

вывод основан на xml, который структурирует данные.

    <item img="img/img_1.jpg" name="websites">


        <subitem name="m1">
        <image></image>
        <link>http://dasmenonphotography.com</link>
        <description></description>
        </subitem>

        <subitem name="-n-">
        <image></image>
        <link>http://auctussolutions.com</link>
        <description></description>
        </subitem>
    </item>

    <item img="img/img_2.jpg" name="paintings">


        <subitem name="-n-">
        <image></image>
        <link>http://dasmenonphotography.com</link>
        <description></description>
        </subitem>

        <subitem name="-n-">
        <image></image>
        <link>http://auctussolutions.com</link>
        <description></description>
        </subitem>

    </item>

    <item img="img/img_3.jpg" name="paintings">


        <subitem name="-n-">
        <image></image>
        <link>http://dasmenonphotography.com</link>
        <description></description>
        </subitem>

        <subitem name="-n-">
        <image></image>
        <link>http://auctussolutions.com</link>
        <description></description>
        </subitem>

    </item>
</showcase>

при каждом нажатии меню. Прослушивание события из uiloader и текстового поля. Я хочу удалить прослушиватель событияна самом деле я хочу создать галерею XML. с большим количеством изображений

1 Ответ

1 голос
/ 11 декабря 2011

То, что вы спрашиваете, это уметь:

  1. прослушивание события, отправленного экземпляру, путем добавления обработчика событий и
  2. удалить этот список событий из выбранной цели

Вы можете получить ссылку на выбранную цель, используя «currentTarget», которая ссылается на выбранный экземпляр (а не на конкретный элемент, по которому щелкнули, который будет «целью»).

Вы можете удалить обработчик событий, вызвав метод "removeEventListener" , который принимает в качестве аргумента тип события и метод события, который необходимо удалить.

Для вашего случая вот что решит проблему:

   public function onclick_menu(e:MouseEvent):void
   {
        e.currentTarget.removeEventListener(MouseEvent.CLICK, onclick_menu);
   }
...