У меня есть кнопка, которая была добавлена на сцену. Когда он создается, он перемещается в видимую область сцены и вызывает функцию активирования, которая добавляет к нему прослушиватель событий, который ищет мышью. Однако по какой-то причине это не работает. Есть идеи о том, почему? Я попытался добавить слушателя к объекту через тот, который его создал, но это тоже не работает.AS3 Мышь не работает
package menus {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.*;
public class MenuPlayButton extends MovieClip {
private var _stageWidth, _stageHeight:int;
private var comeInTimer:Timer;
private var buttonSpeed:Number;
public function MenuPlayButton(stageWidth:int, stageHeight:int) {
_stageWidth = stageWidth;
_stageHeight = stageHeight;
alpha = 1;
rescaleMe();
repositionMe();
comeIntoMenu();
}
private function rescaleMe():void {
var oldWidth = this.width;
var oldHeight = this.height;
this.height = _stageHeight/10;
this.width = (this.height * oldWidth)/oldHeight;
}
private function repositionMe():void {
this.x = 0 - this.width;
this.y = _stageHeight * 0.56;
}
private function comeIntoMenu():void {
//Sets button's original speed
buttonSpeed = _stageHeight/40;
//Adds timer that moves in the button
comeInTimer = new Timer(10,0);
comeInTimer.addEventListener(TimerEvent.TIMER, comeInTimerListener);
comeInTimer.start();
}
private function comeInTimerListener(e:TimerEvent):void {
if(x < 0) {
x += buttonSpeed;
buttonSpeed *= 0.93;
} else {
x = 0;
activate();
}
}
private function activate():void {
//Kills off timer
comeInTimer.removeEventListener(TimerEvent.TIMER, comeInTimerListener);
comeInTimer.stop();
comeInTimer = null;
this.addEventListener(MouseEvent.MOUSE_DOWN, clicked);
trace("Button should be activated"); //This gets traced
}
function clicked(e:MouseEvent) {
trace("Button pressed");
}
}
}
Weird, Я не вижу никаких проблем с этим кодом. Рассмотрите трассировку 'this.stage',' this.x' и 'this.y', а также кнопку' Button нужно активировать ', возможно, что ваша кнопка выключена из-за недоступности сцены во время ее создания. В этом случае добавьте 'if (stage) init(); \t else addEventListener (Event.ADDED_TO_STAGE, init); 'стандартная структура в конструкторе и переместить его код в' function init (e: Event = null): void {...} 'где вы можете обратиться к этапу и получить его' stageWidth' и 'stageHeight' без параметров конструктора. – Vesper
Я пробовал отслеживать кнопку, она дает правильные результаты. Однако, когда я пытаюсь отслеживать Mouse.x, он дает мне: menu \ MenuPlayButton.as, строка 65 \t 1120: доступ к неопределенному свойству Мышь. – DefinitelyNotAPlesiosaur
Подождите секунду ... Без отслеживания код работает, когда я импортирую отображение. * Вместо просто MovieClip! O_o – DefinitelyNotAPlesiosaur