..:: MX Studio Fóruns ::..: Desconto de dinheiro - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Desconto de dinheiro Por favor ajudem-me. Estou a tentar criar um jogo.

#1 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

  Posted 04 January 2009 - 12:02 PM

Eu sou novo no forum e estou a tentar criar um jogo em flash do género de construir edifícios.
Gostava que (se alguém souber) me dessem um código (prefiro actionscript 2.0) para, por exemplo, quando eu clico em determinada zona, subtrai-se 150 ao valor inicial de dinheiro (que aparecerá num campo também).

Acho que fou o mais explícito possivel.
Mais ainda posso explicar melhor.

alguem me pode ajudar, por favor??
0

#2 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 04 January 2009 - 05:55 PM

Não tem segredo, você cria uma variável para armazenar o valor que deseja modificar, e depois é subtrair o valor desejado.

CÓDIGO
var valor:Number = new Number(500);
campo.text = valor;
bt.onPress = function() {
    valor -= 150;
    campo.text = valor;
};


Onde bt é a instancia do botão que ao ser clicado irá subtrair o valor da variável e campo a instancia do campo de texto dinamico que irá exibir o valor.

[]s
0

#3 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 04 January 2009 - 08:12 PM

Muito obrigado mesmo!!

Só uma pergunta:
Não tem o código para actionscript 2.0? É que eu prefiro essa versão...
0

#4 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 04 January 2009 - 08:44 PM

O código é em ActionScript 2.

[]s
0

#5 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 05 January 2009 - 06:06 AM

Ok...
Não percebo muito disto...
Ando a aprender.

Já agora: não tem um código para, por exemplo, a cada 5 min somar o número de um determinado campo ao valor de outro campo?
0

#6 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 05 January 2009 - 01:03 PM

QUOTE(Miguelmmm @ 5/1/2009 06:01:48) <{POST_SNAPBACK}>
Ok...
Não percebo muito disto...
Ando a aprender.

Já agora: não tem um código para, por exemplo, a cada 5 min somar o número de um determinado campo ao valor de outro campo?




blz?
Você pode usar a função setInterval() para chamar uma determinada função em um intervalo de tempo.

Ex:
CÓDIGO
//intervalo em milesegundos = 5 min.
var tempoIntervalo:Number = 50000;

//executa a função somaCampos() a cada 5 minutos
setInterval(somaCampos, tempoIntervalo);

function somaCampos() {
    //soma os campos desejados e mostra em um campo de resultados
    campoResultadoTxt.text = Number(campoTxt1.text) + Number(campoTxt2.text);
}


Confira este link:
http://www.alvoweb.com/setinterval-e-settimeout-flash/

Abraços.
0

#7 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 05 January 2009 - 08:13 PM

Peço desculpa, mas podia explicar melhor o código?
0

#8 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 06 January 2009 - 12:53 PM

A função que vai fazer a contagem de 5 minutos em 5 minutos é a função setInterval, nessa função você uma função a ser executada e o tempo que demorará para que ela seja acionada.

A função setInterval pede para passar o tempo em milesegundos, se você quer 5 minutos, primeiro precisa passar 5 minutos para segundos, multiplicando 5 por 60 fica 300 segundos, 300 segundos em milesegundos ficam 300000.

Então a cada 300000 milesegundos, a função setInterval irá chamar a função somaCampos que faz a soma de dois campos de texto com instancia de campoTxt1 e campoTxt2.

CÓDIGO
//intervalo em milesegundos = 5 min.
var tempoIntervalo:Number = 300000;

//executa a função somaCampos() a cada 5 minutos
setInterval(somaCampos, tempoIntervalo);

function somaCampos() {
    //soma os campos desejados e mostra em um campo de resultados
    campoResultadoTxt.text = Number(campoTxt1.text) + Number(campoTxt2.text);
}


Entendeu?

[]s
0

#9 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 09 January 2009 - 01:07 PM

Sim entendi.
Obrigado!

Se não for pedir muito, podia dar-me o código mas para subtrair, para que eu possa compará-los?
0

#10 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 09 January 2009 - 02:42 PM

QUOTE(Miguelmmm @ 9/1/2009 13:01:57) <{POST_SNAPBACK}>
Sim entendi.
Obrigado!

Se não for pedir muito, podia dar-me o código mas para subtrair, para que eu possa compará-los?


É o mesmo código....
Já experimentou substituir no código o operador + pelo operador - ? wink.gif



Se está começando com AS, é interessante conhecer esses artigos abaixo. São sobre AS3.
Embora você esteja utilizando o AS2, o conceitos abordados são bastante aproveitados, e diria que muito importante de conhecer esses conceitos pra resolver questões como essas! thumbsup.gif

Programando em ActionScript 3.0
Parte 1 - Variáveis
http://www.mxstudio.com.br/flash/programan...t-30-variaveis/
Parte 2 - Operadores
http://www.mxstudio.com.br/flash/programan...-30-operadores/
Parte 3 - Condicionais
http://www.mxstudio.com.br/flash/programan...0-condicionais/
Parte 4 - Loops
http://www.mxstudio.com.br/flash/programan...script-3-loops/


