Ver Mensaje Individual
  #9  
Antiguo 30-04-2008
Avatar de grandmasterdari
grandmasterdari grandmasterdari is offline
Miembro
 
Registrado: ene 2008
Posts: 46
Reputación: 0
grandmasterdari Va por buen camino
Post otra aclaracion

Mi problema es este, cada TImage en un determinado tiempo cambia la imagen.
Cuando TTimer en interval==1 llama a los TImage y realiza un cambio en la imagen y esto funciona, da la impresion de que tiene una animacion.
El problema esta en que tengo una matriz de TImage donde hay una sola que tiene animacion (Image1), y el resto son imagenes que cuando pasa el mouse por arriba realiza un cambio de imagen y pasa de un foco apagado (la imagen claro) a un foquito prendido, el tema esta es que cuando muevo el mouse para todos lados se prenden y se apagan muchos foquitos a la vez y la animacion de Image1 se interrumpe y queda estatico.

captura en t0 (te sub cero, se lee como en fisica o analisis matematico)
captura1

captura en t1
captura2

el codigo que voy a colocar es mas informativo que para entiendan ya que el problema es el congelamiendo de la animacion del gato cuando el puntero del mouse se mueve a alta velocidad y realiza varios cambios en las esferas
codigo de las esferas verdes
Código:
void __fastcall TForm1::LosaEnter(TObject *Sender)
{
TImage1 *aux = (TImage1 *)(Sender);
if(aux->Enabled==true){
if(resolucion==1)
aux->Picture->LoadFromFile("imagenes\\losa1-640x480.bmp");
if(resolucion==2)
aux->Picture->LoadFromFile("imagenes\\losa1-800x600.bmp");
if(resolucion==3){
aux->Picture->LoadFromFile("imagenes\\losa1-1024x768.bmp");
}
}
}
void __fastcall TForm1::LosaLeave(TObject *Sender)
{
TImage1 *aux = (TImage1 *)(Sender);
if(aux->Enabled==true){
if(resolucion==1)
aux->Picture->LoadFromFile("imagenes\\losa-640x480.bmp");
if(resolucion==2)
aux->Picture->LoadFromFile("imagenes\\losa-800x600.bmp");
if(resolucion==3){
aux->Picture->LoadFromFile("imagenes\\losa-1024x768.bmp");
}
}
}

codigo de la animacion del gato
Código:
 
void __fastcall Gatos::Timer1Timer(TObject *Sender)
{
int aux;//variable que va a guardar la animacion tomada de la cola
int i,j;//variables donde se guardan las posiciones
if(t==0){
//reproducir sonidos
if(primson!=NULL){//lista cargada
son=primson;
while(son!=NULL){
if(son->animno==currentanim){
if(son->imageno==p->id){
//reproducir
PlaySound(son->path,NULL,SND_ASYNC);
}
}
son=son->prox;
}
}
//fin reproducir sonidos
p=p->prox;
if(p->prox==NULL){
t=-1;
}
else{
t=p->t;
Width=p->w;
Height=p->h;
Left=resleft-p->xc;
Top=restop-p->yc;
this->Picture->LoadFromFile(p->str);
}
}
else{
if(t>-1)
t--;
}
//descuento del tiempo total
if(tt<=0){
control=true;
//posicionar si es que hay cola en posicionar;
if(primcolapos!=NULL){//hay una posicion en espera
i=primcolapos->i;
j=primcolapos->j;
colapos=primcolapos->prox;
delete primcolapos;
primcolapos=colapos;
posicionar(i,j);
}
//cambiar anim si es que hay cola en anim
if(primcolaanim!=NULL){//hay animaciones en la cola
aux=primcolaanim->n;
colaanim=primcolaanim->prox;
delete primcolaanim;
primcolaanim=colaanim;
cambiaranim(aux);
}
this->Parent->Enabled=true;
}
else
tt--;
}
Responder Con Cita