Comunidad de diseño web y desarrollo en internet online

programación + clase multilingüe

Citar            
MensajeEscrito el 18 Abr 2011 08:22 pm
Hola a todos, como muchos soy nuevo. Estoy realizando un video flash multilingüe empleando una clase. Cuando he acabado de diseñar todo y estoy asociando la clase con sus respectivos archivos xml descubro que no me funciona. Probando pequeños ejemplos he dado con el que creo que es el problema: la clase deja de funcionar cuando hay frames con programación (tipo stop,...). Lo primero que pensé era convertir toda la película en un movieclip para solucionarlo, pero pensé que si hacía esto iba a necesitar un stop en la línea principal para que pudiera reproducir mi película poco a poco (como la tengo programada).

¿¿¿¿QUÉ HAGO????

tal y como lo tengo ahora:

capa con fotogramas claves vacio con etiquetas
capa con as3
capa con botones de idiomas
capa con animación

clase asociada al archivo, y me sale los errores:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at pfc_clase()
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at pfc_clase/init()
at fl.lang::Locale$/onXMLLoad()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

La película swf se me reproduce bien, pero no me cambia de idioma (la clase no funciona)

Como soy nuevo, agradecería que la respuesta no tenga muchos tecnicismos (si hay muchos no voy a entender el mensaje :S)

muchísimas gracias!!!

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 09:57 am
Que hay en la clase?

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 10:39 am
Muchas gracias por responer. La clase es para cambiar de idioma, de español a alemán o inglés.

Te pego el código:





