【问题标题】:AS3 - SimpleButton inside of a SpriteAS3 - Sprite 内的 SimpleButton
【发布时间】:2012-02-17 23:45:12
【问题描述】:

我有一个精灵菜单,我正在添加一个按钮来最小化菜单。我正在使用SimpleButton() 并将按钮添加为菜单的子项,因此menu.addChild(button) 我遇到的问题是,当我将鼠标悬停并单击按钮时,没有任何事件被触发。菜单精灵有自己的鼠标悬停事件,并且按钮应该相对于菜单放置,因此成为菜单的子级是有意义的。如何使按钮仍然有效?

提前致谢!

编辑
这是我的代码:

protected const rectangle:Sprite = new Sprite(); 
private const minimizeBtn:SimpleButton = new SimpleButton(new ButtonDisplayState(MINIMIZE_BTN_BG_COLOR, 15, 15), new ButtonDisplayState(0xFF0000, 15, 15), new ButtonDisplayState(0x00FF00, 15, 15), new ButtonDisplayState(0x0FF000, 15, 15)); 
rectangle.addEventListener(MouseEvent.MOUSE_OVER, rectMouseOver);
addChild(rectangle);
rectangle.addChild(minimizeBtn);

【问题讨论】:

  • 哪些事件不会被触发:菜单或按钮的事件?单击、鼠标悬停或两者兼而有之?
  • 按钮。 Click 和 mouseOver 都没有触发。
  • 你能把代码贴在你添加监听器的地方吗?
  • 当然,我会发布一个精简版
  • 您可以编辑您的问题以添加代码:)

标签: actionscript-3 sprite simplebutton


【解决方案1】:

父精灵(菜单)可能正在吃鼠标事件。尝试在该对象上设置 mouseChildren = true。

【讨论】:

  • mouseChildren 默认为 true,我不认为他改变了这一点。
  • 如果我让按钮成为舞台的子元素而不是菜单,然后使用绝对坐标将按钮放在同一个位置,它就可以工作。一定有办法让它作为菜单精灵的子项工作吗?
【解决方案2】:

首先,你为什么要将按钮定义为 const?将它定义为一个非常愚蠢的变量,除非你有一个非常好的理由。其次,将您的事件侦听器直接添加到 minimizeBtn,而不是矩形容器(父对象)。

还要注意,虽然文档说按钮的四种状态在构造函数中是可选的,但它们实际上根本不是可选的。该类对构造函数参数非常具体,这将导致类在运行时中断并且无法正常运行(当然没有编译或运行时错误,因为闪存是其中的佼佼者)。

因此,尽管您在这里提供了所有四个构造函数参数,但如果我之前的建议失败,它可能需要修改。有关构造函数的更多 NFO,请参阅以下链接。

http://selfdocumentingcode.blogspot.com/2009/04/flash-simplebutton-and-mouseover-and.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多