Отключить кнопку на метке кадра, как только я ее использовал?

Я думаю, что делаю это правильно, поскольку у меня есть некоторые ссылки с этого форума. Мой вопрос (не только мне, но и некоторым коллегам, и я также думаю, что это может помочь другим пользователям). У меня есть этот оригинальный кадр, представляю себе что-то вроде карты, а потом нажимаю кнопку, которая переходит в другой кадр (комнату, например). Когда я вернусь из этой комнаты на свою карту, я хочу, чтобы та самая кнопка, которую я использовал, была отключена, чтобы я не мог снова играть в этой комнате.

Я пробовал некоторые из них на основе такого сценария:

myBtn.onRelease = function() {
    this.enabled = false;
}

и это...

btn.enabled = false;
btn.on(MouseEvent.CLICK, hideObject);

myClip.mouseEnabled = false;
myClip.mouseChildren = false;

И некоторые другие скрипты, которые я потерял!

Но я думаю, что там что-то о событиях мыши, отключенных или видимых?

Я должен признать, что я нуб сейчас. Я пробовал много вещей, но я не могу найти правильный ответ, который работает!

Скажите, пожалуйста, был ли ответ на этот вопрос ранее, потому что я нигде не могу его найти.

Благодарю вас! Я не могу отблагодарить вас достаточно!

В соответствии с просьбой, в настоящее время у меня есть это: действия над меткой фрейма "f1"

this.f1library_btn.on ("click", function() {
    root.gotoAndStop("f1r4");
});

Это работает хорошо! И затем, на метке кадра "f1r4" у меня есть:

this.f1back_btn.on ("click", function() {
    root.gotoAndStop("f1");
});

Вы взаимодействуете с некоторым контентом на метке кадра f1r4. Хороший поток. Когда я нажимаю на эту кнопку /f1back_btn, я возвращаюсь к «f1», где я хочу отключить кнопку «f1library_btn», чтобы я не мог перейти к метке кадра «f1r4» более одного раза.

На данный момент я чувствую, что вы в основном делаете работу за меня (это не то, что я имею в виду), но, как я уже сказал, мне просто очень нужно объяснение, как заставить это работать!

Благодарю вас!


person Sara Silva    schedule 28.11.2017    source источник
comment
В чем разница между myBtn, btn и myClip?   -  person BadFeelingAboutThis    schedule 29.11.2017
comment
Это некоторые копии/вставки as3, которые я искал в соответствии со своей проблемой... В этом случае они все из разных тем, но я потерял их, пока пробовал, и у меня нет всего кода. Я не знаю, как объяснить свою проблему, так как я уже нашел некоторые ответы в качестве основы для прогресса, но не могу заставить это работать!   -  person Sara Silva    schedule 29.11.2017
comment
У вас есть имена экземпляров, установленные на ваших кнопках? Это то, что вам нужно: buttonInstanceName.addEventListener(MouseEvent.CLICK, hideObject); Тогда вам нужна функция hideObject, которая на самом деле скрывает кнопку buttonInstanceName.enabled = false (если SimpleButton) или buttonInstanceName.mouseEnable = false (если MovieClip) или buttonInstanceName.visible = false, чтобы полностью ее скрыть.   -  person BadFeelingAboutThis    schedule 29.11.2017
comment
Я попытаюсь объяснить, что у меня есть. У меня есть эта кнопка, имя экземпляра которой f1library_btn; когда я нажимаю на это, я перехожу к другой метке кадра, которой нужно что-то завершить, а затем я возвращаюсь туда, где находится доступ к кнопке f1library_btn. Однако я хочу, чтобы он работал только один раз, а это значит, что я хочу заблокировать/отключить его после однократного использования. И спасибо большое за помощь уже! Я так рад! Я не знаю, как правильно отблагодарить вас достаточно. Я попробую это! Благодарю вас!   -  person Sara Silva    schedule 29.11.2017
comment
Какой код у вас сейчас? (для перехода к другому кадру и повторного возвращения) - укажите это в своем вопросе.   -  person BadFeelingAboutThis    schedule 29.11.2017
comment
Я сделал это, теперь я пытаюсь решить свою проблему, используя то, что вы разместили здесь! Большое спасибо!   -  person Sara Silva    schedule 29.11.2017
comment
Вы используете ActionScript или Javascript? Похоже, вы не используете AS3, а ориентируетесь на HTML5?   -  person BadFeelingAboutThis    schedule 29.11.2017
comment
Я не совсем уверен? Я использую то, что сказал мне мой нынешний учитель (корневая часть и gotoandstop) на анимации (html5 canvas). Я делаю что-то неправильно? Не могли бы вы объяснить, если вам это не скучно? Извините, если я кажусь невежественным, я впервые пробую такое программное обеспечение.   -  person Sara Silva    schedule 29.11.2017
comment
Вы не делаете ничего плохого, но AS3 предназначен для вывода Flash/AIR и отличается кодом (хотя и похож) на использование вывода HTML5 Canvas. Я удалил тег AS3 из вашего вопроса и добавил несколько более подходящих.   -  person BadFeelingAboutThis    schedule 29.11.2017
comment
У меня нет большого опыта работы с HTML5 Canvas в AdobeAnimate, но я думаю, что размещение: this.f1library_btn.visible = false прямо перед root.gotoAndStop("f1r4"); должно делать то, что вы хотите.   -  person BadFeelingAboutThis    schedule 29.11.2017
comment
теперь я понял разницу! Спасибо уже за это и новые теги!   -  person Sara Silva    schedule 29.11.2017
comment
Я понимаю, как это работает! Но не делает то, что я хочу, так как он не виден, но все еще доступен для клика, но я думаю, что теперь я понимаю, как решить это, и я не могу вас отблагодарить... Как я могу исправить это для вас... Там должно быть побольше бы таких как ты. Я должен обновить эту ветку с правильным решением, если это нужно другим, верно?   -  person Sara Silva    schedule 29.11.2017


Ответы (1)


Вот пример того, что вы могли бы сделать:

Если ваша кнопка находится на той же временной шкале, что и кадр, к которому вы переходите, вы можете просто отключить или скрыть ее:

this.f1library_btn.on("click", function(e) {
    //the clicked button can be referenced with the event's (e) current target property
    e.currentTarget.visible=false;  //hide the button or e.currentTarget.mouseEnabled=false to disable the button
    root.gotoAndStop("f1r4");
});
person BadFeelingAboutThis    schedule 29.11.2017
comment
Сэр, вы восхитительны! Это работает, и я мог понять, как и почему, и это здорово! Большое спасибо! Могу я задать только один вопрос, как вы решили эту проблему? Из опыта? - person Sara Silva; 29.11.2017
comment
В основном я решил попробовать это и заметил в EaselJs (библиотека javascript, которая управляет HTML5 Canvas в AdobeAnimateCC) область действия в вашем обработчике кнопок переопределяет this, поэтому this.f1library_btn недоступна в обработчике кликов. В качестве альтернативы, вместо использования e.currentTarget вы можете просто сделать (над показанным кодом) var f1library_btn = this.f1library_btn;, затем вы можете получить к нему доступ внутри этой функции, выполнив f1library_btn.visible = false; - person BadFeelingAboutThis; 29.11.2017
comment
Я попробую это также, чтобы я мог полностью получить все альтернативы! Но это работает в любом случае! Большое спасибо. Прости, что беспокою тебя! Вы так хорошо объясняете! - person Sara Silva; 29.11.2017