2016-05-25 17 views
0

Ich versuche herauszufinden, wie ich meine globale Variable aktualisieren kann. Im Moment schiebe ich meinen ganzen Code in ActionScript 3 Rahmen, anstatt eine externe ActionScript-Datei zu verwenden.(ActionScript 3.0) Meine Funktion aktualisiert die globale Variable nicht über Button Ereignis

Dennoch ist hier mein Code:

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; 
} 

Ich habe bereits eine Spur, um sicherzustellen, dass ordnungsgemäß funktioniert. Das Klickereignis für die Schaltfläche funktioniert einwandfrei. Allerdings wird meine Gloval-Variable für speed_multiplier nicht aktualisiert, wenn ich auf die Schaltfläche klicke.

+0

Was ist Multiplikator_zwei? – suzuiyue

+1

Slap eine Spur direkt unter 'var speed_multiplier: int = 1;' und sollte es mehr als einmal pro Lauf des Programms auslösen, den Code aus der Timeline in eine * .as-Datei und vergessen Sie über Timeline-Codierung vollständig. (Dies sieht wie ein Code-Flow-Steuerelement Problem aus, der Code auf einem Rahmen wird intern ausgelöst und Sie können nicht genau sagen, wann es ausgelöst wird) – Vesper

Antwort

1
multiplier_two.addEventListener(KeyboardEvent.CLICK, twoButton); 

sollte

sein
multiplier_two.addEventListener(MouseEvent.CLICK, twoButton); 

Sie wissen nicht, wie das Click-Ereignis für den Button funktioniert gut, aber das ist das einzige, was mir auffiel. Probieren Sie das aus.

+0

Sorry, ich habe meinen Code nicht kopieren und einfügen. Das war ich unvorsichtig, als ich den Quellcode zu Stackoverflow kopierte. Auf meinem ursprünglichen Quellcode zeigt 'MouseEvent' –