package {
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.text.TextField
import fl.lang.Locale;

public class pfc_clase extends MovieClip{


public function pfc_clase() {
Locale.addXMLPath("es", "es/pfc_es.xml");
Locale.addXMLPath("de", "de/pfc_de.xml");
Locale.addXMLPath("en", "en/pfc_en.xml");
Locale.initialize();
Locale.setDefaultLang("es");
Locale.setLoadCallback(init);
btn_pfc_es.addEventListener(MouseEvent.CLICK, cambiar);
btn_pfc_de.addEventListener(MouseEvent.CLICK, cambiar);
btn_pfc_en.addEventListener(MouseEvent.CLICK, cambiar);


}

private function init(event:Boolean):void {


mvc_pfc002.gra_pfc_00.t_pfc00_1.text = Locale.loadString("IDS_PFC00_1");
mvc_pfc002.gra_pfc_00.t_pfc00_2.text = Locale.loadString("IDS_PFC00_2");
mvc_pfc002.gra_pfc_00.t_pfc00_3.text = Locale.loadString("IDS_PFC00_3");

mvc_pfc003.gra_pfc_00.t_pfc00_1.text = Locale.loadString("IDS_PFC00_1");
mvc_pfc003.gra_pfc_00.t_pfc00_2.text = Locale.loadString("IDS_PFC00_2");
mvc_pfc003.gra_pfc_00.t_pfc00_3.text = Locale.loadString("IDS_PFC00_3");

t_pfc00_1.text = Locale.loadString("IDS_PFC00_1");
t_pfc00_2.text = Locale.loadString("IDS_PFC00_2");
t_pfc00_3.text = Locale.loadString("IDS_PFC00_3");
t_pfc00_a.text = Locale.loadString("IDS_PFC00_A");
t_pfc00_b.text = Locale.loadString("IDS_PFC00_B");
t_pfc00_c.text = Locale.loadString("IDS_PFC00_C");
t_pfc02_1.text = Locale.loadString("IDS_PFC02_1");
t_pfc02_2.text = Locale.loadString("IDS_PFC02_2");
t_pfc02_3.text = Locale.loadString("IDS_PFC02_3");
mvc_pfc02_e00.gra_pfc02_e05.t_pfc02_5.text = Locale.loadString("IDS_PFC02_5");

mvc_pfc02_e00.gra_pfc02_e05.t_pfc02_5b.text = Locale.loadString("IDS_PFC02_5B");
mvc_pfc02_e00.gra_pfc02_e06.t_pfc02_6.text = Locale.loadString("IDS_PFC02_6");
mvc_pfc02_e00.gra_pfc02_e07.t_pfc02_7.text = Locale.loadString("IDS_PFC02_7");
mvc_pfc02_e00.gra_pfc02_e07.t_pfc02_7b.text = Locale.loadString("IDS_PFC02_7B");
mvc_pfc02_e00.gra_pfc02_e08.t_pfc02_8.text = Locale.loadString("IDS_PFC02_8");
mvc_pfc02_e00.gra_pfc02_e08.t_pfc02_8b.text = Locale.loadString("IDS_PFC02_8B");
mvc_pfc02_e00.gra_pfc02_e09.t_pfc02_9.text = Locale.loadString("IDS_PFC02_9");
mvc_pfc02_e00.gra_pfc02_e09.t_pfc02_9b.text = Locale.loadString("IDS_PFC02_9B");
mvc_pfc02_e00.gra_pfc02_e10.t_pfc02_10.text = Locale.loadString("IDS_PFC02_10");
mvc_pfc02_e00.gra_pfc02_e10.t_pfc02_10b.text = Locale.loadString("IDS_PFC02_10B");

t_pfc03_1.text = Locale.loadString("IDS_PFC03_1");
t_pfc03_2.text = Locale.loadString("IDS_PFC03_2");
t_pfc03_3.text = Locale.loadString("IDS_PFC03_3");
mvc_pfc03.gra_pfc0_02.t_pfc03_4.text = Locale.loadString("IDS_PFC03_4");
mvc_pfc03.gra_pfc0_03.t_pfc03_5.text = Locale.loadString("IDS_PFC03_5");
mvc_pfc03.gra_pfc0_04.t_pfc03_6.text = Locale.loadString("IDS_PFC03_6");
t_pfc04_1.text = Locale.loadString("IDS_PFC04_1");
t_pfc04_2.text = Locale.loadString("IDS_PFC04_2");
t_pfc04_3.text = Locale.loadString("IDS_PFC04_3");
t_pfc04_4.text = Locale.loadString("IDS_PFC04_4");

t_pfc04_5.text = Locale.loadString("IDS_PFC04_5");
t_pfc06_1.text = Locale.loadString("IDS_PFC06_1");
t_pfc06_2.text = Locale.loadString("IDS_PFC06_2");
t_pfc06_4.text = Locale.loadString("IDS_PFC06_4");
t_pfc06_5.text = Locale.loadString("IDS_PFC06_5");
t_pfc06_6.text = Locale.loadString("IDS_PFC06_6");
t_pfc07_1.text = Locale.loadString("IDS_PFC07_1");
t_pfc07_2.text = Locale.loadString("IDS_PFC07_2");
t_pfc09_1.text = Locale.loadString("IDS_PFC09_1");
t_pfc09_2.text = Locale.loadString("IDS_PFC09_2");

t_pfc09_3.text = Locale.loadString("IDS_PFC09_3");
t_pfc10_1.text = Locale.loadString("IDS_PFC10_1");
t_pfc10_2.text = Locale.loadString("IDS_PFC10_2");
t_pfc10_3.text = Locale.loadString("IDS_PFC10_3");
t_pfc011_1.text = Locale.loadString("IDS_PFC011_1");
t_pfc011_2.text = Locale.loadString("IDS_PFC011_2");
t_pfc011_3.text = Locale.loadString("IDS_PFC011_3");
t_pfc011_4.text = Locale.loadString("IDS_PFC011_4");
t_pfc011_4b.text = Locale.loadString("IDS_PFC011_4B");
t_pfc011_5.text = Locale.loadString("IDS_PFC011_5");

t_pfc011_6.text = Locale.loadString("IDS_PFC011_6");
t_pfc011_6b.text = Locale.loadString("IDS_PFC011_6B");
t_pfc011_7.text = Locale.loadString("IDS_PFC011_7");
t_pfc011_7b.text = Locale.loadString("IDS_PFC011_7B");
t_pfc11_1.text = Locale.loadString("IDS_PFC11_1");
t_pfc11_2.text = Locale.loadString("IDS_PFC11_2");
t_pfc11_3.text = Locale.loadString("IDS_PFC11_3");
t_pfc12_1.text = Locale.loadString("IDS_PFC12_1");
t_pfc12_2.text = Locale.loadString("IDS_PFC12_2");
t_pfc12_3.text = Locale.loadString("IDS_PFC12_3");

t_pfc012_1.text = Locale.loadString("IDS_PFC012_1");
t_pfc012_2.text = Locale.loadString("IDS_PFC012_2");
t_pfc012_3.text = Locale.loadString("IDS_PFC012_3");
t_pfc012_4.text = Locale.loadString("IDS_PFC012_4");
t_pfc012_4b.text = Locale.loadString("IDS_PFC012_4B");
t_pfc012_5.text = Locale.loadString("IDS_PFC012_5");
t_pfc051_1.text = Locale.loadString("IDS_PFC051_1");
t_pfc051_2.text = Locale.loadString("IDS_PFC051_2");
t_pfc051_3.text = Locale.loadString("IDS_PFC051_3");
t_pfc051_4.text = Locale.loadString("IDS_PFC051_4");

t_pfc052_1.text = Locale.loadString("IDS_PFC052_1");
t_pfc052_2.text = Locale.loadString("IDS_PFC052_2");
t_pfc081_1.text = Locale.loadString("IDS_PFC081_1");
t_pfc081_2.text = Locale.loadString("IDS_PFC081_2");
t_pfc081_3.text = Locale.loadString("IDS_PFC081_3");
t_pfc081_4.text = Locale.loadString("IDS_PFC081_4");
t_pfc081_4b.text = Locale.loadString("IDS_PFC081_4B");
t_pfc081_5.text = Locale.loadString("IDS_PFC081_5");
t_pfc081_5b.text = Locale.loadString("IDS_PFC081_5B");
t_pfc081_6.text = Locale.loadString("IDS_PFC081_6");

t_pfc081_6b.text = Locale.loadString("IDS_PFC081_6B");
t_pfc082_1.text = Locale.loadString("IDS_PFC082_1");
t_pfc082_2.text = Locale.loadString("IDS_PFC082_2");
t_pfc082_3.text = Locale.loadString("IDS_PFC082_3");
t_pfc06_3.text = Locale.loadString("IDS_PFC06_3");
}

private function cambiar(event:MouseEvent):void {

var mipfc:String;
switch (event.target.name) {
case "btn_pfc_es":
mipfc = "es";
break;
case "btn_pfc_de":
mipfc = "de";
break;
case "btn_pfc_en":
mipfc = "en";
break;

}
Locale.loadLanguageXML(mipfc);
}

}

}

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 11:13 am
En que te basaste para crear tu clase? has seguido algun ejemplo?

