AS3根据另一个对象的位置使对象可见/不可见

时间:2016-11-06 15:37:55

标签: actionscript-3 flash tween

我正在建立一个网站,其中的图库使用AS3补间从左向右滑动,停在特定的x坐标处以显示特定项目。

当达到坐标时,我想让有关该项目的信息可见。

我写了这篇文章但我不明白为什么它不起作用。当我预览时,Info1动画片段不会出现。

if (GalleryPanel.x==4715.45)
{
    Info1.visible=true;
}
else
{
    Info1.visible=false;
}

这是移动图库的代码:

var tweenitem1:Tween = new Tween(GalleryPanel, "x", Strong.easeOut, GalleryPanel.x, 4715.45, 1, true);

目前,Info 1只是我在时间轴上放置的一个moviclip来测试我的代码。 Info 1符号属性设置为不可见;当它设置为可见时,它会在GalleryPanel翻译时保持可见。

2 个答案:

答案 0 :(得分:1)

尝试

if (GalleryPanel.x > 4715 && GalleryPanel.x < 4716)
{
    Info1.visible=true;
}

使用小数位来检查相等是很冒险的。

答案 1 :(得分:1)

您的代码无法正常工作,因为它在开头执行一次(且只执行一次)。它不会持续监控变量。

但无论如何,这样做会是一个坏主意。您必须不断浪费资源来检查此变量(如果您想要添加更多目的地,则会变得更糟)。

  

当达到坐标时,我想让有关该项目的信息可见。

补间完成时达到坐标。要识别它,只需为TweenEvent.MOTION_FINISH添加一个监听器。

之类的东西
import fl.transitions.TweenEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;

var tweenitem1:Tween = new Tween(GalleryPanel, "x", Strong.easeOut, GalleryPanel.x, 4715.45, 1, true);

tweenitem1.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish);

function onMotionFinish(te:TweenEvent):void
{
    Info1.visible = true;
}

当下一个补间开始时,要转换到应用程序的其他状态,您应该再次隐藏Info1