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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 26/02/2011
Número de Mensagens : 107
Insígnias de JAM :

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

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

Destruir variável

em Sab 19 Mar 2011, 19:37
Aproveitando o fim de semana, estou idealizando um projeto no GM. Mas surgiu a necessidade de destruir uma variável local. Minha necessidade seria algo como:

Código:
a = 10;
draw_rectangle(a,a,2*a,2*a,0);

// destruir variável a

Eu sei como contornar o problema, mas quero saber se vocês conhecem uma função ou algo semelhante que possa destruir uma variável, isso facilitaria muito meu projeto.

Obrigado.
avatar
Ranking : Nota A
Notas recebidas : A
Data de inscrição : 09/03/2010
Número de Mensagens : 1035
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://www.www.ww.www

Re: Destruir variável

em Sab 19 Mar 2011, 21:01
olha cara se existe função e tal eu não sei mas pode ser que de para tu fazer uma var global e coloca-la em outro obj para que quando ocorra a ação nesse objeto destrua o outro mas nao sei se funcionaria mas pode tentar mas ai o problema seria que o gm ia acusar que a variavel nao existe e dai é certo que vai dar bug pois como tu ta usando ele apara desenhar esse retangulo
mas tenta ai vai que da sei la
obs: porque tu quer destruir tal variavel?
vou dar uma procurada pra ti cara se achar te aviso com um edit aqui

flws
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

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

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

Re: Destruir variável

em Sab 19 Mar 2011, 23:05
Cara, você está usando essa var no draw. Se você excluir ela no draw, como vai se desenhar o retângulo? Até porque, nem adianta, já que a é igual a 10 no começo do código. O Draw NUNCA para de ser executado, é digamos, "infinito".
Código:
a = 10 // Executou aqui, definiu a var 10
draw_rectangle(a,a,a,a) // E depois aqui, desenho o retangulo
a = 0 // Então chega aqui, e já parte lá pra cima e começa tudo denovo.
NÃO EXISTE e NÃO HÁ uma função que delete uma variável. Tudo o que você pode fazer é definir a variável como zero, ou como um string vazia(""). No C++ você pode definir como NULL, mas o Game Maker não é C++... O Game Maker executa cada linha de código a 0,4 segundos, realmente muito rápido, por isso dá tempo de fazer mais algo depois que se deleta uma instância.
avatar
Ranking : Nota B
Notas recebidas : B
Data de inscrição : 25/07/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 4
Ver perfil do usuáriohttp://clubmaker.forumeiros.com

Re: Destruir variável

em Sab 19 Mar 2011, 23:08
se você usar o evento exit não funciona não ?
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

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

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

Re: Destruir variável

em Sab 19 Mar 2011, 23:11
X-Games escreveu:se você usar o evento exit não funciona não ?
Rapaz, acho que não. Pois se você "exitasse" do Draw, certamente seria pampz voltar a ele. O exit só é permitido a códigos executados cada um por sua vez, mas o Draw é diferente. Você pode dar exit, mas ele vai voltar a ser executado de qualquer maneira.
avatar
Data de inscrição : 23/09/2008
Número de Mensagens : 169
Insígnias de JAM :

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

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

Re: Destruir variável

em Dom 20 Mar 2011, 00:06
Markituh escreveu:NÃO EXISTE e NÃO HÁ uma função que delete uma variável. Tudo o que você pode fazer é definir a variável como zero, ou como um string vazia(""). No C++ você pode definir como NULL, mas o Game Maker não é C++... O Game Maker executa cada linha de código a 0,4 segundos, realmente muito rápido, por isso dá tempo de fazer mais algo depois que se deleta uma instância.

Acho que vc esta enganado, pelo que sei se vc utilizar o comando de declarar a variável ela no final do código é eliminada!

Não acredita? Tente isso!

Create:
Código:
var test;

test = 200;
test2 = 100;
score = test*test2;
Draw:
Código:
room_caption = "Test = "+string(variable_local_exists("test"))+" | Test2 = "+string(variable_local_exists("test2"));

Bem se vc notar a variável test não vai existir, entretanto a variável test2 existe. É isso...

