Скрыть кнопку в AS3? - PullRequest
       34

Скрыть кнопку в AS3?

4 голосов
/ 13 января 2010

У меня есть кнопка myBtn.

В своих действиях в кадре 1 я пробовал оба:

myBtn.visibility = false;

myBtn.enabled = false;

Оба выдают мне одну и ту же ошибку:

1120: доступ к неопределенному свойству myBtn.

Ответы [ 6 ]

5 голосов
/ 14 января 2010

ки. Есть несколько способов сделать это. Первый включает использование временной шкалы.

Метод 1 - Временная шкала

Шаг 1. Перейдите на вкладку Окно, затем выберите компоненты. Перетащите экземпляр Button на сцену.

Шаг 2. На панели свойств, где написано «Имя экземпляра», замените на «myBtn» (убедитесь, что вы не используете кавычки: P)

Шаг 3. На временной шкале введите этот код в кадре 1.

myBtn.visible = false;

Метод 2 - Класс документов

Шаг 1. Поместите экземпляр на сцену, как на временной шкале

Шаг 2. Создайте класс, назовем его Resource.

Шаг 3. добавить

import flash.display.SimpleButton; 

Шаг 4. Создание общедоступного статического члена

public static var BTN_MY_BUTTON:SimpleButton;

Шаг 5. В своем классе документов добавьте это в contstructor.

addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);

Шаг 6. Добавьте эту функцию

private function init(e:Event):void

 Resource.BTN_MY_BUTTON = myBtn;
}

Шаг 7. Теперь в любом классе вы можете получить доступ к кнопке, нажав

Resource.BTN_MY_BUTTON.visible = false;
2 голосов
/ 24 апреля 2011

1120: доступ к неопределенному свойству myBtn.

Это значит, что у вашей кнопки нет названия. Вы должны дать название своей кнопке на панели свойств своей кнопки, в поле (Instance Name) вы поставите имя myBtn и в действиях напишите:

myBtn.visible=true; // visible button

или

myBtn.visible=false; // or to make your button invisible;
2 голосов
/ 13 января 2010

Если у вас в настоящее время есть класс документа, то любые экземпляры, размещенные на сцене, должны быть объявлены в классе документа.

Например: если вы поместите объект класса Button на сцену и назовете его myBtn, то ваш класс документа должен выглядеть следующим образом:

package {
  import flash.display.MovieClip;
  import flash.display.Button;

  public class DocClass extends MovieClip {
    public var myBtn:Button;  // !!! This is the line that lets you access the instance

    public function DocClass() {
      //..
    }
  }
}

В противном случае комбинация наличия класса doc, но не объявления экземпляра даст вам ошибку 1120.

1 голос
/ 13 января 2010

если у вас есть кнопка в библиотеке, вы можете добавить новый экземпляр на сцену, используя следующее:

import fl.controls.Button;

var myBtn:Button = new Button();
addChild(myBtn);

Затем вы можете сослаться на него и спрятать его так:

myBtn.visible = false;

Было бы лучше сделать это в отдельном классе, как предложил @Ipsquiggle.

0 голосов
/ 13 января 2010

Если вы очень заинтересованы в доступе к кнопке с временной шкалы, я рекомендую придерживаться AS2, так как это значительно упрощает этот процесс. Многие сценарии, включающие доступ к экземплярам, ​​размещенным в редакторе, запуск кода с временной шкалы и т. Д., Становятся менее тривиальными в AS3.

Если вы хотите придерживаться AS3, вместо того, чтобы помещать код в кадр 1, вы должны создать класс документа, и оттуда вы можете объявить объекты, которые у вас есть на сцене, что упрощает доступ к ним. *

0 голосов
/ 13 января 2010

Вы получаете эту ошибку, потому что компилятор AS3 не может разрешить имя 'myBtn'.

Что такое myBtn? это символ, компонент или именованный экземпляр того или иного?

Как только вы пояснили это, следующий код выполнит работу:

myBtn.visible = false;
...