Conectar-se
Quem está conectado
28 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 28 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 40

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Erro surface.

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();

avatar
Ranking : Nota D
Data de inscrição : 25/03/2014
Número de Mensagens : 399
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 37

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Erro surface.

em Qui 26 Fev 2015, 16:38
Reputação da mensagem: 100% (1 votos)
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!
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 147

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Erro surface.

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
avatar
Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 40

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Erro surface.

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!
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 147

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Erro surface.

em Qui 26 Fev 2015, 18:50
Reputação da mensagem: 100% (1 votos)
nesse caso é só recriar a surface uai...
Código:
if(!surface_exists(nome)){nome=surface_create(...)}else{
//desenha a surface...
}
avatar
Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 40

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Erro surface.

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
avatar
Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2516
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0
Reputação : 177

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://redscreensoft.blogspot.com

Re: Erro surface.

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!
avatar
Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 40

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Erro surface.

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...
avatar
Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2516
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0
Reputação : 177

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://redscreensoft.blogspot.com

Re: Erro surface.

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!
Conteúdo patrocinado

Re: Erro surface.

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum