0

我正在用 Flash CS5.5 创建一个游戏,基本上是“谁想成为百万富翁?”的一个版本。

我有一个 answerDisplay 类,其中包含一个答案文本。答案文本可能会变得相当长,由于屏幕空间有限,我会检查很长的文本,如果文本太大,我会在文本字段之外添加 UIScrollbar。

效果很好,除了一件事 - 当用户拖动滚动选项卡时,文本滚动正常。当用户单击其中一个滚动条箭头时,只要单击按钮,文本字段也可以正常滚动,但是一旦释放鼠标按钮,就会触发包含 answerDisplay 类的单击事件,这会导致我的程序错误认为用户在尝试滚动时选择了答案。

我尝试通过 e.target 和/或 e.currenttarget 捕获它,但这没有用,我从来没有得到滚动条的引用,所以我不确定用户是否点击了其中一个箭头,或者他是否真的点击了答案选择它。

如何确保在使用 UIScrollbar 时不会触发我的 answerDisplay 类的单击事件?

4

1 回答 1

1

检查是一个好的开始e.targete.currentTarget

您可能还想检查事件阶段

事件冒泡

有关事件阶段的更多详细信息,请查看grapefrukt 的答案

来自 answerDisplay 类调度事件的点击应该有 AT_TARGET 阶段,而 UIScrollbar 事件应该有BUBBLING_PHASE. 这应该可以帮助您区分两者。此外,您可以将事件侦听器添加到 answerDisplay 类中的 UIScrollbar 以捕获事件,然后通过stopPropagation()抑制它。

根据 UIScrollbar 如何在内部使用事件气泡,您可以尝试 stopPropagation() 或 stopImmediatePropagation()。目标是阻止事件从 answerDisplay 冒泡,但不破坏 UIScrollbar 功能。

于 2012-06-17T13:28:09.127 回答