Как отследить сообщение, если было нажато 3 клипа?

#actionscript-3

#actionscript-3

Вопрос:

Я создаю простую игру на flash в actionscipt 3. Я хочу, чтобы при нажатии пользователем на 3 видеоролика на сцене отображалось сообщение типа «Спасибо, что нажали на все 3 видеоролика!»

это сообщение должно появиться, как только он нажмет на 3, а не только на один.

есть идеи 🙂

Ответ №1:

Вы хотите сохранить, были ли они нажаты, где каждый из вас, слушателей, может получить доступ, например:

 var clicked1:Boolean = false;
var clicked2:Boolean = false;
var clicked3:Boolean = false;
  

Затем внутри вашего метода (ов) прослушивателя действий:

 function listenerMethod1(e:MouseEvent):void {
  clicked1 = true;
  checkIfAllClicked();
}

function listenerMethod2(e:MouseEvent):void {
  clicked2 = true;
  checkIfAllClicked();
}

function listenerMethod3(e:MouseEvent):void {
  clicked3 = true;
  checkIfAllClicked();
}
  

и т.д… (в качестве альтернативы вы можете обработать все 3 события MovieClip одним и тем же методом обработчика). Не забудьте функцию проверки:

 function checkIfAllClicked(){
  if(clicked1 amp;amp; clicked2 amp;amp; clicked3){
    trace("Thanks for clicking all 3 movieclips!");
  }
}
  

В зависимости от того, что вы делаете, у вас также может быть метод сброса, чтобы сбросить все 3 в false.

Если у вас большая масса видеороликов, вы можете рассмотреть возможность использования коллекции, такой как Vector<Boolean> .

Комментарии:

1. я думаю, мне нужно будет добавить это также правильно: box1.addEventListener (MouseEvent.CLICK, listenerMethod1); box2.addEventListener (MouseEvent.CLICK, listenerMethod2); box3.addEventListener (MouseEvent.CLICK, listenerMethod3); Спасибо 🙂

2. Вы правы, любой метод прослушивания должен иметь соответствующий addEventListner(), который его вызовет

Ответ №2:

Или у вас могла бы быть единственная функция, которую используют все кнопки:

 var count:uint = 0;

function buttonPress(e:MouseEvent):void {
  count  ;

if (count == 3) {
trace("Thanks for clicking all 3 movieclips!");

//reset count if required
//count = 0;
}
  

}

Комментарии:

1. Единственное, что пользователь может щелкнуть видеоролик более одного раза… и я хочу, чтобы учитывался только первый щелчок с каждого.. Спасибо 🙂