O help do flash existe também um ótimo conteúdo para pesquisas sobre as Classes, propriedades e métodos, lá existe explicações e até exemplos de como utilizar cada uma.


A Adobe disponibiliza um guia em Português sobre o Actionscript 3.0. alegre.gif

Arquivo em PDF( 10M ) para download.
http://help.adobe.com/pt_BR/ActionScript/3...programming.pdf

Poderá conferir também o mesmo conteúdo diretamente pela página da Adobe:
http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/


Abraços.
0

#11 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 18 January 2009 - 06:33 PM

Muito obrigado pelos guias. Não tenho tido muito tempo, mas lá vou conseguindo ir lendo... Aos poucos...

Se não fosse pedir muito, podia dizer-me mais uma coisa?

Eu queria um código que, por exemplo:

Depois de clicar num botão chamado btn_din, a cada 5 minutos é subtraído 125 (unidades) ao campo de texto conta_din. Assim, a cada 5 min seríam subtraídos 125 ao campo conta_din, mas isto apenas aconteceria depois de clicar numa determinada zona.

Na realidade, o produto final será:
->Quando se contrata um soldado, este custa dinheiro para ser treinado. Este código eu já tenho (acho que está no 2º post).
->Depois do soldado ser treinado, este tem um ordenado. Neste caso, a cada 5 min, o seu ordenado seria de 125 Bilts (o Bilt foi a unidade monetária que escolhi para o jogo... Não está má!... biggrin.gif )

Aguardo resposta.
Cumprimentos.
0

#12 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 18 January 2009 - 07:05 PM

É só usar o evento onPress para o botão btn_din.

CÓDIGO
var valor:Number = new Number(500);
campo.text = valor;
//intervalo em milesegundos = 5 min.
var tempoIntervalo:Number = 300000;
btn_din.onPress = function() {
   //executa a função somaCampos() a cada 5 minutos
   setInterval(subtrai, tempoIntervalo);
};
function subtrai() {
   valor -= 150;
   campo.text = valor;
}


[]s
0

#13 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 18 January 2009 - 07:20 PM

Muito obrigado (mais uma vez smile.gif )

E, por agora, mais uma pergunta:
Como posso retardar um acontecimento?

Por exemplo: esperar 3 min antes de acontecer determinada coisa.

Mais uma vez aguardo. Cumprimentos.
0

#14 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 19 January 2009 - 04:33 PM

Usa um setInterval de 3 minutos chamando uma função com aquilo que deseja fazer. Igual ao mostrado nesses exemplos que eu e o Rodrigo postamos.

[]s
0

#15 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 22 January 2009 - 05:16 PM

Mas nesses exemplos, a função vai fazemdo determinada coisa de x em x tempo.
Nesta, em quero que, depois de clicar num botão, passado três minutos, seja subtraído um valor a um determinado campo. Mas este valor só é subtraído uma vez...

Fiz-me entender?
0

#16 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 22 January 2009 - 09:56 PM

Agora entendi, isso também é fácil, basta matar o intervalo depois que ele chamar a sua função. Para fazer isso você usa a função clearInterval.

CÓDIGO
var valor:Number = new Number(500);
campo.text = valor;
//intervalo em milesegundos = 5 min.
var tempoIntervalo:Number = 180000;
var intervalo:Number = new Number();
btn_din.onPress = function() {
   //executa a função somaCampos() a cada 5 minutos
   intervalo = setInterval(subtrai, tempoIntervalo);
};
function subtrai() {
   valor -= 150;
   campo.text = valor;
   clearInterval(intervalo);
}


[]s
0

#17 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 23 January 2009 - 12:41 AM

Complementando o que o Natan passou...

Ou também você pode utilizar neste caso a função setTimeout(), que executa uma função depois de um tempo específico, mas apenas uma vez.

Já a função setInterval() que também executa uma função depois de um tempo específico, mas fica disparando/executando infinitamente a função dentro do intervalo definido, e caso queira parar de executar essa função, terá que "obrigatoriamente" chamar a função clearInterval() como indicado pelo Natan no último exemplo.

Em outras palavras a diferença entre setInterval() e setTimeout() seria +ou- essa:
- setInterval() chama sua função a todo momento(dentro do intervalo definido), e só irá parar quando chamar a clearInterval() pra apagar o intervalo.
- setTimeout(), executa a função apenas 1 vez, e depois acabou.

Tudo pode depender do seu objetivo ou aplicação. thumbsup.gif


Segue o mesmo exemplo anterior passado pelo Natan para você ver a diferença entre os 2...

com setInterval()
CÓDIGO
var valor:Number = new Number(500);
campo.text = valor; //atribui o "valor" atua ao "campo" de texto
var tempoIntervalo:Number = 180000; //intervalo em milesegundos
var intervalo:Number = new Number();

