Gracias Jorge por el tiempo que me has dedicado... pero ya hice el cambio y sigue sin funcionar.
Recapitulando:
Tengo una clase ubicada en otro paquete (paquete controls) que en su encabezado tiene:
Código :
package com.controls
{
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFormat;
public class Calendar extends flash.events.EventDispatcher
{
// Properties
protected var __name : String = "Calendar";
protected var __width : Number = 250;
protected var __height : Number = 230;
protected var __x : Number = 0;
protected var __y : Number = 0;
protected var __visible : Boolean = true;
protected var __alpha : Number = 100;
protected var __topLabel : String = "";
public var __language : String = "Spanish";
En su constructor:
Código :
// Constructor
public function Calendar ()
{
}
// Initialize Calendar
public function init () : void
{
labelStyle = new TextFormat ("Verdana", 12, 0x000000, false);
labelStyle.align = TextFormatAlign.CENTER;
if (calendar)
...
...
y más abajo en la parte del setting:
Código :
// language
public function set language (l : String) : void
{
trace("paso por el setting!!!!!!");
__language = l;
}
public function get language () : String
{
return __language;
}
Por otro lado tengo tengo una Clase llamada SelectDate que importa la Clase Calendar:
Código :
package kiosk {
import flash.display.*;
import flash.events.*;
import com.controls.Calendar;
public class SelectDate extends Sprite {
public function SelectDate() {
}
public function init():void {
var selectorIda:Calendar = new Calendar();
selectorIda.language = "English";
selectorIda.x = 132;
selectorIda.y = 198;
selectorIda.addEventListener ("select", selectHandler);
selectorIda.init ();
function selectHandler(event:Event):void {
trace("se selecciono una fecha");
}
}
}
}
Hasta ahi no hay problemas... el Calendario se dibuja en pantalla y me llega el trace del setter.
Se crea una clase llamada ChangeLanguage (está en el Stage al mismo nivel que SelectDate), ahi se dibuja un botón que realiza el cambio de idioma, una vez que se cambian los textos en pantalla trata de cambiar el idioma del Calendario.
Código :
package kiosk {
import flash.display.*;
import flash.events.*;
import fl.controls.*
import com.controls.Calendar;
public class ChangeLanguage extends Sprite {
public function ChangeLanguage() {
}
public function init():void {
var btn3:Button = new Button();
btn3.name = "btn3";
btn3.emphasized = true;
btn3.setSize(100, 40);
btn3.move(350, 480);
btn3.addEventListener(MouseEvent.CLICK, buttonClick);
this.addChild(btn3);
}
private function buttonClick (e:MouseEvent) {
var button:Button = e.target as Button;
w.ToWrite ("Presionado botón: " + button.label);
switch (button.name) {
case "btn1" : break;
case "btn2" : break;
case "btn3" :
// change label and modify global variable
if (btn3.label == "English") {
var actual_language = "en";
btn3.label = "Español";
} else {
var actual_language = "es";
btn3.label = "English";
}
// updating language
Locale.loadLanguageXML(actual_language, completeChangedLanguage);
}
}
private function completeChangedLanguage (success:Boolean):void {
if (success) {
var target = this.parent.getChildAt(7);
trace(target); // devuelve [Object SelectDate]
var objeto = target.getChildAt(0);
trace(objeto); // devuelve [Object MovieClip] <- instancia de Calendario
objeto.language = "Spanish";
trace(objeto.language); // devuelve "Spanish"
// ..............................
} else {
// error
}
}
}
}
Y ahi está el problema, pues no recibo ningún trace desde la función language en la clase Calendar.
¿Alguna sugerencia?