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.