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

Orientación clases

Estas en el tema de Orientación clases en el foro de Flash y Actionscript en Foros del Web. Hola, soy nueva en eso del AS3, todavía ando un poco perdida con el uso correcto de las clases. He creado un fla, al cual ...
  #1 (permalink)  
Antiguo 23/02/2011, 05:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
Orientación clases

Hola, soy nueva en eso del AS3, todavía ando un poco perdida con el uso correcto de las clases.

He creado un fla, al cual le he asociado una clase DocumentClass.as, tengo otras clases que me gustaría utilizar al mismo tiempo (PrecargaBasico.as, CargaXml.as...).

Pienso que podría utilizar la clase DocumentClass para hacer las llamadas al resto de las clases.Lo he intentado de esta forma pero me da error.



DocumentClass.as

package{
import PrecargaBasico;//una de mis clases
import flash.display.MovieClip;
public class DocumentClass extends MovieClip{
//funcion main
public function DocumentClass(){ trace("clase principal");
PrecargaBasico();
}
}
}

PrecargaBasico.as
package {
import flash.display.Stage;
import flash.display.MovieClip;
import flash.display.Shape;
import flash.text.TextField;
import flash.events.*

public class PrecargaBasico extends MovieClip{
private var texto:TextField;
private var marco:Shape;
private var barra:Shape;

public function PrecargaBasico():void{
trace("PrecargaBasico");
dibujaPreload();
posicionaPreload();
this.loaderInfo.addEventListener(ProgressEvent.PRO GRESS, onLoadProgress);
this.loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
//----------------------------------------
function onLoadProgress (event:ProgressEvent):void
{
var cargado:int = event.bytesLoaded;
var total:int = event.bytesTotal;
var porcentaje:int = cargado/total*100;
texto.text = "Cargado: "+String(porcentaje)+"%";
barra.width = porcentaje*marco.width/100;
}
//----------------------------------------
function onLoadComplete (event:Event):void
{
removeChild(texto);
removeChild(marco);
removeChild(barra);
nextFrame();
}

}
//----------------------------------------
public function dibujaPreload() {

texto = new TextField();
marco = new Shape();
barra = new Shape();
texto.textColor=0x0033CC;
marco.graphics.lineStyle(2, 0x0033CC);
marco.graphics.drawRoundRect(0, 20, 100, 10,0); barra.graphics.beginFill(0x0098FF);
barra.graphics.drawRect(0, 20, 100, 10);
barra.graphics.endFill();
addChild(texto);
addChild(marco);
addChild(barra);
}
//----------------------------------------
public function posicionaPreload() {
texto.x = marco.x = barra.x = stage.stageWidth /2 - marco.width /2
texto.y = stage.stageHeight /2 - texto.height /2
marco.y = barra.y = texto.y + 5
}

}
}


Error : 1136:Número de argumentos incorrecto. Se esperaba 1. - En la línea donde pone PrecargaBasico(); en DocumentClass.as
  #2 (permalink)  
Antiguo 23/02/2011, 06:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Orientación clases

He modificado la clase principal, y me da el siguiente error: (Creo que voy por buen camino, pero estoy un poco perdida)
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at PrecargaBasico/posicionaPreload()
at PrecargaBasico()
at DocumentClass()


package{
import PrecargaBasico;
import flash.display.MovieClip;

public class DocumentClass extends MovieClip{
public function DocumentClass(){
var xxx:PrecargaBasico = new PrecargaBasico();

}
}
}
  #3 (permalink)  
Antiguo 23/02/2011, 19:17
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: Orientación clases

Si estas usando AS2 esto no te servirá, eso es para AS3 (lo del package).

Un ejemplo en AS2:

Persona.as
Código AS2:
Ver original
  1. class Persona{
  2.   //miembros
  3.       private var Nombre:String;
  4.       private var Edad: Number;
  5.       private var Estatura:Number;
  6.  
  7. //constructor
  8.  
  9. public function Persona(MiNombre:String, MiEdad:Number,MiEstatura:Number){
  10.      this.Nombre=MiNombre;
  11.      this.Edad=MiEdad;
  12.      this.Estatura=MiEstatura;
  13. }
  14.  
  15. //métodos SET y GET
  16.  
  17. public function AsignarNombre(value:String):Void{
  18. this.Nombre=value;
  19. }
  20.  
  21. public function ObtenerNombre():String{
  22.    return this.Nombre;
  23. }
  24. ...
  25. ...
  26. ...
  27.  
  28.  
  29.  
  30.  
  31. }

Ahora en un archivo llamado Persona.fla en el primer fotograma presiona F9 y escribe lo siguiente:

Código AS2:
Ver original
  1. import Persona;
  2.  
  3. var MiPersona: Persona=new Persona("TuNombre",20,1.65);
  4.  
  5. trace("El nombre es:"+ObtenerNombre());
  6. trace("Tu edad es:"+ObtenerEdad());
  7. trace("Estatura"+ObtenerEstatura()+" mts");


Espero que te sirva
  #4 (permalink)  
Antiguo 23/02/2011, 19:18
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: Orientación clases

Espero que te sirva, solo sirve para AS2

Última edición por ARICARRARO; 23/02/2011 a las 19:21 Razón: repetir info
  #5 (permalink)  
Antiguo 24/02/2011, 04:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Orientación clases

Gracias, por tu interés, pero estoy programando en as3 y soy un poco novata, sigo en el punto anterior,atascada con ste error

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at PrecargaBasico/posicionaPreload()
at PrecargaBasico()
at DocumentClass()

Etiquetas: clases
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 02:32.