Comunidad de diseño web y desarrollo en internet online

Problema con las Classes en AS3

Citar            
MensajeEscrito el 31 Jul 2009 10:07 am
Estoy teniendo mis primeros contactos con el tema de las Classes y como se suele hacer en estos casos, uno empieza por reproducir algun ejemplo del manual oficial de Adobe. Reproduzco el siguiente, poniendo ambos ficheros en la misma carpeta:

En un fichero llamado "Greeter.as" escribo:

package {
public class Greeter {
public function sayHello():String {
var greeting:String;
greeting="Hello world!";
return greeting;
}
}
}

En otro fichero llamado "HelloWorld.fla", creo el campo de texto "mainText" y a nivel de fotograma escribo:

var myGreeter:Greeter=new Greeter();
mainText.text=MyGreeter.sayHello();

El ejemplo no funciona. Cuando compilo me aparecen los siguientes errores:

1046: No se encontró el tipo o no es una constante en tiempo de compilación: Greeter.
1180: Llamada a un método Greeter posiblemente no definido.
1120: Acceso a una propiedad MyGreeter no definida.

¿Qué hago mal?
Gracias por anticipado.

Por lrs

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Jul 2009 11:09 am
El problema está en mainText.text=MyGreeter.sayHello();
Tu instancia se llama myGreeter (con m minúscula), no MyGreeter.
Además tal y como lo has hecho la clase tiene que estar en la misma ruta que tu .fla

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Jul 2009 06:33 pm
Correcto. Error de transcripción.
Una vez resulto sigo con problemas.
Ahora al compilar el error es:

1071: Error de sintaxis: se esperaba una palabra clave de definición (como function) después del atributo text, no myGreeter.

Por lrs

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Jul 2009 06:57 pm
Pruebalo así:

Código ActionScript :

var myGreeter:Greeter=new Greeter();
var st:String = MyGreeter.sayHello();
mainText.text= st


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Ago 2009 02:19 pm
No hay manera...
Ahora los errores de compilación son:

1046: No se encontró el tipo o no es una constante en tiempo de compilación: Greeter.
1180: Llamada a un método Greeter posiblemente no definido.
1120: Acceso a una propiedad MyGreeter no definida.

Por lrs

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Ago 2009 02:31 pm
No encuentra la clase, la debes poner en la misma carpeta que el fla

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Ago 2009 03:55 pm
Los ficheros .fla y .as han estado en la misma carpeta siempre.

Por lrs

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Ago 2009 04:01 pm
Ok, lo reproduzco, esta es la clase:

Código ActionScript :

package {
   public class Greeter {
      public function sayHello():String {
         var greeting:String;
         greeting="Hello world!";
         return greeting;
      }
   }
}


La guardo como Greeter.as, en la misma carpeta crea Greeter.fla, en el primer frame creo un campo de texto dinámico con el nombre de instancia mainText y esrte código en el primer frame:

Código ActionScript :

var myGreeter:Greeter=new Greeter(); 
var st:String = myGreeter.sayHello(); 
mainText.text= st


Compila correctamente, en el campo de texto dice: Hello world!

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Ago 2009 04:54 pm
Se me ocurren dos posibilidades:
El archivo .as tiene que tener exáctamente el mismo nombre que la clase (Greeter) incluyendo mayúsculas.
Otra posibilidad es que estés probando el .fla con el código de solisarg sin haberlo guardado en el disco duro, en cuyo caso no detectará las clases en el mismo directorio y te lanzará esos errores.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Ago 2009 06:58 pm
Naa lo que pasa es que a solisarg se le solto el dedo cuando le dio por primera vez el codigo:

solisarg escribió:

Pruebalo así:

Código ActionScript :

var myGreeter:Greeter=new Greeter();
var st:String = MyGreeter.sayHello();
mainText.text= st


Jorge


myGreeter no es lo mismo que MyGreeter, pero el segundo código de Solisarg es bueno yo mismo lo compile ggg.

Por Mr_Anderson

151 de clabLevel



Genero:Masculino  

Terminaltor

chrome
Citar            
MensajeEscrito el 03 Ago 2009 07:24 pm
Hasta ahora todas las pruebas las había hecho en dos ordenadores del trabajo.

Lo he probado en casa y todo funciona correctamente.

O algo se me escapa en el trabajo y es tan evidente que no lo veo o algo pasa con el Flash instalado en el trabajo, porque desde que me puse a hacer pruebas con las Classes jamás he conseguido que funcionara ninguna.

Gracias a todos.

Por lrs

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Ago 2009 09:24 pm
Otra posibilidad es que hayas modificado el Source Path en el archivo del trabajo y que no lea las clases.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

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