/ / Colocar un cuadro de texto dinámico dentro de un botón, Flash As3, causa un gran error - actionscript-3, flash

Colocar un cuadro de texto dinámico dentro de un botón, Flash As3, causa un gran error - actionscript-3, flash

el botón y el cuadro de texto no se han agregado dinámicamente.

Tengo un movieclip con el nombre de instancia slot1.

Dentro de slot1 tengo un botón llamado newBtn1.

Dentro de Btn1 nuevo tengo un cuadro de texto dinámico con el nombre de texto 1.

slot1.newBtn1.text1.text = "Button";

// este código me da un error

                try
{
slot1.newBtn1.text1.text = "New Game";
}
catch (err:Error)
{
trace(err);
}
slot1.newBtn1.addEventListener(MouseEvent.CLICK, chooceCharacter)

este es el error de abajo

ReferenceError: Error #1069: Property text1 not found on flash.display.SimpleButton and there is no default value.

Esto funcionaría en As2 Estoy bastante seguro, pero As3 es estricto.

Estoy usando Flash CC y Flash Develop para codificar por cierto.

Respuestas

3 para la respuesta № 1

La versión corta

Si el campo de texto es lo único en su botón, entonces

TextField (slot1.newBtn1.upState).text = "New Game";

La versión larga

No puede acceder a TextField de esa manera porque un SimpleButton no es una clase dinámica como un MovieClip. Puedes tener una lectura en Clases dinámicas en flash. Digamos que tienes un objeto con el nombre de instancia "myobj" y que agregas este objeto tanto a MovieClip como a Sprite. Aquí es cómo puedes acceder a cada objeto.

MovieClip is dynamic
mymovieclip.myobj;

Sprite is not dynamic
mysprite.getChildByName ("myobj");

Otra cosa es que SimpleButton no es un DisplayObjectContainer como el IDE de Flash lo haría creer. Tiene las propiedades upState overState downState hitTestState que se utilizan para mostrar el botón. Entonces, cuando se dibuja algo en el marco Arriba de un botón en el IDE, el upState La propiedad se establecerá en una instancia de Shape. Si coloca un clip de película en el cuadro Arriba, el upState Será ese MovieClip, y así sucesivamente.

Entonces, si quieres llegar al objeto, debes hacerlo a través de las propiedades del estado. En su caso, tiene un TextField en el marco Arriba, por lo que debe acceder a él de esta manera

slot1.newBtn1.upState;  //this will return a DisplayObject
TextField (slot1.newBtn1.upState);  //this will cast it so you can use it