Entrar
Tópicos semelhantes
Procurar
Últimos assuntos
» Ideia: MMFMakers, do zeropor mediamaker Qua 26 maio 2021, 12:28
» [Flash] Haunt the house
por mediamaker Sáb 19 Set 2020, 16:47
» Como a criar passo a passo engine de Movimento Grid com colisão (tipo Bomberman) completo usadno extensão Array?
por mediamaker Sex 15 Set 2017, 14:19
» CF2.5 -> 26 reais na steam
por Matheus290 Ter 22 Dez 2015, 17:52
» Aplicação com Editbox não tá rodando online
por Matheus290 Sáb 19 Set 2015, 01:38
» A Guilda continua!!!! "Âncora Team" (novo nome)
por weliowl7 Qua 16 Set 2015, 01:52
» Sub-application e Inventario
por majorcorps Dom 23 Ago 2015, 13:11
» Efeito de string
por majorcorps Sáb 22 Ago 2015, 19:55
» [PC] Pitiri 1997
por Matheus290 Sáb 20 Jun 2015, 17:10
» Teclado virtual com Edit Box
por mediamaker Sáb 20 Jun 2015, 14:10
Quem está conectado?
Há 20 usuários online :: 0 registrados, 0 invisíveis e 20 visitantes Nenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 251 em Ter 26 Out 2021, 22:21
Estatísticas
Temos 256 usuários registradosO último membro registrado é Sitydistta
Os nossos membros postaram um total de 5268 mensagens em 575 assuntos
Usando Timers com Time X
2 participantes
Fusion Makers :: Geral :: Matérias :: Iniciante
Página 1 de 1
Usando Timers com Time X
Usando timers com Time X
Nivel: Básico
O que vamos aprender?
Criar Timers Independentes
O que vamos precisar?
Multimedia Fusion 2(Duh)
Time X(Duh²)
OBS: Não sei se ele ja vem como MMF2, então estou disponibilizando ele para download.
Introdução ao Time X
Eu tenho certeza que você ja teve/ainda tem problemas com uma coisa do Multimedia Fusion 2: o "The Timer"(raios caindo). E também tenho certeza que seu problema é: você botava "Every 1 second" e as vezes ele ia uma vez ou outra em 0,5 segundos ou coisa assim. Mas por que isso acontece? Crie um novo projeto no MMF2 ou abra um qualquer, e clique para testar. Ve o debugger? Clique no "+" e abra a pasta System. Você vai ver algo assim:
Ve a linha "Time"? Esse é o Timer padrão do Multimedia Fusion 2.
"Ta... idai?"
Idai que quando você faz eventos de "every, time equal to", você está usando apenas UM timer, o mesmo, então todos os eventos seguirão "um padrão", deixando mais dificil de se usar...
O evento Every 1 Second vai se ativar a cada 1 segundo deste timer, não a cada um segundo que o evento foi ativado, então se você o ativa aos "2,99 segundos" ele não vai repetir ou ativar no "3,99", e sim no "3,00".
Isso é um problema, não? Porém, há uma alternativa, se chama Time X.
As funções do Timer X
Vamos colocar o Time X no frame. Caso você a tenha, você podera encontra-la com este icone:
Ao colocar, abrira uma janela:
Bem, há apenas uma opção, "Number of Timers", são quantos timers você quer criar para seu frame. E isso é uma vantagem, pois assim não precisa criar vários.
IMPORTANTE: O número de timers é números maiores que 0, porém os ID dos timers são baseados em 0, por exemplo: você põe 1 timer, ele é o ID 0, você põe 2, os ID serão 0 e 1.
Enfim, para o exemplo mais tarde, deixe 1 mesmo.
Agora vamos para o Event Editor.
Vamos primeiro aos eventos
Vou mostrar apenas os eventos importante para nosso objetivo: Timers Independentes
Global Timers->Start Timer
Começa o timer de ID X.
Global Timers->Stop Timer
Para o timer de ID X, meio que um Pause Timer
ATENÇÃO: o timer não volta para 0
Global Timers->Toggle Timer
Pausa/Continua o timer de ID X.
Global Timers->Set Timer
Coloca o timer de ID X em um certo número
Global Timers->Reset Timer
Volta o timer de ID X para 0
Os outros são a mesma coisa, mas para TODOS os timers.
Agora vamos para as conditions importantes para nosso objetivo:
Global Timers->Timer is counting?
Verifica se o timer de ID X está ativo.
Global Timers->Timer equal to...
Verifica se o timer de ID X é igual a Y milisegundos
Lembrando: 1000 milisegundos = 1 segundo
Global Timers->Timer different from...
Verifica se o timer de ID X não está igual a Y milisegundos
Global Timers->Timer greater than...
Verifica se o timer de ID X é maior que Y milisegundos
Global Timers->Time lower than...
Verifica se o timer de ID X é menor que Y milisegundos
Exemplo 1: "O teste"
Primeiro, vamos testar nosso Time X. Se você colocou no tutorial e está até agora, deixe, se não, coloque de novo(Time X com 1 Number of Timers)
Coloque 4 botões: Start, Stop, Pause/Continue, Reset
Coloque Mais um botão(nome Set) e um edit box(nome SetEdit)
Agora coloque uma string com suas preferencias.
Ficara algo assim:
Agora vamos aos eventos:
O GetTimer pode ser encontrado em "Retrieve Data from an object -> Time X -> Get Global Timer" e no valor que ele pede, ponha o ID do timer.
E para quem não sabe, o "Str$( )" é para transformar números em texto.
Agora vamos fazer os controles:
ATENÇÃO: O timer não volta para 0 e pode ser continuado com toggle.
ATENÇÃO: Ele NÃO PARA o timer.
E para quem não sabe, "Val( )" é para transformar texto númericos em números.
Agora que você terminou, você pode testar:
Download do exemplo:
Exemplo 1 - "O Teste"
Exemplo 2: "A prova"
Pré Explicação:
Este exemplo irá mostrar que ele(o Time X) é independente do Timer do MMF2.
Ao clicar no botão start, os counters vao começar a se "adicionar", um com condition Every do MMF2, o outro pelos Miliseconds do Time X.
Você verá a diferença.
Crie um novo projeto ou frame, coloque um Time X com 1 timer, duas strings(timer e realtimer), 2 counters(CTimer e CRealTimer) e um botao Start:
Vamos para o Event Editor:
Agora podemos testar:
Neste teste, o timer do MMF2 começou praticamente quando cliquei, porém o Time X marcou normal.
Neste teste, o eu cliquei aos 2 segundos e meio de pausa, o timer do MMF2 marcou o primeiro segundo em 0,5 segundos, enquanto o Time X continua marcando certinho.
Download do exemplo:
Exemplo 2 - "A Prova"
Conclusão
Após os dois testes, podemos concluir que o Time X é uma opção muito melhor quando tratado de eventos com tempo, o único problema é se você [s]for burro[/s] tiver problemas com calculo de conversão, terá problemas com ele talvez, porque ele só marca valores em Milisegundos(1000 milisegundos = 1 segundo, para transformar divida o valor por 1000). O outro é que ele não tem "Every", o every que ele tem é com o timer padrão do MMF2 também, então você tera que fazer seu every do seu jeito.
Enfim, espero ter ajudado.
Obrigado por lerem, comentem e até a próxima \o
Nivel: Básico
O que vamos aprender?
Criar Timers Independentes
O que vamos precisar?
Multimedia Fusion 2(Duh)
Time X(Duh²)
OBS: Não sei se ele ja vem como MMF2, então estou disponibilizando ele para download.
Introdução ao Time X
Eu tenho certeza que você ja teve/ainda tem problemas com uma coisa do Multimedia Fusion 2: o "The Timer"(
Ve a linha "Time"? Esse é o Timer padrão do Multimedia Fusion 2.
"Ta... idai?"
Idai que quando você faz eventos de "every, time equal to", você está usando apenas UM timer, o mesmo, então todos os eventos seguirão "um padrão", deixando mais dificil de se usar...
O evento Every 1 Second vai se ativar a cada 1 segundo deste timer, não a cada um segundo que o evento foi ativado, então se você o ativa aos "2,99 segundos" ele não vai repetir ou ativar no "3,99", e sim no "3,00".
Isso é um problema, não? Porém, há uma alternativa, se chama Time X.
As funções do Timer X
Vamos colocar o Time X no frame. Caso você a tenha, você podera encontra-la com este icone:
Ao colocar, abrira uma janela:
Bem, há apenas uma opção, "Number of Timers", são quantos timers você quer criar para seu frame. E isso é uma vantagem, pois assim não precisa criar vários.
IMPORTANTE: O número de timers é números maiores que 0, porém os ID dos timers são baseados em 0, por exemplo: você põe 1 timer, ele é o ID 0, você põe 2, os ID serão 0 e 1.
Enfim, para o exemplo mais tarde, deixe 1 mesmo.
Agora vamos para o Event Editor.
Vamos primeiro aos eventos
Vou mostrar apenas os eventos importante para nosso objetivo: Timers Independentes
Global Timers->Start Timer
Começa o timer de ID X.
Global Timers->Stop Timer
Para o timer de ID X, meio que um Pause Timer
ATENÇÃO: o timer não volta para 0
Global Timers->Toggle Timer
Pausa/Continua o timer de ID X.
Global Timers->Set Timer
Coloca o timer de ID X em um certo número
Global Timers->Reset Timer
Volta o timer de ID X para 0
Os outros são a mesma coisa, mas para TODOS os timers.
Agora vamos para as conditions importantes para nosso objetivo:
Global Timers->Timer is counting?
Verifica se o timer de ID X está ativo.
Global Timers->Timer equal to...
Verifica se o timer de ID X é igual a Y milisegundos
Lembrando: 1000 milisegundos = 1 segundo
Global Timers->Timer different from...
Verifica se o timer de ID X não está igual a Y milisegundos
Global Timers->Timer greater than...
Verifica se o timer de ID X é maior que Y milisegundos
Global Timers->Time lower than...
Verifica se o timer de ID X é menor que Y milisegundos
Exemplo 1: "O teste"
Primeiro, vamos testar nosso Time X. Se você colocou no tutorial e está até agora, deixe, se não, coloque de novo(Time X com 1 Number of Timers)
Coloque 4 botões: Start, Stop, Pause/Continue, Reset
Coloque Mais um botão(nome Set) e um edit box(nome SetEdit)
Agora coloque uma string com suas preferencias.
Ficara algo assim:
Agora vamos aos eventos:
- Código:
**Conditions:
Always
**Events:
String->Change Alterable String->Str$(GetTimer("Time X", 0))
O GetTimer pode ser encontrado em "Retrieve Data from an object -> Time X -> Get Global Timer" e no valor que ele pede, ponha o ID do timer.
E para quem não sabe, o "Str$( )" é para transformar números em texto.
Agora vamos fazer os controles:
- Código:
**Conditions:
Start -> Button Clicked?
**Events:
Time X -> Global Timers -> Start Timer -> 0
- Código:
**Conditions:
Stop -> Button Clicked?
**Events:
Time X -> Global Timers -> Stop Timer -> 0
ATENÇÃO: O timer não volta para 0 e pode ser continuado com toggle.
- Código:
**Conditions:
Pause/Continue -> Button Clicked?
**Events:
Time X -> Global Timers -> Toggle Timer -> 0
- Código:
**Conditions:
Reset -> Button Clicked?
**Events:
Time X -> Global Timers -> Reset Timer -> 0
ATENÇÃO: Ele NÃO PARA o timer.
- Código:
**Conditions:
Set -> Button Clicked?
**Events:
Time X -> Global Timers -> Set Timer -> 0 -> Val( Edittext$("SetEdit"))
E para quem não sabe, "Val( )" é para transformar texto númericos em números.
Agora que você terminou, você pode testar:
Download do exemplo:
Exemplo 1 - "O Teste"
Exemplo 2: "A prova"
Pré Explicação:
Este exemplo irá mostrar que ele(o Time X) é independente do Timer do MMF2.
Ao clicar no botão start, os counters vao começar a se "adicionar", um com condition Every do MMF2, o outro pelos Miliseconds do Time X.
Você verá a diferença.
Crie um novo projeto ou frame, coloque um Time X com 1 timer, duas strings(timer e realtimer), 2 counters(CTimer e CRealTimer) e um botao Start:
Vamos para o Event Editor:
- Código:
**Conditions:
Always
**Events:
Timer(string) -> Change alterable string -> "Timer: "+str$(value("CTimer"))
RealTimer(string) -> Change alterable string -> "Time X: "+str$(value("CRealTimer"))
- Código:
**Conditions:
The Timer(mmf2) -> every -> 1 second
Global Value A = 1
**Events:
CTimer -> Add to counter -> 1
- Código:
**Conditions:
Always
Global Value A = 1
**Events:
CRealTimer -> Set Counter -> GetTimer("Time X", 0)/1000
- Código:
**Conditions:
Start -> Button Clicked?
**Events:
Set Global Value A to 1
Time X -> Global Timers -> Start Timer -> 0
Agora podemos testar:
Neste teste, o timer do MMF2 começou praticamente quando cliquei, porém o Time X marcou normal.
Neste teste, o eu cliquei aos 2 segundos e meio de pausa, o timer do MMF2 marcou o primeiro segundo em 0,5 segundos, enquanto o Time X continua marcando certinho.
Download do exemplo:
Exemplo 2 - "A Prova"
Conclusão
Após os dois testes, podemos concluir que o Time X é uma opção muito melhor quando tratado de eventos com tempo, o único problema é se você [s]for burro[/s] tiver problemas com calculo de conversão, terá problemas com ele talvez, porque ele só marca valores em Milisegundos(1000 milisegundos = 1 segundo, para transformar divida o valor por 1000). O outro é que ele não tem "Every", o every que ele tem é com o timer padrão do MMF2 também, então você tera que fazer seu every do seu jeito.
Enfim, espero ter ajudado.
Obrigado por lerem, comentem e até a próxima \o
Doriano- Usuário
- Mensagens : 5
Data de inscrição : 18/02/2010
Re: Usando Timers com Time X
Matéria longa o.o'. Nossa, sem palavras, parabéns =D
Aprovado, com certeza.
Aprovado, com certeza.
Tópicos semelhantes
» [MINI TUTORIAL]Usando Flags
» Movimento usando floating points (variáveis flutuantes)
» Jogo estilo “Bang-Bang” e Worms usando Seno e Cosseno
» Movimento usando floating points (variáveis flutuantes)
» Jogo estilo “Bang-Bang” e Worms usando Seno e Cosseno
Fusion Makers :: Geral :: Matérias :: Iniciante
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|