【问题标题】:when ever i click the menu the event listen from uiloader and text field.I would like to remove event listener每当我单击菜单时,都会从 uiloader 和文本字段中侦听事件。我想删除事件侦听器
【发布时间】:2011-12-11 13:54:28
【问题描述】:
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 画廊。有很多图像

【问题讨论】:

  • 你好,阿基尔。该网站旨在作为人们的资源,这就是它具有问答格式的原因。这是一个糟糕的问题,因为它不问任何问题(没有问题!),而是用大量代码淹没页面。如果有人真的费心阅读所有代码,您可能会以这种方式修复代码,但它肯定不会帮助其他任何人。请考虑重写它以使其更精确,对其他人更有帮助。

标签: flash actionscript-3 actionscript-2


【解决方案1】:

你要求的是能够:

  1. 通过添加事件监听器来监听在实例上调度的事件,并且
  2. 从点击的目标中移除该事件监听器

您可以通过使用“currentTarget”来获得对点击目标的引用,该引用引用被点击的实例(而不是被点击的特定元素,即“target”)。

您可以通过调用the "removeEventListener" method 来移除事件监听器,该the "removeEventListener" method 将事件类型和要移除的事件方法作为参数。

对于您的情况,以下是解决问题的方法:

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

【讨论】:

  • 一堆没有解释的代码并不是一个好的答案。由于这是一个糟糕的问题,因此缺少解释对许多人来说可能并不重要。但无论如何,您应该考虑添加一个。
  • 感谢您的反馈。我更详细地介绍了。
  • 你已经为此获得了 +1 :)
猜你喜欢
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多