Té.
avatar
Ranking : Nota B
Notas recebidas : B
Data de inscrição : 25/07/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 4
Ver perfil do usuáriohttp://clubmaker.forumeiros.com

Re: Destruir variável

em Dom 20 Mar 2011, 00:14
você poderia usar tambem uma variável temporária, vê nas aulas do Dharrison mais pelo oque eu entendi, essa variável fica até a função que ela está presente acabar, se coloca assim:
var nome_da_variável=20
é mto usada em scripts, ela só funciona quando o script é execultado, quando ele acaba, ela acaba tbm!
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

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

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

Re: Destruir variável

em Dom 20 Mar 2011, 00:26
Acho que vc esta enganado, pelo que sei se vc utilizar o comando de declarar a variável ela no final do código é eliminada!

Não acredita? Tente isso!

[...].
Cara, isso aí é uma variável temporária, o comando var é isto. É diferente de declarar uma variável local, sem o var. E X-Games, se você fizer isso vai dar um erraço, o var só declara as variáveis, você define o valor depois:
Código:
var variavel;
variavel = 10
Até onde sei, você pode declarar uma variável em que evento quiser, desde que esse não se repita, como o Step ou o Draw. Mas usando o esquema certo é possível driblar isso, só é saber ;) Um exemplo:
Código:
tempo = 0
if keyboard_check(vk_space){
tempo+=1
}
if tempo=100
{
game_end()
}
Um esquema de executar ação depois de x segundos pressionando uma tecla, é basicamente este.
Data de inscrição : 29/01/2011
Número de Mensagens : 800
Insígnias de JAM :

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

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

Re: Destruir variável

em Dom 20 Mar 2011, 11:42
Existe sim uma maneira de realmente apagar uma variável da memória... mas isso não é uma função e sim um método que realmente funciona. Pra isso você deve criar um objeto e usá-lo como ponte para variáveis.

Por exemplo, você poderia criar um objeto "temp" e declarar todas as variáveis da seguinte forma:

Código:
temp.nome = 'Ninja8086';
temp.dado = $FF;
temp.valor = 20 * pi;

Para limpar essas variáveis, bastaria destruir o objeto na room da seguinte forma:

Código:
instance_destroy(temp);

Toda instância possui eventos e variáveis próprias que são executados e lidas enquanto o objeto estiver activo. Há como desactivar o objeto, mas destruí-lo é a melhor maneira. Quando a instância é destruída, todo evento e variáveis são descartados.


Última edição por Ninja8086 em Sab 31 Mar 2012, 20:39, editado 1 vez(es)
avatar
Data de inscrição : 26/02/2011
Número de Mensagens : 107
Insígnias de JAM :

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

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

Re: Destruir variável

em Dom 20 Mar 2011, 12:27
Muito obrigado a todos pela atenção.

Sobre destruir a variável no draw, ele é declarada novamente no começo, ou seja, meu esquema seria: criar variável > usar variável > destruir variável > criar variável > usar variável > destruir variável > [...].

Este processo se repetiria até que o evento não existisse mais (destruindo o objeto como disse o Ninja8086, assim a variável não existe mais mesmo) ou o evento parar de ser executado (parte dele sendo mais exato, com o uso de uma condicional "if'). Destruir a variável me ajudaria e muito (estou criando minha próprias funções que possuem ID dentro de uma variável, com return e tal), irei tentando algumas coisas daqui.

Se alguém tiver uma ideia, favor me informar. Obrigado.
Data de inscrição : 29/01/2011
Número de Mensagens : 800
Insígnias de JAM :

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

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

Re: Destruir variável

em Dom 20 Mar 2011, 12:44
(parte dele sendo mais exato, com o uso de uma condicional "if'). Destruir a variável me ajudaria e muito (estou criando minha próprias funções que possuem ID dentro de uma variável, com return e tal), irei tentando algumas coisas daqui.

Neste caso, bastaria checar se o objeto temp existe com instance_exists() e caso exista, a variável também existe. Também pode usar a função variable_local_exists() que confere a existência ou não da variável. Enfim, boa sorte!
Conteúdo patrocinado

Re: Destruir variável

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