Prueba borrando todo lo referente a Locale en el constructor de tu clase, si no hay error, el problema es ahi; si el error sigue, prueba borrando las referencias a btn_pfc_es, etcetera.
No se porque tienes referencia a esos botones, como usas tu clase? es la document class?

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 11:27 am
Soy un poco torpe...

te cuento, el código me lo bajé de este tutorial:

http://www.cristalab.com/tutoriales/sites-multi-lenguajes-con-xml-en-actionscript-3.0-c52576l/

hice una prueba y vi que funcionaba, así que me despreocupé hasta que tuviera todo montado (qué es en el punto en el que estoy)

lo que hice fue hacer un archivo que he llamado pfc_clase.as que lo vinculo como clase en el panel de propiades; y lo que te he pegado en el mensaje anterior es la programación de ese archivo siguiendo el ejemplo que me descargué.

a lo mejor es mucho pedir, pero podrías borrar del código que te he puesto lo de locale? es que no sé exactamente que es lo que tengo que borrar... los botones son los que tengo en mi archivo principal pfc.fla.

si sabes de otra forma para hacerlo más fácil estoy abierto a todo tipo de soluciones. Hasta ahora tengo todos los textos en cadenas para español, alemán e inglés; todos son dinámicos, y todos tienen nombre de instancia...

muchísimas gracias, de verdad!

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 12:55 pm
Lo que decia que borraras era:

Código ActionScript :

Locale.addXMLPath("es", "es/pfc_es.xml");
Locale.addXMLPath("de", "de/pfc_de.xml");
Locale.addXMLPath("en", "en/pfc_en.xml");


En el ejemplo, dichos xml se encuentran en una carpeta llamada 'lang', en tu caso, tienes 3 carpetas distitnas?

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 01:57 pm
Sí; las carpetas me las hizo solas flash, cuando elegí los idiomas me hizo una para cada uno (es, de y en), y dentro de cada una, el archivo correspondiente (pfc_es.xml, fc_de.xml y pfc_en.xml).

