Erro surface.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Erro surface.

Mensagem por AxeInLine em Qua 25 Fev 2015, 19:45

Bom dia, Boa tarde ou Boa noite.

Hoje mais cedo, estava trabalhando no meu jogo, e me deparei com uma duvida, depois de algum tempo (ou seja, encher o Mateus com as minha ideias) conseguir achar a solução, no caso, Surfaces.
O problema foi quando já terminei quase tudo, fui testar, e quando fui maximizar (coisa que não tinha feito até então porque o port on screen estava maior) de o seguinte erro:



Agora... Sei +/- o motivo do erro, mas não sei concertar. Vou deixar os códigos abaixo, se alguém quiser me ajudar, e quiser mais detalhes, eu tento falar.

obj_control:

Código:
//Game Start
globalvar surf_e, surf_p;

surf_p = surface_create(160,320);
surf_e = surface_create(160,320);

//Draw
draw_surface(surf_p,0,0);
draw_surface(surf_e,160,0);

obj_player:

Código:
//Step
if (keyboard_check(vk_left))
{
    hspeed = -1;
}
else if (keyboard_check(vk_right))
{
    hspeed = 1;
}
else
{
    hspeed = 0;
}//sei que não tem nada haver, mas...

//Draw
surface_set_target(surf_p);
draw_clear_alpha(0,0);
draw_background_stretched(back_Proton,0,0,160,320);
draw_sprite(spr_pPlayer,1,x,y);
surface_reset_target();
surface_set_target(surf_e);
draw_clear_alpha(0,0);
draw_background_stretched(back_Eletron,0,0,160,320);
draw_sprite(spr_ePlayer,1,x-160,y);
surface_reset_target();


AxeInLine

Número de Mensagens : 211
Idade : 14
Data de inscrição : 23/03/2014
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por Mateus O de Andrade em Qui 26 Fev 2015, 16:38

Boa tarde Axe,
Infelizmente não sei nada de surface mas acho que deve ter algum tutorial bom pelo fórum...
Achei esse.

Tutorial Surface:

Caso não te ajude, avisa ai e tentamos achar alguma outra coisa ou auguem que saiba melhor sobre o assunto!

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 30
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por Isaque Onix em Qui 26 Fev 2015, 18:22

simples, a surface não foi criada, ou não foi armazenada na variavel, ou foi iniciada corretamente mais no tempo errado.
tente passar o código do Game Start para create

Isaque Onix

Número de Mensagens : 1597
Idade : 22
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por AxeInLine em Qui 26 Fev 2015, 18:37

None exatamente Isaque, o erro só dá quando a tela é maximizada.

Conversei com o Alex Fc, e ele me explicou que quando a tela é maximizada a surface é deletada (ou algo assim).
Então para burlar isso da para usar a função surface_exists(...) só que depois tem que dar um jeito de recriar a surface, coisa que me atrapalha agora)


@Mateus: 
Vlw por tentar ajudar cara, só que por incrível que parece, não tem esse fato que eu falei do maximizar, então não me ajuda muito o tuto,
Mas vlw mesmo assim...



Obrigado aos dois por tentarem me ajudar Razz, mas parece que o problema mudou.
Vlw gente!

AxeInLine

Número de Mensagens : 211
Idade : 14
Data de inscrição : 23/03/2014
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por Isaque Onix em Qui 26 Fev 2015, 18:50

nesse caso é só recriar a surface uai...
Código:
if(!surface_exists(nome)){nome=surface_create(...)}else{
//desenha a surface...
}

Isaque Onix

Número de Mensagens : 1597
Idade : 22
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por AxeInLine em Qui 26 Fev 2015, 19:04

affraid

Bem, eu até tinha pensado nisso, mas pensei que era muito obvio para dar certo, então nem testei, mas parece que da certo --\'.

Ok, vlw a todos (inclusive você Alex) e até outro dia! 
flw

AxeInLine

Número de Mensagens : 211
Idade : 14
Data de inscrição : 23/03/2014
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por Alex FC em Qui 26 Fev 2015, 19:28

Não faça assim (Desculpa Isaque xD). A memória vai ser sugada ao infinito e além dependendo de quntas vezes redimensionar claro. Só abrir o Gerenciador de Tarefas pra confirmar.

Seguinte, a surface desaparece porque a ordem de criação do obj_control e obj_player interfere, pois tu cria o desenho em um e desenha o desenho em outro.

Pra resolver é só você mover o código de desenho da surface para o próprio player.

Ficando assim o evento Draw:

Código:
surface_set_target(surf_p);
draw_clear_alpha(0,0);
draw_background_stretched(back_Proton,0,0,160,320);
draw_sprite(spr_pPlayer,1,x,y);
surface_reset_target();
surface_set_target(surf_e);
draw_clear_alpha(0,0);
draw_background_stretched(back_Eletron,0,0,160,320);
draw_sprite(spr_ePlayer,1,x-160,y);
surface_reset_target();

if surface_exists(surf_p) draw_surface(surf_p, 0, 0);
if surface_exists(surf_e) draw_surface(surf_e, 160, 0);

Por segurança declare as globais no Creation Code da primeira room. Pois o Game Start só é válido pra room inicial onde o objeto se encontra.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por AxeInLine em Qui 26 Fev 2015, 19:45

Anm...
Desculpa Alex, mas deu certo não tongue, continuou que ela não aparece ainda Laughing.

Vou continuar com aquele outro modo até que outra solução (menos pesada) surja.

@Edit: 


Fui testar agora, e parece que quando maximiza e depois (tenta) minimiza, ele simplesmente não o faz...

AxeInLine

Número de Mensagens : 211
Idade : 14
Data de inscrição : 23/03/2014
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por Alex FC em Qui 26 Fev 2015, 19:53

Bom aqui funcionou certinho. Enfim, é só um detalhe caso se redimensione muitas vezes. Fica ai o gmz se quiser olhar:

https://dl.dropboxusercontent.com/u/38428395/teste.gmz

Não creio que vão ficar redimensionando tanto assim a janela. Então...

Fui-me.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro surface.

Mensagem por Conteúdo patrocinado Hoje à(s) 08:57


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum