Tengo una serie de imágenes que componen una animación. Las cargo en mi programa mediante load_png (ya que es lo mejor para ciertas cosas) y cuando aparece el proceso en pantalla animado, a su derecha aparece una línea vertical (no en todos los frames creo) con la misma paleta de colores que la animación, pero he revisado todas las imágenes y ninguna tiene ese rebordecillo ¿por que puede ser?
Lo he pasado a camara lenta y la línea aparece incluso antes que el primer gráfico del proceso. No es una línea contínua, sino que tiene varios colores y parpadea ¿? es como un problema de vídeo o algo así.
uso la 0.73
ejemplo, por favor...
Si te refieres a ejemplo de los procesos es este:
[code language="bennu"]process explosiones_miniradar(int oponente, int jugador);
private
int j;
valla_miniradar coche;
begin
region=oponente;
x=rand(miniradar_carril[oponente][0],miniradar_carril[oponente][miniradar_num_carriles]);
y=rand(miniradar_limite_inferior[oponente],miniradar_limite_superior[oponente]);
repeat
if(j>=2)
graph=explosion;
i++;
j=0;
end
j++;
if(coche=collision(type vehiculo_miniradar))
if(y+40<coche.y && y+85>coche.y && coche.x<x+5 && coche.x>x-5) //solo colisiona con la parte de abajo de la explosión
rueda_bouncing(x,y+50,0.1,0.1,oponente);
rueda_bouncing(x,y+50,-0.1,0.1,oponente);
rueda_bouncing(x,y+85,0.1,-0.1,oponente);
rueda_bouncing(x,y+85,-0.1,-0.1,oponente);
signal(coche,s_kill_tree);
end
end
frame;
until(i>=25)
end [/code]
Y el que carga los gráficos es este otro
[code language="bennu"]global
int explosion[25];
int rueda[5];
string filename[25];
string extension=".png";
string ruta="exploss\exploss";
end
process carga_explosiones();
begin
from i=0 to 9;
filename=ruta+"000"+i+extension;
explosion=load_png(filename);
end
from i=10 to 24;
filename=ruta+"00"+i+extension;
explosion=load_png(filename);
end
ruta="rueda\rueda";
from i=0 to 4;
filename=ruta+"000"+i+extension;
rueda=load_png(filename);
end
end[/code]
Ahí te dejo también los archivos de imagen.
siempre me refiero a un ejemplo compilable... asi no me tengo que poner yo a crear todo el entorno de prueba... y me pongo a mirar directo el error y no pierdo tiempo en otras cosas que no hacen al problema, ademas que no puedo realmente perder ese tiempo... te agradezco tu ayuda y comprension al respecto...
Prueba con un pequeño codigo donde solo muestres la animación para ver si sigue apareciendo esa linea que dices. O bien postea el proyecto completo para poder comprobarlo.
Lo siento mucho splinter, no he reparado en ello, ahora mismo lo hago compilable con un simple copy&paste.
Aquí lo tienes splinter. Lo único que tendrás que modificar la ruta de las imágenes a donde tu las tengas, el solito se encarga de cogerlas una a una, solo combia la ruta.
Por cierto, ese feo efecto sigue apareciendo.
[code language="bennu"]import "mod_draw"
import "mod_key"
import "mod_timers"
import "mod_joy"
import "mod_time"
import "mod_string"
import "mod_proc"
import "mod_effects"
global
int explosion[25];
string filename[25];
string extension=".png";
string ruta="c:\fenix\pixfiesta\radartrafico\exploss\exploss";
int miniradar_limite_superior[4]=0,0,0,300,300;
int miniradar_limite_inferior[4]=0,250,250,550,550;
int miniradar_carril[4][4]=0,0,0,0,0,160,194,230,260,290, /*Carriles Jugador 1*/
530,564,601,638,670, /*Carriles Jugador 2*/
160,194,230,260,290, /*Carriles Jugador 3*/
530,564,601,638,670; /*Carriles Jugador 4*/
local
int i;
process carga_explosiones();
begin
from i=0 to 9;
filename=ruta+"000"+i+extension;
explosion=load_png(filename);
end
from i=10 to 24;
filename=ruta+"00"+i+extension;
explosion=load_png(filename);
end
end
process explosiones_miniradar(int oponente);
private
int j;
begin
x=rand(miniradar_carril[oponente][0],miniradar_carril[oponente][4]);
y=rand(miniradar_limite_inferior[oponente],miniradar_limite_superior[oponente]);
repeat
if(j>=2)
graph=explosion;
i++;
j=0;
end
j++;
frame;
until(i>=25)
end
begin
set_mode(800,600,16);
set_fps(60,0);
carga_explosiones();
repeat
explosiones_miniradar(rand(1,4));
frame;
until(key(_esc));
end[/code]
Bien, encontrado el problema...
Converti los mapas con el xnview a png y ahi los graficos no dejan basura... pero sin embargo siguian viendose como si tuviera un serruchado de bordes... esto se debia a un error en el modulo de carga de png, cuando convierte mapas de menos de 8bits a mapas soportados por bennu/fenix... y cuando el ancho del png es impar. (la basura es culpa del mismo error)
Ahora tenes varias soluciones:
1) usar png de 8 bits de color o mas
2) usar png de ancho par
3) esperar la nueva version del modulo mod_map
cualquiera es valida...
por cierto, espectacular las explosiones... con un alpha quedan barbaras...
Gracias por el reporte del error...
splinter, eres un máquina solucionando errores!! Joder ojala los encontrara yo tan rápido (y encima los solucionas!) como tú.
O sea, que lo que tengo que hacer es aumentar el tamaño de los mapas hasta un numero par o la profundidad de color no? Creí que ya eran de más de ocho bits, que cosas.
Entonces no tengo que usar el xnview no? con las soluciones que has dicho basta. Por cierto, el nuevo módulo ¿será retrocompatible? Es que todavía no he solucionado los problemas de las librerias que tenía.
PD: ¿Que valor de alpha le has puesto? veré a ver que tal.
no entiendo eso de retrocompatible...
para las dlls que te faltan tenes que bajar dlls-extenas-wip7.x.rar y ogg*.rar.
pero que version estas usando entonces?
no recuerdo el alpha, fue una prueba rapida, proba valores entre 180 y 240, a ver que tal...
estoy usando la 0.73. La 0.75, después de incluir todas las librerías me sigue dando errores de que no encuentra tal o cual libreria, pero ya es el propio programa no un error de windows. Con la 0.73 no he tenido ningún problema, la ogg.dll viene con la 0.73.
cuando faltan dlls dice que no puede cargar tal o cual modulo, pero no se pueden saber cuales faltan a menos que uses un programa como "dependency walker" sobre las dlls que se incluyen y veas que dlls te estan dando error.
No me dice que modulo solo dice, could not load library, no especifica.
Otra cosa splinter, es una sujerencia, pero no voy a abrir un post para esta tontería, es que en el stderr ya que da error con un proceso cuando intenta acceeder a otro no activo estaría bien, si se tiene su id, que dijera que tipo de proceso es aquel al que se intentó acceder, no se si será posible.
Un saludo.
Hola.Con respecto a esto quiero hacer dos comentarios/preguntas.
1) No se como capturar los mensajes de error del interprete. ¿Podrian poner un ejemplo de un bat?
2) ¿Existe una variable que cumpla la funcion de "name"? es decir que guarde el nombre del proceso. En caso de que no ¿Es posible la implementacion?
Quote from: Danielo515 on September 21, 2008, 01:19:06 PM
No me dice que modulo solo dice, could not load library, no especifica.
Otra cosa splinter, es una sujerencia, pero no voy a abrir un post para esta tontería, es que en el stderr ya que da error con un proceso cuando intenta acceeder a otro no activo estaría bien, si se tiene su id, que dijera que tipo de proceso es aquel al que se intentó acceder, no se si será posible.
Un saludo.
compila usando el parametro -g
y luego corre el programa usando -d
1) bgdi > log 2>err
2) cual es el uso que queres darle a esto?
de hecho no es nada que no pueda hacerse sin esa variable, pero seria comodo para no tener que comparar ids. Por ejemplo podria servir para saber que tipo de proceso es el padre del actual con un father.name.
import "mod_say";
process p3()
begin
if (father.reserved.process_type == type p1)
say ("father is p1");
else
say ("father isn't p1");
end
end
process p2()
begin
p3();
end
process p1()
begin
p3();
p2();
end
begin
p1();
end
Gracias. Desconocia la existencia de esa variable. Quiero aprovechar para sugerir que el "Diario de Avances" sea realmente eso, es decir, un log con las novedades (nose cuanto tiempo tendra reserved.process_type pero para mi es una novedad). Me refiero a que no haya comentarios acerca de bugs o felicitaciones (no es que no te las merezcas), por que hacen mas dificil la lectura. No necesariamente tiene que ser ese topic, puede crearse uno nuevo. Y estaria bueno que se publiquen en diferentes lugares los bugs corregidos y las novedades. Es solo una sugerencia. Saludos
no es una novedad, es de toda la vida...
hubo un momento que ponia todos los bugs corregidos, pero la cosa se hizo demasiado larga...
Bueno acabo de encontrar algo de documentacion en fenixwiki acerca de reserved. Es de fenix, nose si sera del todo compatible pero dejo el link por si a alguien le sirve:
http://www.fenixdocs.com/index.php/Reserved
compila con debug -d y veras que contiene reserved... y no, no es compatible totalmente...