He probado a sacar los archivos y colocarlos en una misma carpeta "lang" y el error es el mismo; y también he probado a pegarlos en la misma carpeta que el .fla por no poner ninguna ruta, y lo mismo...

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 02:17 pm
tienes un stop al principio?
Si no es asi, la capa de los botones recorre toda la linea de tiempo sin ningun fotograma clave?

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 02:50 pm
El fotograma 1 lo tengo vacío en todos los fotogramas, menos en el de los botones porque comprobé que si no no me reconocía la clase. Lo dejé vació porque pensé en programar más tarde unas cosas que tenían que ir en primer frame. De todas más adelante tengo programación de tipo stop y botones de previo y siguiente, no sé si me explico...

Sobre la capa de los botones si que hay un fotograma clave (dónde están insetados los botones para cambiar de idioma) y este esta copiado con F5 durante toda la película.

Muchísimas gracias de nuevo que te estás mojando mucho!

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 03:03 pm
los botones de cambiar de idioma deben estar desde el fotograma uno, con sus nombres de instancia y deben estar hasta donde esta el stop sin ningun fotograma clave en dicha capa.
Que sucede si agregas un stop en el primer fotograma?

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 03:16 pm
pues con un stop sólo no pasa nada, se me queda parado el el primer fotograma, que como te digo sólo tiene los botones de los idiomas, y no puedo hacer nada porque no hay nada más en ese frame. Por otra parte, al probar la película, me vuelve a dar el error #1009.

En el segundo frame ya tengo un stop, de hecho tengo:

stop ();

function pfc001002 (event:MouseEvent):void {
gotoAndPlay("pfc002");
}
b_pfc001002.addEventListener(MouseEvent.CLICK, pfc001002);

b_pfc00_pr1.useHandCursor=false;
b_pfc00_pr2.useHandCursor=false;

porque tengo el botón de siguiente, y dos botones más que funcionan sólo como un objeto que cambia al pasar por encima.

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 03:29 pm
Seguro que los botones tienen nombre de instancia:

Código ActionScript :

btn_pfc_es, btn_pfc_de & btn_pfc_en

?

Porque el error es simple! te esta diciendo que le quieres dar acciones a un objeto que no existe, entonces, o realmente el objeto no existe al momento que la clase carga o hay un problema con el nombre de instancia.

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 03:43 pm
Sí, eso está revisadísimo, de hecho acabo de copiar el nombre de cada instancia del .fla en el .as por si acaso; y al probar pasa lo mismo...

la verdad es que yo creo que hay un problema de incompatibilidad entre la clase y la programación de la película, porque haciéndo un pequeño ejemplo vi que si había frames con programación no funcionaba la clase, por eso en un principiio pensé en hacer un movieclip con toda la película, para dejar la clase fuera, pero aun así había que programar a la vez que la clase. Además, la solución sería una ñapa, cosa que no espero de los tíos de adobe (aunque todo puede ser...)

Por david_gut_ar

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2011 04:00 pm
O sea, si no tienes programacion en la pelicula no te tira el error? de cualquier forma, no es aconsejable tener nada en el fla mas que los assets (los graficos).

Y los elementos que se llaman como mvc_pfc002, existen desde el primer fotograma?

Que tal si como prueba, cambias el constructor de tu clase por:

Código ActionScript :

public function pfc_clase()
{
Locale.addXMLPath("es", "es/pfc_es.xml");
Locale.addXMLPath("de", "de/pfc_de.xml");
Locale.addXMLPath("en", "en/pfc_en.xml");
Locale.initialize();
Locale.setDefaultLang("es");
//Locale.setLoadCallback(init);
btn_pfc_es.addEventListener(MouseEvent.CLICK, cambiar);
btn_pfc_de.addEventListener(MouseEvent.CLICK, cambiar);
btn_pfc_en.addEventListener(MouseEvent.CLICK, cambiar);
}

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2011 04:11 pm
estamos muy cerca

MUCHAS GRACIAS

te cuento que me pasa ahora...

me funciona todo de pm (ya me dirás que has hecho porque tenía escrito lo mismo que me ha pegado, o eso me ha parecido, y al pegarlo se ha ido el error y me cambia de idioma al pulsar en las banderas) mi nuevo problema es que no se me cambia directamente...

me explico:
si estoy en el fotograma 5 en español, por ejemplo, y decido seguir en inglés, pulso la bandera de inglés y no pasa nada, pero cuando doy al botón siguiente, la película, en el fotograma 6, sigue en inglés, e incluso si doy para atrás, al 5, sigue en inglés...

no sé si como tengo todos los fotogramas con un stop, este les impide cambiar de idioma directamente al pulsar, o si es una propiedad que tengo que añadir a las clase...

Por david_gut_ar

24 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.