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
Data de inscrição : 24/06/2014
Número de Mensagens : 90
Insígnias de JAM :

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

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

Qual é a causa do erro?

em Ter 01 Jul 2014, 03:37
Eu não estou conseguindo entender no que eu estou errando..

Objetivo:
Criar variável "variavel" com valor "false"
Em ambos objetos:
Caso o valor de variavel continue sendo false, image_index = 0
Caso o valor de variavel mude para true, image_index = 1
Info:
Códigos:
Create do obj_1
Código:
variavel = false
Step do obj_1
Código:
if variavel = false
{image_index = 0}
if variavel = true
{image_index = 1}
Create do obj_2
Código:
variavel = false
Código:
if variavel = false
{image_index = 0}
if variavel = true
{image_index = 1}

Adicional
Objetos no quarto: obj_1 / obj_2
spr_1 contém 2 imagens (0,1)
spr_2 contém 2 imagens (0,1)
Não há nenhum outro evento nos obj_1 e obj_2
Erro:
Em vez da sprite ficar ou só em image_index 0
ou então só em image_index 1,
ela fica "piscando" alternando entre a image_index 1/2
Causa do Erro:
falta de informação
avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 06:12
Para a imagem não ficar piscando que nem louca, vc tem que por no create to objeto o codigo
image_speed = 0
Isso vai congelar sua imagem no primeiro frame.  Se não fizer isso ele vai entender que as imagens são uma animação e vai dar play
aí vc vai ter seu efeito "piscando loucamente"

no código falto o ELSE e você tá usando "=" que signfica "recebe"
o certo é usar "==" que é comparativo

variavel = false  < a variavel recebe false  (esse é uma afirmação)
if variavel == false < SE a variavel FOR IGUAL a false (esse é uma pergunta)

e na verdade você nem precisa declarar o segundo if, porque se no primeiro if ele já disse que ela não é "falsa" então só pode ser verdadeira, ja q ela so tem dois estados (no caso)

pode ser;

Código:
if variavel == false {image_index = 0}
else {image_index = 1}

Mas se quiser deixar como está o seu então pode ser

Código:
if variavel == false
{image_index = 0}
else if variavel == true
{image_index = 1}

ou melhor ainda, vc pode substituir TUDO isso por

Código:
image_index = variavel

se ela for true vai retonar 1, se for false vai retornar 0.
(é isso mesmo galera? sempre me enrolo no zero e um hehe)
avatar
Ranking : Nota B
Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Número de Mensagens : 1281
Insígnias de JAM :

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

Prêmios
   : 3
   : 1
   : 3
Ver perfil do usuário

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 07:42
Só querendo lembrar:

no código falto o ELSE e você tá usando "=" que signfica "recebe"
o certo é usar "==" que é comparativo
O gamemaker consegue entender mesmo sem o '=='.
Ou seja, mesmo que você use :
Código:

    if variavel == false
    {image_index = 0}
    else if variavel == true
    {image_index = 1}
ou
Código:

    if variavel = false
    {image_index = 0}
    else if variavel = true
    {image_index = 1}
No game maker isto não tem diferença, ou seja, pra que você não se engane use sempre apenas '=' .
Data de inscrição : 24/06/2014
Número de Mensagens : 90
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 12:32
Obrigado 7hiagomp, Obrigado Rodrigo Santiago

Adicionei "speed = 0" e funcionou

Problema 1 resolvido

Problema 2:

Adicionados novos eventos:
Left Button do obj_1:

variavel = true

Left Button do obj_2:

variavel = false

Objetivo:
declarar a variavel com = true ou = false
e trocar de image_index

Resultado:
a image_index não está trocando, e provavelmente o valor da variavel também não





avatar
Ranking : Nota B
Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Número de Mensagens : 1281
Insígnias de JAM :

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

Prêmios
   : 3
   : 1
   : 3
Ver perfil do usuário

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 12:59
Como esta o evento draw? Tem algum código diferente?

Obs quando vc falou speed vc quis dizer image_speed? Pq speed é outra coisa.
Data de inscrição : 24/06/2014
Número de Mensagens : 90
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 13:27
O evento Draw não tem nada

Os únicos Eventos/códigos que tem nos objetos são os que estão no 1 post, + os que eu falei agora no Problema 2.

Sim, é image_speed, eu errei aqui mais no GM tá certo

avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 19:06
Reputação da mensagem: 100% (1 votos)
Cara, é o mesmo quesito do outro tópico, você não precisa de 2 objetos pra trocar o estado de uma váriável, vc só checa o estado a da variavel no mesmo objeto e a troca.  Como é mouse, usa 2 comados

mouse_check_button_pressed(mb_left)  <- checagem de click com botão esquerdo do mouse
distance_to_point(mouse_x, mouse_y)    <- checagem que diz se o mouse está sobre o objeto
&& <- significa "e", pra a ação a contecer, ambas as afirmações tem q ser verdadeiras.
(se não me andando pode escrever "and")

Isso fica no STEP;

Isso checa se o mouse foi clicado encima do objeto.
Código:
if mouse_check_button_pressed(mb_left) && distance_to_point(mouse_x, mouse_y) == 0
{
if variavel == true { variavel = false}
else variavel = true
}

na lógica seria:

o mouse foi clicado E está sobre o objeto?
SIM > ok, o estado da variavel é true?
|
|        SIM > "mude a variavel pra false"
|        NAO> "mude a variavel pra true"
|
NAO> não faça nada


Última edição por 7hiagomp em Qua 02 Jul 2014, 00:56, editado 1 vez(es)
Data de inscrição : 24/06/2014
Número de Mensagens : 90
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Ter 01 Jul 2014, 22:56
Eu preciso alterar algo no lugar que está "mouse_x","mouse_y"?
Por que quando eu coloquei esse código no step dos objetos, (no obj_1 coloquei que a variável viraria true, e no obj_2 que viraria false)

a variavel ficou alternando entre true e false num loop infinito, mesmo sem eu ter dado nenhum clique com o mouse
avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Qua 02 Jul 2014, 00:55
A variavel ficou alterando ou a sprite ficou alterando infinitamente?
Data de inscrição : 24/06/2014
Número de Mensagens : 90
Insígnias de JAM :

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

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

Re: Qual é a causa do erro?

em Qua 02 Jul 2014, 08:47
7hiagomp escreveu:A variavel ficou alterando ou a sprite ficou alterando infinitamente?
a imagem da sprite, mas eu devia ter feito alguma coisa errada, porque eu re-coloquei os códigos e funcionou normalmente!

PROBLEMAS RESOLVIDOS!
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