Это нормальное поведение. Созданная вами кнопка, которая находится в вашей библиотеке, не является экземпляром. Когда вы перетаскиваете его на сцену, вы создаете экземпляр, но если вы что-то меняете, например, заменяете текстовое поле в нем, вы меняете класс.
Один из способов добиться того, чего вы хотите, - создать видеоклип вместо кнопки. Затем в свой мувиклип добавьте динамическое текстовое поле внутри. На всех ваших экземплярах мувиклипа (убедитесь, что у него есть имя при перетаскивании из библиотеки на сцену), добавьте следующий код:
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, а затем добавить свойство для изменения динамического текстового поля, которое вы создаете внутри.