Conectar-se

Esqueci minha senha

Últimos assuntos
» [Enquete] Concursos GMBR
por Willy Ontem à(s) 19:49

» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

Quem está conectado
14 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 14 Visitantes

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36
Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220919 mensagens em 30412 assuntos

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

avatar
AxeInLine

Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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!
avatar
Mateus O de Andrade

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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
avatar
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário 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!
avatar
AxeInLine

Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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...
}
avatar
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário 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
avatar
AxeInLine

Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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!
avatar
Alex FC

Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2516
Insígnias de JAM :

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário 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...
avatar
AxeInLine

Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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!
avatar
Alex FC

Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2516
Insígnias de JAM :

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário http://redscreensoft.blogspot.com

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