gpt4 book ai didi

flash - 将参数传递给事件监听器/处理程序

转载 作者:行者123 更新时间:2023-12-02 06:25:10 26 4
gpt4 key购买 nike

如何通过事件监听器传递参数/变量?我使用匿名函数相当有效地解决了这个问题;这是一个非常简单的解决方案,但最终,它听起来像是一个巨大的功能漏洞,我觉得无论如何都应该本地提供这些功能。

通常生活会继续下去,但命运就是如此,现在我实际上需要删除监听器,当您使用匿名函数时这样做有点奇怪。因此,我再次尝试找出如何将参数传递给事件监听器,以便只需引用该函数即可删除事件监听器。

尽管看起来很奇怪,我也解决了这个问题,但是,我不喜欢它并且厌倦了使用它。在我看来,这是代码味道。但它就像一个魅力。我将变量、对象或其他内容存储在调度 MovieClip 上。因此,如果我循环访问数据数组,动态生成缩略图,我只需将数据变量(通常是具有多个属性的对象)存储在实际缩略图 MovieClip 中。然后我可以通过引用访问事件监听器方法中的所有数据:

event.target.data
。在这个例子中,“data”是保存我想要的信息的变量的名称。因为当我不使用它时出现的另一个问题是,当我循环遍历数组并生成单击以查看大图像的缩略图时,索引不一致。在循环结束时,所有缩略图都将使用最后一个索引“i”打开图像。因此,如果我有一个长度为 12 的数组,那么无论您单击哪个缩略图,它们都会加载第 12 个图像。将数据存储到 MovieClip 本身中,创建一个永不更改的可靠引用。

这个问题已经困扰我一段时间了。基本上我想知道的是,这是好的做法吗?有更好的解决方案吗?

以下是一些饮食示例。如果需要的话我可以发布更详细的例子。所有示例都描绘了单击时加载大图像的缩略图。




不使用匿名函数(问题):

tempThumb.addEventListener(MouseEvent.CLICK, loadImage);public function loadImage(_event:MouseEvent):void  {    // I don't have the variable _url and preparing a hot bath with a cold blade  }

使用匿名函数:

tempThumb.addEventListener(MouseEvent.CLICK, function(_event:MouseEvent) { loadImage("large.jpg"); } );public function loadImage(_url:String):void  {    // I got the variable _url and packing away the razor blades  }

不使用匿名函数,而是使用我的臭妖精技术将数据存储到调度事件的 MovieClip 中

tempThumb.data = "large.jpg";tempThumb.addEventListener(MouseEvent.CLICK, loadImage);public function loadImage(_event:MouseEvent):void  {    trace(event.target.data);    // I can access the variable  }

我不太了解编程术语,所以我将上面的方法称为妖精技术。在对象中存储/隐藏变量以供以后使用/访问。它解决了我所有的问题并且效果非常好。但是,如果有更好的方法来做到这一点,我想知道那样

最佳答案

是的,我知道你的意思。我所做的是扩展事件并调度自定义事件。这样我就可以在自定义事件中创建包含必要数据的属性。看起来很干净,但确实需要一些努力。这并不理想,但我不知道有更好的方法。

关于flash - 将参数传递给事件监听器/处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com