btn_din.onPress = function() {
   //executa a função subtrai() depois do intervalo estipulado
   intervalo = setInterval(subtrai, tempoIntervalo);
}

function subtrai() {
   valor -= 150; //subtrai o valor
   campo.text = valor; //atribui o "valor" atual ao "campo" de texto
   //limpa/cancela o "intervalo" para não executar novamente a função subtrai()
   clearInterval(intervalo);
}


OU com...

com setTimeout()
CÓDIGO
var valor:Number = new Number(500);
campo.text = valor; //atribui o "valor" atua ao "campo" de texto
var tempoIntervalo:Number = 180000; //intervalo em milesegundos

//quando pressionar o botão, faça...
btn_din.onPress = function() {
   //executa a função subtrai() depois do intervalo estipulado, mas apenas 1 vez
   setTimeout(subtrai, tempoIntervalo);
}

function subtrai() {
   valor -= 150; //subtrai o valor
   campo.text = valor; //atribui o "valor" atual ao "campo" de texto
}


Os 2 exemplos tem o mesmo resultado, só maneiras diferente de utilização.

Abraços.
0

#18 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 23 January 2009 - 12:18 PM

Ok. Obrigado.

Uma coisa: estou com um problema:
Estou a tentar usar a função gotoAndStop() mas não consigo. O esquema é o seguinte:
- DEntro de uma frame, criei um movie clip com várias frames. Na frame 1 desse movie clip, está a acção stop(). Também dentro desse movie clip, na frame 1, está um botão. Ao clicar nesse botão, é suposto ir para a frame dois. Mas não vai.
Eu inseri o seguinte código no botão:
CÓDIGO
on (release) {
    gotoAndStop(2)
}

Alguém me pode dizer por que razão não funciona?

Cps.

PS: Fiz o mesmo com outro movie clip nessa mesma frame e funcionou...
0

#19 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 23 January 2009 - 12:41 PM

Fiz um exemplo aqui, vê se ajuda:
http://rapidshare.com/files/188211441/controleMc.zip.html

Sugestões:
Particularmente prefiro inserir Actions na timeline principal e controlar os objetos no stage com nomes de instância.
Acho mais fácil pra gerenciar todo o código.

E sem tem o risco de deletar/apagar sem querer algum Objeto que está no stage com código e perder algo importante pro funcionamento do código. wink.gif

Abraços.
0

#20 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 24 January 2009 - 10:01 AM

Muito muito obrigado!!

Não sabe há quanto tempo anda à procura desse código. Os livros explicavam, mas nunca tinha conseguindo dar certo. Agora percebi!
Muito obrigado mesmo.

A propósito: Descobri o problema. Não era do código que estaa a ser usado, pois o código que eu tinha colocado estava correcto. O problema era que o botão que iria ser clicado, por sua vez, tinha sido transformado em outro botão, ou seja, tinha-se trnsformado o mesmo objecto em botão duas vezes. Não sei se me fiz entender, mas o que é certo é que o problema era esse.

Só mais uma pergunta, que não faço a mínima ideia da resposta: Como e qual função devo utilizar para fazer com que, por exemplo, quando o campo de texto chamado din tem um valor inferior a 0 o movie clip passe para a frame 9? A ideia é quando o dinheiro acaba (daí o din) o jogo também acaba e o jogador perde...

Cumprimentos e aguardo resposta.
0

#21 User is offline   Maycon Marques 

  • Group: Membros
  • Posts: 276
  • Joined: 25-July 07

Posted 24 January 2009 - 11:45 AM

Então, também vou ajudar...

CODE

_root.onEnterFrame = function (){

if(din.text <= 0){
gotoAndStop(numero_ou_label_do_frame);
}
}


o _root respresenta o palco todo em si.
o onEnterFrame é usado para funções que começam sempre quando o quadro estiver aberto.
o if é para condições
os sinais <= juntos significa menor ou igual
0 o dinheiro.

Espero tê-lo ajudado.
Flw.
0

#22 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 24 January 2009 - 07:26 PM

Ajudou e muito. Obrigado.

Por agora não tenho mais dúvidas. vou tentar tirá-las sozinho e com a ajuda do que me disseram aquí.

alguma coisa, postarei.

Cumps
0

#23 User is offline   Miguelmmm 

  • Group: Membros
  • Posts: 69
  • Joined: 04-January 09

Posted 17 February 2009 - 07:25 PM

Olá outra vez!

Se alguém me puder ajudar, a pergunta é esta:

Eu quero fazer com que, por exemplo, quando eu clico no botão btnmuseu (que está na frame 2) sejam somados 5 ao dinamic text denominado numbens (que está na frame 3)

A diferença entre a pergunta que eu fiz anteriormente é que aqui, está a ser feita uma acção entre um objecto de uma frame e outro de outra frame.

Alguém me pode responder?

Cumprimentos
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)