Это, наверное, действительно просто, но я не могу понять это.Взгляните на код, я переместил 2 экземпляра этого класса кнопок (CategoryButton) на сцену.Как вы можете видеть, когда вы нажимаете кнопку, она должна идти в AndPlay (3), записывать себя как selectedBtn.Когда нажата вторая кнопка, она должна снова включить прослушиватель для первой кнопки, удалить слушателей для себя и установить себя в качестве вновь выбранной кнопки.К сожалению, этот код не делает этого.Когда я нажимаю на первую кнопку, она перемещает кнопку в кадр 3 и удаляет своих слушателей.Я нажимаю вторую кнопку, и она делает то же самое, за исключением того, что она не добавляет слушателей для первой кнопки снова.
Я новичок в AS3, любая помощь очень ценится, спасибо.
package classes {
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Sprite;
public class CategoryButton extends MovieClip{
//this stores the currently selected button
public var selectedBtn:Object;
public function CategoryButton() {
// listen for over
addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
}
protected function rolloverToggle(event:MouseEvent):void {
gotoAndStop(2);
removeEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
addEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
addEventListener(MouseEvent.CLICK, buttonToggle);
}
protected function rolloutToggle(event:MouseEvent):void {
gotoAndStop(1);
removeEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
}
protected function buttonToggle(event:MouseEvent):void {
if(selectedBtn) {
trace(selectedBtn.name)
selectedBtn.addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
selectedBtn.gotoAndStop(1);
event.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
event.currentTarget.removeEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
event.currentTarget.removeEventListener(MouseEvent.CLICK, buttonToggle);
event.currentTarget.gotoAndStop(3);
selectedBtn = event.currentTarget;
}else {
selectedBtn = event.currentTarget;
trace(selectedBtn.name);
selectedBtn.removeEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
selectedBtn.removeEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
selectedBtn.removeEventListener(MouseEvent.CLICK, buttonToggle);
selectedBtn.gotoAndStop(3);
}
}
}
}