2010-01-13 6 views
4

У меня есть кнопка myBtn.Скрыть кнопку в AS3?

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

myBtn.visibility = false; 

myBtn.enabled = false; 

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

1120: Access of undefined property myBtn.

ответ

4

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

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

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

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

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

myBtn.visible = false; 

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

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

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

Шаг 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; 
+0

Не видите, как это не получилось ни у кого. Upvoted. –

0

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

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

После того, как вы уточнили, что следующий код будет делать работу:

myBtn.visible = false; 
+0

Я ve перетащил его в «компоненты» и установил его для использования в скрипте Action. Теперь я получаю эту ошибку: 1119: Доступ к возможно неопределенному свойству видится через ссылку со статическим типом класса. – wesbos

+0

Итак, теперь у вас есть компонент с именем myBtn в вашей библиотеке. Вы еще не перетащили свой компонент на сцену? Вам нужно это сделать. Используйте панель «Свойства» для установки имени * экземпляра *. Это волшебство, которое требуется вашему коду AS. – JBRWilkinson

+0

Хорошо, это имеет смысл. Я: 1. Добавлена ​​кнопка для компонентов 2. потащил его на моей сцене 3. Дал ему имя экземпляра «myBtn» 4. вставили выше код в действия кадра 1 я все еще получаю Ошибка 1119 – wesbos

0

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

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

+0

На самом деле нет смысла использовать AS2. Если что-то более сложное, поскольку вам нужно использовать делегатов для правильного обращения к членам класса (или использовать хаки, например, объявить член thisObj и присвоить ему «это») – Allan

1

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

import fl.controls.Button; 

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

Вы можете ссылаться на него, и скрыть это так:

myBtn.visible = false; 

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

2

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

Например: Если поместить объект 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.

2

1120: Access of undefined property myBtn.

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

myBtn.visible=true; // visible button 

или

myBtn.visible=false; // or to make your button invisible;