Foros del Web » Creando para Internet » Flash y Actionscript »

Funciones AS3 :partido:

Estas en el tema de Funciones AS3 :partido: en el foro de Flash y Actionscript en Foros del Web. Estimados: Me estoy partiendo la cabeza migrando un código de AS2 a AS3, la verdad llevo mucho tiempo programando en AS2, pero AS3 ha resultado ...
  #1 (permalink)  
Antiguo 23/11/2010, 22:32
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
Sonrisa Funciones AS3 :partido:

Estimados:

Me estoy partiendo la cabeza migrando un código de AS2 a AS3, la verdad llevo mucho tiempo programando en AS2, pero AS3 ha resultado completamente distinto.

Necesito crear una función global (Ej: calcular() ) y que realice una serie de cálculo con algunos textbox que tengo incorporados.

El problema es que no puedo definir la función calcular().

1.- He leido que hay que crear un archivo .as y dejarlo en la misma carpeta, el archivo se llama "codigo.as" y tiene el siguiente código:

Código PHP:
package
{
    public class Global
    {
        public static function 
mostrar():void
        
{
            
//
            
trace("Hola mundo");
        }
    }

Luego en un fotograma intento llamar a esta función de la siguiente forma:


Código PHP:
Global.mostrar(); 
Pero el depurador me tira el error:

Error 1180: LLamada a un método posiblemente no definido

Para solucionar esto, he intentado "importar la función" utilizando el código

Código PHP:
import Global.mostrar
Pero el código sigue sin mostrar. Estoy seguro que es uno de los pasos que estoy haciendo mal y no lo veo (quizás por lo agotado que me tiene esta migración de código) o por la experiencia en AS3 que, tristemente, no poseo.

Esta migración la realizo porque necesito comunicar este flash con Flex (lo cual funciona sin problemas) pero necesito realizar esos cálculos pa' asegurarme que todo marche sobre ruedas.

Agradeceré su ayuda
__________________
:pensando: Ramon Martinez... Chile :adios:
  #2 (permalink)  
Antiguo 23/11/2010, 23:19
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Respuesta: Funciones AS3 :partido:

Se importan clases no funciones. El archivo tiene que tener el nombre de la clase: "Global.as" por ejemplo y mientras este en el mismo folder se dice que es parte del "paquete" default por lo que no es necesario importar.
  #3 (permalink)  
Antiguo 24/11/2010, 06:57
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
Sonrisa Respuesta: Funciones AS3 :partido:

Hay funcionó, muchas gracias...

Ahora, tengo otro problema.

En la función mostrar, quiero utilizar texto de un textbox que tengo en la película original. Intenté colocar la ruta completa ( contenedor.ovalo1.valor.text ) pero me arroja que el objeto es inalcansable.

¿Hay alguna forma de hacer eso?

P.D. Esta migración ha sido un dolor de cabeza
__________________
:pensando: Ramon Martinez... Chile :adios:
  #4 (permalink)  
Antiguo 24/11/2010, 09:39
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Respuesta: Funciones AS3 :partido:

Lo que tienes que hacer es ponerle una clase a tu documento, la clase tiene que extender Sprite o MovieClip y todos los movieclips que tengas con nombre (identifier) se convierten en propiedades publicas de la clase y los puedes acceder como tales, por ejemplo:
Código ActionScript:
Ver original
  1. package {
  2.     public class Main extends Sprite {
  3.         public function Main() {
  4.             this.cuadro.x = 50; // Supon que tienes un movieclip con el nombre cuadro en el fla
  5.         }
  6.     }
  7. }

Etiquetas: funciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:46.