在自动降至某个深度后,使影片剪辑恢复

时间:2014-02-28 13:57:37

标签: actionscript-3 flash actionscript flash-cs5 flash-cs4

嗨,请看一下代码。当我按下键盘时,物体会熄灭但是我想要的是当它达到一定深度时它应该回来..任何帮助将不胜感激,谢谢

//rope coding
var rope = MovieClip(this.root).boat_mc.rope_mc;
var ropeMove:Boolean = false;

    stage.addEventListener(Event.ENTER_FRAME, ropeCode);
    stage.addEventListener(KeyboardEvent.KEY_UP, onSpacebarUp);

    function onSpacebarUp(e:KeyboardEvent):void
    {
        if (e.keyCode == Keyboard.SPACE)
            ropeMove = !ropeMove; // toggles ropeMove (i.e. if it's true, sets it to false, and vice versa)
    }

    function ropeCode(e:Event):void
    {
        //check direction of rope
        if(yDirection) 
        {
          rope.y += ropeSpeed;
        }
        else
        {
          rope.y -= ropeSpeed;
        }


        // move the rope
        if( ropeMove )
        {
            if( rope.y < 230) 
            {
                yDirection = true;
                trace(rope.y);
            }
            // stop moving if we've gone too far
            else if (rope.y > 230) 
            {
                yDirection = false;
            }
        }



    }

1 个答案:

答案 0 :(得分:0)

你有2个支票,如

if( rope.y < 230)

if( rope.y > 230)

我认为你的动画在y为230时会卡住 所以让其中一个像

那样测试平等
if( rope.y < =230)

或添加第三个案例

else if(y==230)

编辑: 添加一个名为yDirection的新变量/字段

var yDirection:Boolean=true;

当你想改变方向时,请翻转这个标志

if( rope.y <=0)
  yDirection=true;
else 
  yDirection=false;

if(yDirection)
  rope.y=+=speed;
else
  rope.y-=speed;

EDIT2 嗨在之前的编辑中有一个错误,用你需要的值(minY值)替换rope.y&lt; = 0

EDIT3 解决方案很简单,您必须检查ropeMove值,

if(ropeMove){

    if( rope.y <=0)
      yDirection=true;
    else 
      yDirection=false;

    if(yDirection)
      rope.y=+=speed;
    else
      rope.y-=speed;
} 

您的问题非常基础,因此您应该学习算法的基础知识,