el codigo esta bien y funciona, el problema es COMO funciona. me intento epxlicar mejor
tengo la ventana vale, y cargo un personaje, con un fondo croma, digamos que rojo puro. lo animo y le hago andar (el fondo de la ventana es negro) y el personaje se mueve sin problemas por la pantalla, pero si meto otro objeto, pongamos una caja, la oclusion no la produce el personaje al pasar por encima, la produce el fondo SUPESTAMENTE trasparente antes de que el personaje llegue a estar sobre la caja en cuestion. pongo un ejemplo:
tengo una imagen con un dibujo dentro. la imagen mide 200 pxls de ancho. el personaje mide 100pxls, esta centrado en la imagen, por lo que sobran 50 pxls de margen a cada lado. vale, el fondo de la imagen es un croma de color rojo por ejemplo. pongo la imagen en mi aplicacion y pongo otra estatica y la cargo a posteriori. cuando muevo la primera imagen, deberia ocultar la segunda cuando pasara por encima el personaje, pero no, la oculta lo que es el fondo "trasparente", esos 50pxls de margen que tenia la imagen estan ocultando la otra imagen cuando supestamente no deberian aparecer porque estan en alpha...
mi codigo entero seria un poco largo para poner, son basicamente dos clases: frame y sprite. tengo 'n' frames por cada sprite y al "andar" lo que hago es que el sprite vaya cargando los frames que le "pertenecen" por orden.
podriais decir: bueno, pues no dejes margen... pero el aspecto visual queda horrendo cuando ves un cuadrado feo moviendose por la pantalla que hace desaparecer objetos sin siquiera estar tocandolos que misteriosamente cuando se ha alejado ese margen se van mostrando poco a poco...
para ilustrar mi problema colgare en una web temporal la carpeta debug con las imagenes y eso y el ejecutable. manejarlo es sencillo: flechas de izquiera y derecha y para salir escape... he exagerado un poco lo que es el margen izquierdo para ejemplificar bien mi problema.
http://maije2.iespana.es/videojuego/
muchas gracias
atentamente