Ver Mensaje Individual
  #1  
Antiguo 01-04-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Reputación: 17
alquimista Va por buen camino
Ayuda con objetos y Stringlist

Muy buenas....

Estoy haciendo una aplicacion para mover unos 10 sprites con determinadas secuencias (paro ,arriba,..). Cada secuencia puede tener diferentes recorridos que dibujo con el raton a partir de origen,destino,destino2,..destino n. A su vez cada recorrido se traduce a un movimiento con el tiempo de ese movimiento. Es un poco elaborado pero no se me ocurre otra forma.
ya tengo implementado el añadir,borrar,girar sprite y mas o menos el añadir recorrido con el raton.
Lo que me esta costando es controlar toda la estructura anterior. Uso arrays que puede que no se llenen.
El problema básico es el de manejar la lista de los arrays por si borro, inserto alguna secuencia o recorridos.

Ejemplo de Sprite.-

ListaSprites[i].Secuencia[j].Recorr[k].TradMov[x].Movi


He visto por internet que se pueden usar Stringlist con objetos, con lo que la linea.
Secuencia:Array of TSecuencia; se sustituiria por
Secuencia:Stringlist;
¿Seria mejor utilizar esto en vez de los arrays?



Y en algun sitio inicializar
ListaSprites[i].Secuencia:=TStringlist.Create;

MI pregunta es ,Si tengo que pasar por ese codigo varias veces

¿Como saber si ya he inicializado el Stringlist?
Se puede hacer lo mismo en las lineas marcadas en rojo en el codigo siguiente.


Agradeceria cualquier sugerencia, Luego todo esto lo guardare en algun fichero de texto, ini o lo que sea.

La idea es tener un puñado de secuencias grabadas y utilizarlas para cada sprite y asignarle dichas secuencias o crear nuevas.

Código:
...
var
 ListaSprites: array [1..10] of TSprite;
 ....

CONST
   MAXSEQ=512;
   MAXTRAD=10;
   MAXREC=50;

type
  TSprite = class
  public
    x, y, xAnterior, yAnterior: Integer;
    ColorTransparente: TColor;
    Imagen, Mascara,buffer: TImage;
    Seleccion: integer;
    deltx,delty:integer;
    Orientacion:integer;
    Secuencia:Array of TSecuencia;
    constructor Create;
    destructor Destroy; override;


 type
   TTipoMov=(mvStop,mvAdelante,mvAtras,mvDerecha,mvIzquierda);

    TTradMovil=class
    public
     Movi: TTipoMov;
     TiempoMov : TTime;
    end;

 Tpathmovil = class
  public
    Origenx, Origeny, Destinox, Destinoy : Integer;
    Color: TColor;
    Seleccion: integer;
    TiempoPath: cardinal;
    CteMetro: Cardinal;
    Tradmov: Array [1..MAXTRAD] of TTradMovil;
    constructor Create;
    destructor Destroy; override;
    procedure SetOrigen(x,y:integer);
    procedure SetDestino(x,y:integer);
    procedure SetOrDest(x,y,xx,yy:integer);
    procedure SetColor(ClColor:TColor);
    procedure Dibujar(Canvas:Tcanvas);
    function GetModulo:double;
    function GetAngulo:double;
    function GetTimems:double;
    function GetLonmetros:double;
  end;

  TSecuencia =class
   public
    Numero : integer;
    Nombre :String;
    Descripcion: String;
    Tiempo: cardinal;
    Recorr : Array [1..MAXREC] of TpathMovil;
  end;



PD: Agua....Agua... Vaya rollo que he escrito... Me he quedado seco.
NO llevo muy bien lo de los objetos pero mas o menos me estoy apañando. Aunque me falta mucha base.
Responder Con Cita