PDA

Ver la versión completa : Cuelgue de fenix por causas desconocidas



jean la montard
04/03/2008, 23:51
Buenas
Estoy haciendo pruebas con cosillas cogidas de tutoriales y a pesar de ser muuuy sencillito , el hijo de su madre se cuelga cuando en un "menu" de dos opciones (salir o mostrar una imagen en pantalla) al elegir la segunda se me cuelga,empezamos bien.El codigo esta muuuuy comentado mas que nada porque no tengo ni idea y para saber que es lo que hace cada cosa mas o menos.



// --------------------------------------------------------------------------
// Ultimate Fenix Joust by jeanmontarde
// Created on 18:25 - 27/02/08
// --------------------------------------------------------------------------


BEGIN

Full_screen=false; ///pantalla completa si o no
set_mode(320,240,16);///modo de pantalla y color
set_fps (30, 4);///Establecer frameado
load_fpg("graficos.fpg");
put_screen(0,001);///pone grafico en pantalla
From z=0 to 49;frame; End///retrasa la desaparicion en pantalla
fade(0,0,0,2);///fundido en negro
While(fading) frame; End///fundido en negro
fade_on();///encender pantalla
clear_screen();///limpiar pantalla
Menu();///llamada proceso menu


END


Process menu()

Begin
write (0, 160, 10, 1, "Joust-Prueba de control") ;///escribir "" con coordenadas
write (0, 160, 30, 1, "Original por Williams en 1982");///escribir "" con coordenadas
write (0, 160, 40, 1,"Remake por Lokura Entertaiment");///escribir "" con coordenadas
write (0, 160, 50, 1, "Codigo y graficos por");///escribir "" con coordenadas
write (0, 160, 60, 1, "Jean La Montard");///escribir "" con coordenadas
write (0, 160, 140, 1, "Pulsa A para salir") ;///escribir "" con coordenadas
write (0, 160, 150, 1, "Pulsa B para prueba de movimiento");///escribir "" con coordenadas
write (0, 160, 200, 1, "29-2-2008");///escribir "" con coordenadas

Loop///inicia bucle
If (key(_control))
fade(0,0,0,2);///fundido en negro
while (fading) frame; end///fundido en negro
break; end///condicion de ruptura
If (key(_space))
prueba(); end
Frame;///poner en pantalla
END
END

Process Prueba()

Begin

Put_screen(0,1);

Loop

If (key(_control))
break; end

End

END

Rivroner
05/03/2008, 00:05
¿Qué Fenix usas, el beta 6 o el Ultimate Fenix?

¿La opción con la que se te cuelga que hace exactamente?

jean la montard
05/03/2008, 00:09
utilizo la ultimate fenix que incluyo kounch en sus plantillas para mac,

la opcion basicamente muestra una imagen en pantalla en espera de que pulses una tecla pero se cuelga en el menu, antes de llegar... tal vez sea que la llamada del proceso no esta bien hecha no se , a mi no me convence mucho XD

chipan
05/03/2008, 00:21
Cambia esto:


Process Prueba()

Begin

Put_screen(0,1);

Loop

If (key(_control))
break; end

End

Por esto otro:


Process Prueba()

Begin

Put_screen(0,1);

Loop

If (key(_control))
break; end
frame;
End


Cada proceso debe tener su llamada a frame, si no, el programa se bloquea esperando un frame.

jean la montard
05/03/2008, 00:23
***** que gilipollez ya no me pasa mas :P

Rivroner
05/03/2008, 00:42
Gracias Chipan :) Yo tb me lo apunto, aquí otro pardillo :D

chipan
05/03/2008, 01:36
Es que llavo mas años programando en fenix que los años que tiene el propio fenix.

Drumpi
05/03/2008, 02:13
Solo una cosilla más: cuando pongas la imagen en pantalla, despues de seleccionar del menu, o duermes el proceso menu desde el proceso imagen o haces que se salga del menu, porque tal como lo tienes puesto, si dejas pulsada la tecla espacio, te creará un proceso por frame, y te aseguro que es muy dificil pulsar un unico frame ^^

Rivroner
05/03/2008, 03:04
Venga, otro consejito pa la libretica de un paquete Fenixero :D

Gracias Drumpi :)

chipan
05/03/2008, 08:37
Efectivamente, lo suyo sería poner


If (key(_space))
prueba(); break; end

jean la montard
05/03/2008, 10:53
Pensaba poneros el codigo para que me lo depurarais un poquito , cuando terminara , pero si lo haceis antes mejor :D
Muchas gracias a ambos por la ayuda , asi da gusto embarcarse en proyectos (o proyectillos como el mio)

Drumpi
05/03/2008, 15:59
Hombre, yo prefiero coger el proceso imagen y poner la linea:
signal(father,s_sleep);
Justo al principio (y quizás un frame por si acaso), de esta forma, cuando acabes de hacer lo que sea con la imagen, despiertas al padre y sigues con el menu.
Todo depende de qué y cómo lo quieras implementar.