Comunidad de diseño web y desarrollo en internet online

Llamar a una función de una clase .as desde un MXML!!!!

Citar            
MensajeEscrito el 14 Feb 2012 05:20 pm
Hola a todos, resulta que estoy intentando hacer una miniaplicación para móvil con mapas usando el API de Google Maps para FLEX.

El caso es que para no escribir todo el código en un archivo MXML quiero ir modulando para que todo sea más legible. Pero tengo un problema a la hora de invocar funciones que tengo en un .as desde otro MXML.

Os pongo un ejemplo muy sencillo de lo que llevo intentando todo el día hacer:

Código :

package com.clases
{
   public class Cosas
   {
      public function Cosas()   {}

      public function hola():void{
         // no hace nada 
      }
   }
}

Fichero MXML desde donde quiero llamar a la función

Código :

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

   <s:Button label="cambiar mapa" click="{hola()}"/>

</s:View>


Nada, al hacer la llamada a hola(), me dice que error 1180: Call to a possibly undefinied metho hola.

Tambien lo he intentado con AS3 y tampoco:

Código :

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:local="*">
   <fx:Script>
      <![CDATA[
         import com.bomberos.clases.Cosas;
         
         public function llamada():void{
            hola();   // Error aquí
         }         
      ]]>
   </fx:Script>
   
   <s:Button label="Hacer Click" click="{llamada()}"/> 


Claro, eso es un ejemplo, pero en el archivo real me pasa lo mismo. En el real lo que tengo es una clase dentro de un paquete... ok. Después desde el MXML principal de la aplicación creo una variable de tipo mapa y la muestro dentro de un UIComponent. Todo perfecto.
Pero tengo un panel (en otro MXML para separar el código) lleno de botones que quiero que llamen a las funciones del mapa que tengo definidas dentro del .as, y nada.

Espero vuestras respuestas cuanto antes, muchísimas gracias desde ya!
si falta algún ejemplo o cualquier cosa que me falte para completar la pregunta pedírmelo por favor y lo pongo de inmediato! :P

Por ctwkkk

3 de clabLevel



Genero:Masculino  

Informático musical :)

chrome
Citar            
MensajeEscrito el 14 Feb 2012 10:00 pm
te da el error porque estas haciendo una llamada de una funcion de una clase que nunca has creado por lo tanto no existe dicha funcion hasta que no lo creas.

Código ActionScript :

import com.bomberos.clases.Cosas;

var cosas: Cosas= new Cosas();

public function llamada():void
{
   Cosas.hola();   // Error aquí
} 

pero si quieres hacer una llamada de una funcion de una clase sin tener que crear la clase debes de definir la funcion como statica

Código ActionScript :

package com.bomberos.clases
{
   public class Cosas
   {
      public function Cosas()   {}

      public static function hola():void{
         // no hace nada 
      }
   }
}

y se usa

Código ActionScript :

import com.bomberos.clases.Cosas;
         
public function llamada():void
{
   Cosas.hola();   // Error aquí
}  

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Feb 2012 12:04 pm
Muchas gracias Yonomimi, he hecho lo que me has dicho pero no funciona!
En la imagen puedes ver cuál es el problema exactamente.



Muchísimas gracias por contestar tan rápido!!

Por ctwkkk

3 de clabLevel



Genero:Masculino  

Informático musical :)

chrome
Citar            
MensajeEscrito el 15 Feb 2012 06:58 pm
en vez de poner

Código ActionScript :

texto= Cosas.sayHello ('Haz click aquí');

tienes que poner

Código ActionScript :

texto= Conjunto.sayHello ('Haz click aquí');

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Feb 2012 08:05 pm
joer macho muchas gracias!
madre mía como se le va a uno la cabeza después de estar probando 30 cosas distintas!!
Gracias otra vez!

Por ctwkkk

3 de clabLevel



Genero:Masculino  

Informático musical :)

chrome

 

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