Изменить кнопку в Action Script 3.0 - PullRequest
0 голосов
/ 22 октября 2009

Я работаю над проектом во Flash, используя Action Script 3.0. Я преобразовал рисунок в кнопку, чтобы использовать его для разных кнопок в проекте, но не могу понять, как изменить только экземпляр новой кнопки на сцене без изменения всего класса. Например, если моя первая кнопка имеет уникальное имя экземпляра и называется «Нажмите меня», и я перетаскиваю другой экземпляр этой кнопки на сцену и пытаюсь присвоить ей новое имя экземпляра, а затем переименовать его, чтобы сказать «Далее», это автоматически изменяет кнопку «Нажмите меня», чтобы сказать «Далее». Кто-нибудь может мне помочь, чтобы мне не нужно было создавать новый класс для каждой кнопки, которую я делаю?

1 Ответ

0 голосов
/ 22 октября 2009

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

Один из способов добиться того, чего вы хотите, - создать видеоклип вместо кнопки. Затем в свой мувиклип добавьте динамическое текстовое поле внутри. На всех ваших экземплярах мувиклипа (убедитесь, что у него есть имя при перетаскивании из библиотеки на сцену), добавьте следующий код:

myBtn1.buttonMode = true;
myBtn2.buttonMode = true;

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

myBtn1.txtLabel.text = "hello";
myBtn2.txtLabel.text = "world";

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

myBtn1.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver)

function onMouseOver(e:MouseEvent)
{
  myBtn1.gotoAndStop("OVER_STATE");
 //can use e.target.gotoAndStop("OVER_STATE") instead so that you can reuse the one
 //function for all buttons. The above is just to illustrate the point.
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...