【问题标题】:Mysterious variable神秘变量
【发布时间】:2014-06-05 21:49:11
【问题描述】:

我已经分析了一个项目的所有代码,在其中一个类中有一个在函数内递增的属性(变量),它实际上是一个动画步骤,播放 mc 下一帧的唯一方法是使用 gotoAndPlay ,gotoAndStop,prevFrame和nextFrame,但是在class里面就只有这个了..

public function hurt(_damage:Number):void
{
   animationStep:int;
   //trace("hurt", health, _damage)
   health-=_damage
   if(health <= 0)
   {
      kill=true
      health=0
  }
  animationStep=5 - health
  trace(animationStep);
}

那么是什么让 flash 知道,如果它只是一个整数 var,animationStep 是一种动画 mv 的方法?

【问题讨论】:

  • 似乎更改该变量会使增量(步长)随着生命值的降低而变慢。我看到的唯一奇怪的事情是每次运行时都会重置animationStep。
  • 我知道动画剪辑的唯一方法是使用 gotoAndPlay 等
  • 没关系,但在开始时将变量设置为全局变量。在帧处理程序之外。
  • 那么为什么编译器知道必须将变量作为参数传递给 gotoAndPlay, 函数呢?
  • 没有。因为这会使它成为函数的本地化。如果您打算这样做,请将其传入,并使用 return 发送新值。

标签: variables actionscript movieclip


【解决方案1】:

我将其设置为答案,因为它正在成为讨论。

似乎更改该变量会使增量(步长)随着生命值的降低而变慢。我看到的唯一奇怪的是animationStep每次运行时都会重置

Michael Jose:我知道动画剪辑动画的唯一方法是使用 gotoAndPlay 等 – Michael Jose 4 分钟前

没关系,但在开始时将变量设置为全局变量。在帧处理程序之外。

Michael Jose:那么为什么编译器知道必须将变量作为参数传递给 gotoAndPlay 函数?

没有。因为这会使它成为函数的本地化。如果您打算这样做,请将其传入,并使用 return 发送新值。

【讨论】:

  • 根据上面的评论:如果它是全局的,它可以在任何地方修改。所以是的。编译器将知道如何处理它。你不需要传递它,假设你的函数本身也是全局的(goto 函数是)。