Comunidad de diseño web y desarrollo en internet online

Llamar a función de un archivo .as desde otro archivo .as

Citar            
MensajeEscrito el 03 Feb 2009 10:41 pm
Hola a todos, soy bastante nuevo en flas, as3, flex...
estoy desarrollando una aplicación Flex que utiliza la API de GoogleMaps para flash para trabajar con mapas.

Tengo un principal.xml formado por un componente que he creado, componente1.xml y un .as externo
<mx:Script source="funciones_mapa.as"> donde tengo defeninidas las funciones para inicializar el mapa.

El componente1.xml también tiene un script externo <mx:Script source="../tipo_de_marca.as"> con funciones para trabajar con las marcas de los mapas.

El problema está en que en mi funciones_mapa.as en algunos de los métodos que utilizo para incializar el mapa tengo que acceder a otras funciones definidas en tipo_marca.as que es donde tengo las funciones que trabajan con marcas sobre el mapa.

Hay alguna forma en AS3 de usar los métodos definidos en un .as dentro de otro .as?
Si no es posible, cual es la solución, tener un único .as con todo el codigo actionscript de mi proyecto?

Gracias, un saludo.

Por riestra

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2009 12:47 am
No entiendo bien, ¿cual es la diferencia entre una clase y un as?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2009 02:16 am
llamar una clase as a otra clase as yo lo hago se la siguiente manera

Código :

package {
        private var NuevoTextoEjemplo=String
   public class PrimerClassEjemplo {
      public function PrimerClassEjemplo ( ):void{
               NuevoTextoEjemplo="hola"
      }
   }
}

y en el segundo lo llamo asi

Código :

package {
   public class SegundoClassEjemplo {
      import PrimerClassEjemplo;
      public function SegundoClassEjemplo():void {
         var nuevoHola:PrimerClassEjemplo=new PrimerClassEjemplo () ;
                        trace(nuevoHola)
      }
   }
}


luego ya es cuestion de como lo hayas programado XDXD suerte

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2009 02:19 am
perdonar por el doble post pero el primer codigo lo puse mal debería ser asi XD

Código :

package {
    
   public class PrimerClassEjemplo {   
      private var NuevoTextoEjemplo=String
      public function PrimerClassEjemplo ( ):void{
               NuevoTextoEjemplo="hola"
      }
   }
}


perdon XD

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2009 09:33 am
Pero yo no trabajo con clases, solamente tengo definidos métodos en cada archivo actionscript.
No quiero crear clases ni paquetes, sería:

funciones_mapas.as
private function funcion1( a:String): void{
//codigo
}
----------------------------------------
tipo_marca.as
private function funcion2(b:String):void{
c:String="Hola";
funcion1(c);
//codigo
}




Puedo hacer eso de alguna otra forma, sin necesidad de definir package y tener que crear clases y objetos cada vez que necesite llamar a funcion1 o funcion2??
Gracias.

Por riestra

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2009 09:44 am
A eso apuntaba mi primera pregunta, a determinar tu nivel base. Pero dejo mejor a Lynxcraft explicarte la diferencia entre un include, una package y porqué no puedes usar métodos privados a menos que estés en una clase. La entidad "as" es solo una extensión de fichero ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2009 10:03 am
Si, se que .as solo es la extensión, cuando escribía .as era para abreviar escribir "un fichero actionscript3".
Aclaro ese punto, en mi caso, podría usar simplemente imports de la manera que he explicado antes, o tendría que usar includes,o la única forma sería crearme clases y objetos con package?

La cuestión es que como ya dije, como utilizo la API de GoogleMaps, no qería meterme en crear objetos y clases para no hacerlo más engorroso, tan solo necesito funciones o métodos que se pueden invocar sin crear objetos ni establecer jerarquías.

Gracias.

Por riestra

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2009 02:06 pm
primero no se si te dejaría utilizar el include como lo hace normalmente el as 2 eso ya no lo utilizo asi que no lo se con certeza XDXD
lo segundo no hace falta precisamente que tengas que crear objetos cada ves que nesesites una funcion en concreto solo hace falta que crees un package que contenga las funciones staticas necesarias me explico
este packege lleva 4 funciones públicas estáticas tres de ellas son de retorno y la ultima haría lo que le pongas ok XDXD

Código :

package {
   public class PAketeDeFunciones{
      public static  function FuncionHola():String {
         return "HOlA" ;
      }
      public static function FuncionAdios():String {
         return "ADIOS" ;
      }
      public static function FuncionSuma(Numero1:Number,Numero2:Number):Number {
         return (Numero1+Numero2) ;
      }
      public static function FuncionLOqueSea():void {
         //el codigo que quieras
      }
   }
}


el el fla o en otro as lo llamarías de este modo

Código :

import PAketeDeFunciones
trace(PAketeDeFunciones.FuncionHola())// devuelve "HOlA"
trace(PAketeDeFunciones.FuncionAdios())// devuelve  "ADIOS"
trace(PAketeDeFunciones.FuncionSuma(5,8))// devuelve 13

desventajas que no puedes utilizar algunas cosas como los this también las variables que va utilizar tienes que ser de tipo estático o conts en fin ahi ay un lio XDXD

por otro lado y personalmente creo que es lo mejor puedes hacer lo mismo que arriba pero no de forma estatica si no creando un objeto class


Código :

package {
   public class PAketeDeFunciones{
      public function FuncionHola():String {
         return "HOlA" ;
      }
      public function FuncionAdios():String {
         return "ADIOS" ;
      }
      public function FuncionSuma(Numero1:Number,Numero2:Number):Number {
         return (Numero1+Numero2) ;
      }
      public function FuncionLOqueSea():void {
         //el codigo que quieras
      }
   }
}


y la llamada no seria ni muy complicada

Código :

import PAketeDeFunciones
var Nfuncion:PAketeDeFunciones=new PAketeDeFunciones()
trace(Nfuncion.FuncionHola())// devuelve "HOlA"
trace(Nfuncion.FuncionAdios())// devuelve  "ADIOS"
trace(Nfuncion.FuncionSuma(5,8))// devuelve 13



no si esto te ayudé pero suerte

Por Lynxcraft

33 de clabLevel



 

firefox

 

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