Tengo esto muy simple componente personalizado, hechas de dos Etiquetas: _left y _right.

Debe representar varios tipos de puntuación en un juego: 1.2.3.4.5.6

El último número («6» en el ejemplo anterior) debe estar en negrita si que ha cambiado (en la actual ronda de juego), de lo contrario todos los números deben buscar misma.

También el último número debe ser de color rojo o verde (dependiendo de si es «mala» o «buena» puntuación).

Aquí está mi código fuente para ScoreLabel.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:HGroup 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    gap="0">

    <fx:Script>
        <![CDATA[
            public function setText(str:String, changed:Boolean=false):void {
                if (!changed) {
                    _right.text = '';
                    _left.text = str;
                    return;
                }

                var array:Array = str.split('.');
                _right.text = array.pop();
                _left.text = array.join('.') + '.';
            }

            public function setColor(n:uint):void {
                _right.setStyle('color', n);
                trace('setColor: ' + n);
            }
        ]]>
    </fx:Script>

    <s:Label id="_left" width="100%" textAlign="right"/>
    <s:Label id="_right" width="25" fontWeight="bold" color="#006600"/>

</s:HGroup>

Mi problema es: cuando me llaman myLabel.setColor(0xFF0000); el texto no cambia a rojo, pero se mantiene en el valor predeterminado de color verde, aunque puedo ver las huellas en el depurador.

Alguna idea por favor, ¿por qué el color no cambia?

También sé, que yo pudiera cambiar el anterior componente a:

    private var _color:uint;

    <s:Label id="_right" width="25" fontWeight="bold" color="{_color}"/>

y el cambio que _color miembro, pero prefiero no hacer introducir uno más de enlace de datos, porque voy a tener muchos ScoreLabel en mi aplicación:

Ajuste el color del texto de la chispa.componentes.Etiqueta

(como se puede ver arriba, todos los números son de color verde – apesar de setColor(0xFF0000) ha sido llamado 3 veces).

  • He probado tu código y funciona para mí… tal vez debería darnos más detalles.
  • Gracias por probar y me siento: tuve un error en mi código fuente principal – viene de trabajar las tardes en mi hobby proyecto.

1 Comentario

  1. 8

    Parece que sin una conversión implícita de la Etiqueta, Flash Builder Premium 4.6, simplemente no va a compilar, ya que dice lo siguiente:

    Múltiples marcadores en esta línea:
    -labelDisplay
    -1061: Llame para una posibilidad de indefinido método setStyle a través de una referencia de tipo estático, con chispa.núcleo:IDisplayText.

    Si cambio:

    _right.setStyle('color', n);

    a este:

    (_right as Label).setStyle('color', n);

    se debe trabajar.

    • que versión de flash builder compilar este código por favor ?

Dejar respuesta

Please enter your comment!
Please enter your name here