我正在Flash CS5.5中创建一款游戏,基本上是“谁想成为百万富翁?”的版本。
我有一个answerDisplay类,其中包含一个答案文本。答案文本可能会变得很长,因为我的屏幕空间有限,所以我检查了很长的文本,如果文本太大,我会在文本字段之外添加一个UIScrollbar。
除了一件事之外,哪个很好用 - 当用户拖动滚动标签时,文字滚动得很好。当用户单击其中一个滚动条箭头时,只要单击该按钮,文本字段也会滚动正常,但只要释放鼠标按钮,就会触发包含answerDisplay类的click事件,这会导致我的程序错误认为用户在尝试滚动时选择了答案。
我尝试通过e.target和/或e.currenttarget捕获这个,但它没用,我从来没有得到滚动条的引用,所以我不确定用户是否点击了其中一个箭头或者他是否真的点击答案选择它。
如何确保在使用UIScrollbar时不会触发answerDisplay Class的click事件?
答案 0 :(得分:1)
检查e.target
和e.currentTarget
是一个好的开始。
您可能还想查看事件阶段:
有关活动阶段的更多详情,请查看grapefrukt's answer
来自answerDisplay Class dispatched事件的单击应具有AT_TARGET阶段,而UIScrollbar事件应具有BUBBLING_PHASE
。这可以帮助您区分这两者。
此外,您可以将事件侦听器添加到answerDisplay类中的UIScrollbar以捕获事件,然后通过stopPropagation()禁止它。
根据UIScrollbar内部如何使用事件气泡,您可以尝试stopPropagation(),stopImmediatePropagation()。目标是阻止事件从answerDisplay冒泡,但不会破坏UIScrollbar功能。