Actionscript 2.0 if 和 else 功能不起作用?

Posted

技术标签:

【中文标题】Actionscript 2.0 if 和 else 功能不起作用?【英文标题】:Actionscript 2.0 if and else functions not working? 【发布时间】:2016-02-25 07:49:01 【问题描述】:

我在我的按钮上使用这个脚本:

   on(release)
var body2:Boolean = true; 
answerField = body2
var body1:Boolean = false;
var body3:Boolean = false; 

gotoAndStop(2);

这个脚本在我的第二个按钮上:

on (release) 
if (body1=true) 
   gotoAndStop(4);
 else if (body2=true) 
    gotoAndStop(5);
 else 
  gotoAndStop(6);  


但由于某种原因,即使 body2=true,我也无法让我的第二个按钮将我带到第 5 帧。

有什么建议吗?

【问题讨论】:

【参考方案1】:

您的代码无法正常工作,因为您只是在if 语句中使用了赋值运算符(=)而不是比较运算符(==):

if (body1 == true)             // you can write it : if(body1)
    gotoAndStop(4);
 else if (body2 == true)      // you can write it : if(body2)
    gotoAndStop(5);
 else 
    gotoAndStop(6);  

有关 ActionScript 运算符的更多信息,请查看here。

此外,您的Booleans 应该使用_global 全局声明,以便在您的代码中的任何地方都可以访问,或者在您的主​​时间线中可以使用_root.my_var 访问,并且当它们在MovieClip 或Button 代码中声明时,您可以调用它们,例如,使用_root.my_button.myvar ...

所以在你的情况下,假设你的第一个按钮被称为button1,你的另一个按钮的代码可以是这样的:

if (_root.button1.body1)   
    gotoAndStop(4);
 else if (_root.button1.body2) 
    gotoAndStop(5);
 else 
    gotoAndStop(6);  

编辑:

_global 使用示例:

button1 上的代码:

on (release) 
    _global.body2 = true;
    _global.body1 = false;
    _global.body3 = false;

button2 上的代码:

on (release) 
    trace(body2);      // gives : true
    trace(body1);      // gives : false

希望能有所帮助。

【讨论】:

非常感谢!我无法弄清楚如何以及在何处全局声明我的布尔值?我试过用 _global 简单地替换 var。在我的第一个按钮上,但这给了我错误。 我在使用什么:on(release) _global.body1:Boolean = true; var answerField = _global.body1 _global.body2:Boolean = false; _global.body3:Boolean = false; gotoAndStop(1); @Racetrack 我加了一个小例子说明如何使用_global,看看吧。

以上是关于Actionscript 2.0 if 和 else 功能不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

Actionscript 2.0在keydown上应用声音

ActionScript 2.0 和 ActionScript 3.0 有啥区别

Actionscript 2.0 变量和按钮问题

ActionScript 2.0 和 swc

ActionScript 2.0 - 数值效果结尾

flash actionscript 2.0 和 php