Как скрыть кнопку после нажатия другой кнопки во Flash?

#flash #actionscript-3 #button #cs4

#flash #actionscript-3 #кнопка #cs4

Вопрос:

Я использую actionscript 3, чтобы указать и щелкнуть игру. На кадре 1 есть две кнопки, button 1 и 2. На кадре 3 есть две кнопки, button A и B.

Я хочу, чтобы после нажатия кнопки 1 в кадре 1 кнопка A в кадре 3 была скрыта, или когда я нажимаю кнопку 2 в кадре 1, кнопка B в кадре 3 будет скрыта. Скрытые кнопки ничего не делают при нажатии на них.

заранее спасибо

Ответ №1:

Если вы попытаетесь удалить что-то, чего еще нет в списке отображения, Flash выдаст ошибку. Я думаю, лучшим решением здесь является настройка переменной временной шкалы, чтобы отслеживать, какую кнопку вы нажали. Что-то вроде этого:

на кадре 1

 var b1:Boolean = false;
var b2:Boolean = false;

button1.addEventListener(MouseEvent.MOUSE_DOWN, checkButton);
button2.addEventListener(MouseEvent.MOUSE_DOWN, checkButton);

function checkButton(e:MouseEvent):void
{
   if(e.target.name == button1) b1 = true;
   else b2 = true;

   gotoAndPlay(3);
}
  

на кадре 3

 myButtomA.visible = false;
myButtomB.visible = false;   

if (b1) myButtomA.visible = true;
if (b2) myButtomB.visible = true;
  

Ответ №2:

Существует множество способов удалить объект из списка отображения или иным образом скрыть его от просмотра. Например:

 button1.addEventListener(MouseEvent.MOUSE_DOWN, removeButton);

function removeButton(e:MouseEvent):void
{
 buttonContainer.removeChild(otherButton);
}
  

Вы также могли бы установить для свойства «видимость» целевых кнопок значение false.
Очень, очень просто, и вы должны иметь возможность изменять этот фрагмент по мере необходимости.

В другой теме.

Я всегда призываю людей воздерживаться от разработки взаимодействий на временной шкале. Это просто сбивает с толку, особенно когда у вас есть такие мощные объектно-ориентированные инструменты, доступные в AS3…

В любом случае — Приветствия и удачи.

  • обновление — В ответ на последний комментарий OPs:

Конечно, хотя это довольно глубокий вопрос, в зависимости от вашего опыта. Главное — это освоение объектно-ориентированных функций AS3 и управление большей частью вашего приложения только с помощью кода.

Проекты выглядят следующим образом: Fla функционирует в основном как контейнер для ресурсов (а если вы используете встраивания, то даже не так) с одним пустым фреймом временной шкалы. Затем основной класс document отвечает за инициирование и построение всех аспектов проекта — всего, от загрузки данных и управления ими до создания и добавления объектов списка отображения, установления пользовательских взаимодействий и управления ими. Классический дизайн упаковки / класса используется для создания, потенциально, десятков или сотен индивидуальных .КАК файлы. Временная шкала по-прежнему используется для создания сложных анимаций, но редко включает какой-либо код (сохраните stop(); здесь или там).

Когда я только учился этому, мне попалась хорошая книга, и я много раз заходил в Google, чтобы разобраться в основах AS3, и просто вроде как пошел оттуда. Создайте несколько простых проектов, и вы увидите, какой глубины вы можете достичь, и быстро.

Выгоду от подобной работы невозможно переоценить.

Дайте мне знать, если у вас возникнут дополнительные вопросы. Удачи!

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

1. Не могу не согласиться с вашим мнением «держись подальше от временной шкалы». Однако, учитывая, что он находится на временной шкале и пытается скрыть кнопки на других кадрах, которых еще нет в списке отображения, этот код не будет работать как есть. Ему нужно что-то, что будет управлять состоянием приложения. Или ему нужно переставить кнопки, чтобы они были в одном кадре.

2. Ну, кнопки представляют объекты, которые размещены на их собственном фоне или декорациях, например, телевизор внутри здания или автомобиль снаружи здания. Можете ли вы привести пример, который не предполагает работы с временной шкалой?

3. @Alex. Вы абсолютно правы. Я так редко сталкиваюсь с временной шкалой, что полностью разнес эту маленькую деталь. Отличный пример, который полностью доказывает мою точку зрения … lol. Ответ @Nelson довольно точен, op нужно будет создать другую глобально видимую переменную, которая определяет, отображается кнопка или нет. Затем это должно быть установлено на основе нажатия button1.

4. Эй, чувак, как бы ты тогда это сделал? Я был бы очень признателен, если бы вы рассказали мне.