Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Tachikomaia en 25 Febrero 2026, 23:20 pm



Título: Construir pisos cada vez más cortos, más arriba y más a la derecha.
Publicado por: Tachikomaia en 25 Febrero 2026, 23:20 pm
Como esto:
(https://i.ibb.co/vKHY6M3/Pisos-truchos.png)

Lo hice así:
Código
  1. Images = 0;
  2. do {
  3. Name = "Piso"+Images;
  4. attachMovie("sDKPiso", Name, Images);
  5. setProperty (Name, _x, Images*27);
  6. setProperty (Name, _y, 568-Images*18);
  7. setProperty (Name, _xscale, 100-Images*3.4);
  8. Images++;
  9. } while (Images < 30);

Pero ven que los dibujos son cada vez más pequeños hacia arriba, no es que los pisos tengan menos trozos sino que es la imagen de abajo cada vez menos larga.

Yo quiero que los dibujos sean tosos iguales, que cambie la cantidad.

No parece tan fácil.

Deben insertarse objetos vacíos porque así cuando Mario salte o camine se chequea si toca ese objeto, no cada pequeño, o sea, muchos pequeños se ponen en esos vacíos, y luego se chequean esos "ex vacíos".

Creo que con esto se podrían insertar los objetos vacíos:
Código
  1. Images = 0;
  2. do {
  3. Name = "Piso"+Images;
  4. attachMovie("sDKPiso", Name, Images);
  5. setProperty (Name, _x, Images*27);
  6. setProperty (Name, _y, 568-Images*18);
  7. Images++;
  8. } while (Images < 30);
Simplemente debo borrarles el contenido a las imágenes sDKPiso.

El tema es cómo insertar los dibujos en esos objetos.

Imagino que debe ser algo como:
Código
  1. Pisos = 0;
  2. do {
  3. Name = "Piso"+Pisos;
  4. attachMovie("sDKPiso", Name, Pisos);
  5. setProperty (Name, _x, Pisos*27);
  6. setProperty (Name, _y, 568-Pisos*18);
  7. PartesDelPiso = 0;
  8. PartesRequeridas = 31-Pisos;
  9. do {
  10. SubName = "Parte"+PartesDelPiso;
  11. Name.attachMovie("sDKPisoParte", SubName, PartesDelPiso);
  12. setProperty (SubName, _x, 32*PartesDelPiso);
  13. setProperty (SubName, _y, 0);
  14. PartesDelPiso++;
  15. } while (PartesDelPiso <= PartesRequeridas);
  16. Pisos++;
  17. } while (Pisos < 30);

Falló en agregar las partes, sólo agrega los objetos vacíos.
      
Puse esto
eval(Name).attachMovie("sDKPisoParte", SubName, PartesDelPiso);
y tampoco sirvió.

Esto
eval(Name+".attachMovie("sDKPisoParte", SubName, PartesDelPiso)");
me dice
Citar
Escena=Escena 1, Capa=Capa 2, Fotograma=1: Line 18: Se espera ')' o ','
           eval(Name+".attachMovie("sDKPisoParte", SubName, PartesDelPiso)");

Escena=Escena 1, Capa=Capa 2, Fotograma=1: Line 19: Se espera 'while'
           setProperty (SubName, _x, 32*PartesDelPiso);

Escena=Escena 1, Capa=Capa 2, Fotograma=1: Line 24: Se ha detectado un '}' inesperado
     } while (Pisos < 30);

Tengo otro programa que funciona así
eval(NombreDeCarta).attachMovie("s"+Tipo, NombreDeSigno, SignosAgregados);
o sea esto debería servir
eval(Name).attachMovie("sDKPisoParte", SubName, PartesDelPiso);

Puse traces antes de eso, dicen
Insertando Parte0 en Piso0 con depth 0
Insertando Parte1 en Piso0 con depth 1
(...)
Insertando Parte31 en Piso0 con depth 31
Insertando Parte0 en Piso1 con depth 0
etc
O sea no parece haber problema. Cada depth es independiente en cada objeto se supone.

Puse que sDKPisoParte sea el link a una imagen cualquiera, no a un mapa de bits ni a un objeto con mapa de bits. Y funcionó. O sea que attachMovie no sirve si lo que se inserta tiene mapas de bits parece. No, funciona si lo que inserto es otro objeto, incluso si le pongo un mapa de bits. No parece tener sentido. Pero el objeto que quiero que se inserte no lo hace. Ya vi, de tanto lío tenía algo mal. Los mapas de bits no se pueden insertar, pero sí objetos que tengan mapas de bits. No me funcionaba porque tenía que el nombre sDKPisoParte este asociado al mapa de bits y no al objeto que lo tiene. Quedó así:
(https://i.ibb.co/cXsBHTRs/Solo-1.png)
¿Por qué sólo se insertó una parte en cada piso?


Título: Re: Construir pisos cada vez más cortos, más arriba y más a la derecha.
Publicado por: Tachikomaia en 3 Marzo 2026, 01:29 am
Estaba mal la ruta de los set Property.

Los objetos se llamaban "Parte"+PartesDelPiso, pero están en Piso0, Piso1, etc, por lo tanto las rutas hacia ellos son Piso0.Parte0 por ejemplo.

Código
  1. Pisos = 0;
  2. do {
  3. Piso = "Piso"+Pisos;
  4. attachMovie("sDKPiso", Piso, Pisos);
  5. setProperty (Piso, _x, Pisos*16);
  6. setProperty (Piso, _y, 568-Pisos*18);
  7. PartesDelPiso = 0;
  8. PartesRequeridas = 30-Pisos;
  9. do {
  10. Parte = "Parte"+PartesDelPiso;
  11. trace("Insertando "+Parte+" en "+Piso+" con depth "+PartesDelPiso);
  12. eval(Piso).attachMovie("sDKPisoParte", Parte, PartesDelPiso);
  13. RutaDeParte = Piso+"."+Parte;
  14. setProperty (RutaDeParte, _x, 32*PartesDelPiso);
  15. setProperty (RutaDeParte, _y, 0);
  16. PartesDelPiso++;
  17. } while (PartesDelPiso <= PartesRequeridas);
  18. Pisos++;
  19. } while (Pisos < 30);

Pero cambié un poco lo que quiero, quiero que el piso de arriba del todo empiece en la mitad de la pantalla, o más o menos porque está difícil. Los de abajo cada vez más hacia la izquierda.

Con el código ese queda así:
(https://i.ibb.co/nMqy5MQ7/Demasiados.png)

Claro que no quiero una pirámide, los pisos deben llegar hasta la derecha, pero no quiero que se inserten piezas de más, pero no entiendo por qué los de abajo tienen tantas más... ¿qué hago?