//constructor public NCSprite(int pX, int pY, int pAncho, int pAlto, string pImagen, int pCuadros, int pAnimaciones, bool pActivo, bool pVisible, Color pColor, int pID, int pCapa, TiposColisiones pColisiones) : base(pX, pY, pAncho, pAlto, pColisiones) { cuadros = pCuadros; animaciones = pAnimaciones; activo = pActivo; visible = pVisible; capa = pCapa; ordena = false; animacionActual = 0; cuadroActual = 0; FH = false; FV = false; imagen = new Bitmap(pImagen); typeAnim = TipoAnmacion.sinAnimacion; dirAnim = DirAnimacion.normal; velAnim = 2; contAnim = 0; usarCopia = false; recorridoXc = 0; recorridoYC = 0; recorte = new Bitmap(ancho, alto); isTransparente = false; colorTransparencia = pColor; }
//Las animaciones pasan por aqui public void AvanzaAnimacion() { //verificamos si es sin animacion if (typeAnim == TipoAnmacion.sinAnimacion) { return; } if (typeAnim == TipoAnmacion.UnaVez) { if (cuadroActual >= cuadros) { cuadroActual = -1; typeAnim = TipoAnmacion.sinAnimacion; } if (cuadroActual < 0) { cuadroActual = 0; typeAnim = TipoAnmacion.sinAnimacion; } } if (typeAnim == TipoAnmacion.PingPong) { if (cuadroActual >= cuadros - 1) { dirAnim = DirAnimacion.reversa; } if (cuadroActual == 0) { dirAnim = DirAnimacion.normal; } } if (typeAnim == TipoAnmacion.Repite && contAnim >= 30 - velAnim) { if (cuadroActual >= cuadros - 1 && dirAnim == DirAnimacion.normal) { cuadroActual = -1; } if (cuadroActual == 0 && dirAnim == DirAnimacion.reversa) { cuadroActual = cuadros; } } contAnim += velAnim; if (contAnim >= 30) { cuadroActual += (int)dirAnim; contAnim = 0; if (cuadroActual >= cuadros) { cuadroActual = cuadros; } if (cuadroActual < 0) { cuadroActual = 0; } } }
private int radioC; //Radio al cuadrado para evitar la raiz //Constructor public NCSprite(int PosX, int PosY, int Ancho, int Alto, string Imagen, int Cuadros, int Animaciones, bool Activo, bool Visible) { posX = PosX; posY = PosY;; ancho = Ancho; alto = Alto; cuadros = Cuadros; animaciones = Animaciones; activo = Activo; visible = Visible; animacionActual = 0; cuadroActual = 0; imagen = new Bitmap(Imagen); //Carga la imagen BMP o PNG con los cuadros flipHorizontal = false; flipVertical = false; tAnimacion = TipoAnimacion.SinAnimacion; dAnimacion = DirAnimacion.Normal; velAnimacion = 2; contAnimacion = 0; dX = 0; dY = 0; usarCopia = false; recorridoXc = 0; recorridoYc = 0; recorte = new Bitmap(ancho, alto); colisionable = false; colisionado = false; xan = posX + ancho; yal = posY + alto; radioC = (ancho / 2) * (ancho / 2) + (alto / 2) * (alto / 2); }
public void AvanzarAnimacion() { if (tAnimacion == TipoAnimacion.SinAnimacion) { return; } if (tAnimacion == TipoAnimacion.UnaVez) { if (cuadroActual >= cuadros) { cuadroActual = cuadros - 1; //La deja en el ultimo cuadro tAnimacion = TipoAnimacion.SinAnimacion; //La frena } if (cuadroActual < 0) { cuadroActual = 0; //La deja en el primer cuadro tAnimacion = TipoAnimacion.SinAnimacion; //La frena } } if (tAnimacion == TipoAnimacion.PingPong) { if (cuadroActual >= cuadros - 1) { dAnimacion = DirAnimacion.Reversa; } if (cuadroActual == 0) { dAnimacion = DirAnimacion.Normal; } } if (tAnimacion == TipoAnimacion.Repite && contAnimacion >= 30 - velAnimacion) { if (cuadroActual >= cuadros - 1 && dAnimacion == DirAnimacion.Normal) { cuadroActual = -1; } if (cuadroActual == 0 && dAnimacion == DirAnimacion.Reversa) { cuadroActual = cuadros; } } //Avance del cuadro de animacion contAnimacion += velAnimacion; if (contAnimacion >= 30) //El programa procesa aprox. 30 img por seg. { cuadroActual += (int)dAnimacion; contAnimacion = 0; if (cuadroActual >= cuadros) { cuadroActual = cuadros - 1; } if (cuadroActual < 0) { cuadroActual = 0; } } }