包含AIR的不可拖动按钮的可拖动菜单

时间:2013-11-13 23:42:59

标签: actionscript-3 menu scroll drag flash-cs6

首先,对于Flash和AS3,我是个新手。

我正在尝试创建一个包含12个移动应用按钮的displayObject。由于有十二个按钮将全部打开成单独的菜单,因此它们显然都不适合移动设备屏幕。这就是为什么我想让一个显示对象上的所有按钮可以上下拖动以显示当前未在屏幕上显示的按钮。

尝试此操作时遇到了很多问题。 1)如果我使包含按钮的对象可拖动(位于按钮后面),我无法通过按钮单击它以拖动它(除非我找到没有任何按钮的最佳位置,但这不是'对用户有效。)

2)如果我使包含按钮的对象可拖动并将其放在按钮前面,那么我无法单击按钮以打开菜单并访问其中包含的内容。

3)由于某些原因,当我不想要它们时,所有按钮都可以单独拖动。例如,我点击屏幕上的任意位置(无论touchID点是否在按钮上)都可以移动整个按钮列表,如果我碰巧点击了一个按钮,那么它会移动整个列表,而不是移动整个列表。按钮。

所以这里的主要问题是“我如何创建一个按钮列表并使用拖动方法滚动列表(例如手机上的设置菜单),而不会将按钮彼此分开拖动。”因此,包含的显示对象是可拖动的,按钮是可点击的。

有些名叫格伦的人在他的榜样上做得很好:http://rabidgadfly.com/2010/03/as3-clickable-button-inside-a-draggable-movie-clip/

但是,如果单击其示例中的黄色按钮,则可以将其拖出灰色框。我希望我的按钮相对于灰色框保持静止。所以你可以移动灰色框,但是黄色按钮保持在框内的相同位置,但你不能在框内拖动按钮。

1 个答案:

答案 0 :(得分:0)

我不熟悉智能手机的加速度计事件,但我确实知道如何使用常规的actionscript 3监听器解决这个问题。 (您可以将这些转换为智能手机听众使用的任何内容)

想到的解决方案是在整个可拖动框上放置一个鼠标按下监听器和一个鼠标向上监听器。当一个鼠标按下事件触发时,你会启动一个计时器在大约四分之一秒内完成,当你这样做时,你会设置一个输入帧(或基于计时器)功能,它会触发每一帧。这将更新整个框的位置,每个框对应当前鼠标位置(拖动框效果),当鼠标向上侦听器触发时,它会停止拖动(此时,如果鼠标已启动,则用户不会完全触摸屏幕)。

还为每个按钮添加鼠标单击侦听器。这样,使用四分之一秒的计时器,你知道如果用户只是想点击一个按钮,那么他们就会点击,在鼠标按下和鼠标按下事件之间留下不到四分之一秒(这样拖动永不开始)只按下按钮。如果用户按住鼠标超过四分之一秒,那么你就知道他们必须试图拖动整个鼠标。

这种接缝就像是区分想要拖动框的用户和想要单击其中的按钮的用户的唯一方法。

显然它不一定是四分之一秒,它可以是你想要的任何时间长度,甚至可能没有时间,但是当人们只想点击按钮并在点击时意外滑动。

如果您有任何问题或疑问,请发表评论,我会尽力提供帮助。