如何缩放一个对象,当它等于0时,它将进入下一帧? AS3

时间:2014-02-26 15:39:00

标签: actionscript-3 flash function scaling next

好的,我已经为爱丽丝梦游仙境的场景制作了一些剧本,因为她正在吃蛋糕和饮用药水变得越来越小。我已经能够链接两个按钮,这样当点击eat_me时,她会变小,当点击drink_me时,她会变得更大。

我想要实现的是为Alice提供一个像2这样的数字,当你点击eat_me时,它会下降1,当你点击drink_me时,它会上升1.然后我希望AS3识别Alice何时为0然后移动到下一帧。我有一些代码,但不太确定我是否接近。

      var alice_size:Number = 2;

      drink_me.addEventListener(MouseEvent.MOUSE_DOWN, resizeAlice);

      function resizeAlice(event:MouseEvent):void {
      sitting_alice.width =  sitting_alice.width * 2;
      sitting_alice.height =  sitting_alice.height * 2;
      {if (drink_me.hitTestObject(sitting_alice))
      alice_size = alice_size +1;}
      }

      eat_me.addEventListener(MouseEvent.MOUSE_UP, resizeAlice2);

      function resizeAlice2(event:MouseEvent):void {
      sitting_alice.width =  sitting_alice.width / 2;
      sitting_alice.height =  sitting_alice.height / 2;
      {if (eat_me.hitTestObject(sitting_alice))
      alice_size = alice_size -1;}
      }

     if (alice_size == 0){
 gotoAndStop (405)
     }

2 个答案:

答案 0 :(得分:0)

移动alice_size的声明,使其成为当前类的成员。我建议对resizeAlice()resizeAlice2()执行相同的操作,但您不必为它们执行此操作。此外,drink_meeat_me正在侦听不同类型的事件;让他们聆听MouseEvent.MOUSE_UPMouseEvent.CLICK。我不确定为什么hitTestObject()被使用,但原因可能在于你拥有的其他代码。

答案 1 :(得分:0)

你所拥有的非常接近。

  • 您想要的活动是MOUSE_CLICK。
  • 当您决定是否推进框架时,测试小于零的条件 - 因此您不会'传递'0,并且永远不会到达您想要的框架。
  • 尝试使用更具描述性的功能名称。
  • 除了你需要它的其他原因之外,你也可以摆脱命中测试(我把它留在了里面)。

我的代码版本:

var alice_size:Number = 2;

drink_me.addEventListener(MouseEvent.MOUSE_CLICK, growAlice);

function growAlice(event:MouseEvent):void {
  sitting_alice.width *= 2;
  sitting_alice.height *= 2;
  if (drink_me.hitTestObject(sitting_alice)) {
    alice_size = alice_size +1;
  }
}

eat_me.addEventListener(MouseEvent.MOUSE_CLICK, shrinkAlice);

function shrinkAlice(event:MouseEvent):void {
  sitting_alice.width *= 0.5;
  sitting_alice.height *= 0.5;
  if (eat_me.hitTestObject(sitting_alice)){
    alice_size = alice_size -1;
  }
}

if (alice_size <= 0){
  gotoAndStop (405);
}