(ActionScript 3.0)我的函数没有通过按钮事件更新全局变量

Posted

技术标签:

【中文标题】(ActionScript 3.0)我的函数没有通过按钮事件更新全局变量【英文标题】:(ActionScript 3.0) My function is not updating the global variable via Button Event 【发布时间】:2016-09-22 15:48:40 【问题描述】:

我想弄清楚如何更新我的全局变量。目前,我只是将所有代码推到 ActionScript 3 帧,而不是使用外部 ActionScript 文件。

不过这是我的代码:

import flash.ui.Keyboard;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;

var SPEED:int = 10;
var speed_multiplier:int = 1;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
multiplier_two.addEventListener(KeyboardEvent.CLICK, twoButton);

function keyDown(e:KeyboardEvent):void 
   switch(e.keyCode) 
      case(Keyboard.LEFT):
         character.x -= SPEED*speed_multiplier;
         collisionDetection(3);
         break;

      case(Keyboard.RIGHT):
         character.x += SPEED*speed_multiplier;
         collisionDetection(4);
         break;

      case(Keyboard.UP):
         character.y -= SPEED*speed_multiplier;
         collisionDetection(1);
         break;

      case(Keyboard.DOWN):
         character.y += SPEED*speed_multiplier;
         collisionDetection(2);
         break;
   


function twoButton(e:MouseEvent):void 
    speed_multiplier = 2;

我已经进行了跟踪,以确保工作正常。按钮的单击事件工作正常。但是,当我单击按钮时,我的 speed_multiplier 的 gloval 变量没有更新。

【问题讨论】:

什么是 multiplier_two? var speed_multiplier:int = 1; 正下方打一个跟踪,如果每次运行程序时触发不止一次,将代码从时间线上移到 *.as 文件中,完全忘记时间线编码。 (这看起来像是代码流控制问题,帧上的代码是内部触发的,你无法确切知道它什么时候触发) 【参考方案1】:
multiplier_two.addEventListener(KeyboardEvent.CLICK, twoButton);

应该是

multiplier_two.addEventListener(MouseEvent.CLICK, twoButton);

不知道按钮的单击事件如何正常工作,但这是唯一引起我注意的事情。试试看。

【讨论】:

对不起,我没有完全复制和粘贴我的代码。这是我在将源代码复制到 *** 时的粗心。在我的原始源代码上显示'MouseEvent'

以上是关于(ActionScript 3.0)我的函数没有通过按钮事件更新全局变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 Emacs 漂亮地打印 ActionScript 3.0

Actionscript 3.0 - 缓动拖拽

ActionScript 3.0复杂的mp3播放器[关闭]

[ActionScript 3.0] 通过内联函数对addFrameScript方法传递参数

在 Actionscript 3.0 中删除子级

使用 ActionScript 3.0 反向播放影片剪辑