2010-11-06 6 views
2

У меня есть сценарий, который когда-то нажал (кнопка), какая-то другая шкура скрылась, а затем снова щелкнул его снова. проблема когда-то скрыта, она больше никогда не отображается здесь:Flash AS3 toggle visible

menu_start.addEventListener(MouseEvent.CLICK, myClickFunction); 


function myClickFunction(event:MouseEvent) { 

     // Hide the first and show the next here 
     if (menu_menu.visible == true){ 
     menu_menu.visible = false; 

     } 
     if (menu_menu.visible == false) { 
      menu_menu.visible == true; 
     } 

} 

Большое спасибо.

+0

есть ли что-то еще происходит с menu_menu DisplayObject, когда кнопка нажата? – Jordan

ответ

4

Причина заключается в том, когда вы нажимаете на кнопку , это скрыть, но еще раз, когда нажатии на ту же кнопку она не показывать назад

Исправьте меня, если я ошибаюсь в приведенном выше утверждении.

Теперь попробуйте что-нибудь на том, что я говорю, есть две кнопки Скрыть и Показать. Создайте две новые функции и попробуйте, если это сработает, в вашей логике есть что-то, чего вам не хватает, если это не сработает, сообщите нам об этом.

Также попробуйте это.

function myClickFunction(event:MouseEvent) { 

     // Hide the first and show the next here 
     if (menu_menu.visible){ 
     menu_menu.visible = false; 

     } else { 
     menu_menu.visible = true; 
     } 

} 

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

+0

"menu_menu.visible == true;" должен быть «menu_menu.visible = true»; потому что значение «true» должно быть присвоено не проверено. – Jordan

+0

исправьте опечатку, спасибо – Thalaivar

2

В вашей второй инструкции «если» вы не назначаете .visible to true, а вместо этого проверяете, соответствует ли она истинному из-за двух равных знаков.

function myClickFunction(event:MouseEvent) { 

    // Hide the first and show the next here 
    if (menu_menu.visible == true){ 
    menu_menu.visible = false; 

    } 
    if (menu_menu.visible == false) { 
     menu_menu.visible = true; 
    } 

}

+0

теперь, когда я делаю, что он больше не скрывает – DonJuma

+2

Вам не хватает еще до последнего оператора if, поэтому он больше не скрывается. – Allan

9

Я предпочитаю, чтобы написать такую ​​логику в краткой форме:

menu_menu.visible = !menu_menu.visible; 
+2

+1 Это ответ, чтобы принять. – Allan

0

Попробуйте использовать альфа = 0,1 вместо видимой = ложь и альфа = 1, а не виден = верно.

Проблема в том, что при использовании visible = false он также отключает взаимодействие с мышью, поэтому ваш второй клик никогда не срабатывает.

1

Heres лучшая версия, основанная на предложениях Glens, которые я сделал, не стесняйтесь использовать.

Buttonname.addEventListener (MouseEvent.CLICK, FunctionName); 
function FunctionName(event:MouseEvent) { 

    if (name1.alpha == 1){ 
    name1.alpha = 0;} else {name1.alpha = 1} 
} 

Что этот сценарий говорит, если name1 (символ Movie Clip) имеет значение альфа, равное 1 при нажатии на то будет изменить значение альфа до 0, в противном случае он будет изменить значение альфа 1 .

Это также будет работать с «видимыми» функции:

Buttonname.addEventListener (MouseEvent.CLICK, FunctionName); 
function FunctionName(event:MouseEvent) { 

    if (name1.visible == true){ 
    name1.visible = false;} else {name1.visible = true} 
}