https://www.youtube.com/watch?v=0x5fEw8LGP4
Quiero evitar que se generen dibujos repetidos. Para eso exijo a los dibujos 2 cosas (no es suficiente pero 1ero debo resolver esto):
1- La cantidad de píxeles pintados debe ser >= Píxeles que entran en el largo de la hoja. Si en la hoja puede haber 2x2, debe haber mínimo 2.
2- La cantidad de nuevos pixeles pintados debe ser > 0. Cuando la hoja es de 2x2, los nuevos (N) son:
ON
NN
Cuando es de 3x3 son:
OON
OON
NNN
Es decir, los del extremo derecho y los inferiores.
Intento que los cuente para así determinar si debe mostrar el dibujo o salteárselo, pero llega un punto en que la cifra no disminuye o aumenta cuando no debe, no sé, estoy viendo cual puede ser el problema.
Código
actions for fotograma 1 PixelesdeLargo = 1; // En F3 se repite: function Variar () { PixelaModificar = "ColordePixel"+Puntero; ColordePixelaModificar = eval(PixelaModificar); // ¿El pixel puede cambiar de color? if (ColordePixelaModificar<1) { // Sí, hacer los cambios: set (PixelaModificar, ColordePixelaModificar+1); Col = new Color("Pixel"+Puntero); Col.setRGB(parseInt(0, 16)); trace ("Se pintó el pixel "+PixelaModificar); // Para juzgar: ¿El dibujo es repetido? SumadePintados = SumadePintados+1; // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica? if (Puntero/PixelesdeLargo == Math.floor(Puntero/PixelesdeLargo) or Puntero>MinPixelInferior) { // Sí, actualizar SumadePintadosNuevos: SumadePintadosNuevos = SumadePintadosNuevos+1; } trace ("SumadePintadosNuevos: "+SumadePintadosNuevos); // ¿El dibujo tiene píxeles donde no había en una hoja más chica... // y son al menos (PixelesdeLargo) píxeles? if (SumadePintadosNuevos>0 && SumadePintados>=MinSumadePintados) { // Sí, hacer dibujo y dar tiempo para verlo: Puntero = MaxPosiciondePuntero; trace ("\tMostrando dibujo."); // trace ("SumadePintados: "+SumadePintados); trace ("SumadePintadosNuevos: "+SumadePintadosNuevos); play (); } else { // No, el dibujo es repetido, no mostrarlo y hacer otro: Puntero = MaxPosiciondePuntero; trace ("\tRepetido, salteándolo."); // trace ("SumadePintados: "+SumadePintados); trace ("SumadePintadosNuevos: "+SumadePintadosNuevos); Variar(); } } else { // El pixel no puede cambiar de color, resetearlo: set (PixelaModificar, 0); Col = new Color("Pixel"+Puntero); Col.setRGB(parseInt("FFFFFF", 16)); trace ("Se reseteó el pixel "+PixelaModificar); SumadePintados = SumadePintados-1; // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica? if (Puntero/MaxPosiciondePuntero == Math.floor(Puntero/MaxPosiciondePuntero) or Puntero>=MinPixelInferior) { // Sí, actualizar SumadePintadosNuevos: SumadePintadosNuevos = SumadePintadosNuevos-1; } trace ("SumadePintadosNuevos: "+SumadePintadosNuevos); // ¿Hay un pixel anterior? if (Puntero>1) { // Sí, apuntar a ese: Puntero = Puntero-1; // Continuar haciendo el dibujo: trace ("\tHaciendo dibujo, apuntando al pixel anterior."); // trace ("SumadePintados: "+SumadePintados); trace ("SumadePintadosNuevos: "+SumadePintadosNuevos); Variar(); } else { // No, aumentar tamaño de hoja y reiniciar. gotoAndPlay (2); } } } actions for fotograma 2 PixelesdeLargo = PixelesdeLargo+1; // Colocados: Pixeles = 0; DistanciaEntrePixeles = 384/PixelesdeLargo; PosicionX = 64-DistanciaEntrePixeles; EnlaFilaActual = 0; PosicionY = 0; MaxPosiciondePuntero = PixelesdeLargo*PixelesdeLargo; Puntero = MaxPosiciondePuntero; // Píxeles pintados: SumadePintados = 0; // Esta variable parece eliminable pero antes era-1, // y podría ser que deba aumentar en ciertos casos: MinSumadePintados = PixelesdeLargo; MinPixelInferior = PixelesdeLargo*(PixelesdeLargo-1); // Píxeles pintados que no estaban en hojas de menos píxeles: SumadePintadosNuevos = 0; // Agregar píxeles en blanco: do { Pixeles = Pixeles+1; if (EnlaFilaActual<PixelesdeLargo) { EnlaFilaActual = EnlaFilaActual+1; PosicionX = PosicionX+DistanciaEntrePixeles; } else { PosicionX = 64; EnlaFilaActual = 1; PosicionY = PosicionY+DistanciaEntrePixeles; } trace ("El pixel "+Pixeles+" se colocó en "+PosicionX+", "+PosicionY); attachMovie("mPixel", "Pixel"+Pixeles, Pixeles); setProperty ("Pixel"+Pixeles, _x, PosicionX); setProperty ("Pixel"+Pixeles, _y, PosicionY); setProperty ("Pixel"+Pixeles, _width, DistanciaEntrePixeles); setProperty ("Pixel"+Pixeles, _height, DistanciaEntrePixeles); } while (Pixeles<MaxPosiciondePuntero); stop (); actions for fotograma 3 stop (); actions for Vacío onClipEvent (enterFrame) { _level0.Variar(); } actions for fotograma 4 stop (); actions for fotograma 5 gotoAndPlay (3);
¿Cómo lo soluciono?