我有一个MovieClip
对象,我的Flash时间轴上有一个Button
按钮。
点击按钮时,我想将object.visible
设置为true,然后当未点按该按钮时,我想将其设置为false。
我该怎么做?
我已经尝试过这段代码,但它无法正常运行。我只能展示对象但不能隐藏它。
button1.addEventListener(TouchEvent.TOUCH_TAP, touchTap);
function touchTap(e:TouchEvent): void {
mcObj.visible = true;
stage.addEventListener(TouchEvent.TOUCH_END, touchEnd);
}
function touchEnd(e:TouchEvent): void {
mcObj.visible = false;
stage.removeEventListener(TouchEvent.TOUCH_END, touchEnd);
}
答案 0 :(得分:2)
我认为这段代码可行。
button1.addEventListener(TouchEvent.TOUCH_BEGIN, touchTap);
function touchTap(e:TouchEvent): void {
mcObj.visible = true;
button1.addEventListener(TouchEvent.TOUCH_END, touchEnd);
}
function touchEnd(e:TouchEvent): void {
mcObj.visible = false;
button1.removeEventListener(TouchEvent.TOUCH_END, touchEnd);
}
我改变了
1:TouchEvent.TOUCH_TAP
到TouchEvent.TOUCH_BEGIN
stage.addEventListener
到button1.addEventListener
答案 1 :(得分:1)
在说出您的问题之前,让我们先了解TouchEvent.TOUCH_BEGIN
,TouchEvent.TOUCH_END
和TouchEvent.TOUCH_TAP
事件的定义:
在用户首次联系启用触摸的设备 ...
时调度
当用户移除与启用触摸的设备的联系 ...
时调度
当用户通过在启用触摸的设备上启动联系人的同一InteractiveObject实例上提升联系人时调度 ...
通过一些测试,我们可以看到TouchEvent.TOUCH_END
事件在几乎情况下会在<{strong> TouchEvent.TOUCH_TAP
之前<强>>(1或2毫秒),因此我们可以理解,我们能够检测用户是否已经删除了与设备的联系(TouchEvent.TOUCH_END
被触发)然后,如果它位于同一个InteractiveObject
对象上联系已启动(TouchEvent.TOUCH_TAP
已触发)。
这就是你的代码无效的原因。
现在,让我们看看你的问题:当你的用户点击一个按钮时,你想要显示一个MovieClip,并在他释放该按钮时隐藏它,但只是很短的时间(点击的时间〜= 300毫秒)。
在这种情况下,我建议您使用带有超时的TouchEvent.TOUCH_BEGIN
事件监听器来隐藏该对象,即使您的用户没有释放该按钮。
为此,请举例:
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
btn.addEventListener(TouchEvent.TOUCH_BEGIN, on_touchBegin);
function on_touchBegin(e:TouchEvent): void
{
obj.visible = true;
hide_obj();
}
function hide_obj(): void
{
// you can use a Timer object instead of setTimeout()
var timeout:int = setTimeout(function(){
clearTimeout(timeout);
obj.visible = false;
}, 300);
}
希望可以提供帮助。