ALEXANDRE PORTO (1281 pts)

RICARDO TAKAHASHI (180 pts)

RÔMULO NUNES (32 pts)

DAUTON JANOTA (255 pts)

ÉMERSON ROCHA (85 pts)

RODRIGO AMARAL (56 pts)

DAAFY (55 pts)

IRAPUAN MARTINEZ (45 pts)

GABRIEL SPORCH (53 pts)

JOTA LAGO (40 pts)

SYDNEY GANHO (60 pts)

PANDOGO (82 pts)
Treinamento PontoFlash de Flash e ActionScript

Preciso de uma ação para desabilitar um botão.

Como fazer a timeline em vez de passar o filme para frente volte o filme?

Como alterar duas propriedades de um objeto num só evento de um botão?

Porque o ponteiro do mouse trocado não acompanha o mouse perfeitamente como deveria?

Como fazer um executável no Flash com autorun?

Como poderia colocar um bitmap no MX via load e posiciona-lo no palco?

Como movimentar na horizontal um objeto no mouse Over?

Botões em _levels inferiores continuam clicáveis.

Como usar o Array.sort para achar o maior valor entre 11 variáveis?

Eu queria que no mouse over aparecesse um texto acompanhando o mouse.

Qual o significado de um Array para a programação no Flash?

Como abrir uma janela popup no Flash?

Como fazer um objeto desfocado em movimento?

Algumas dicas de tipografia.
Linha que segue o mouse.

Desenvolvendo um Controle de Volume Customizado em Flash

Line Draw

Utilização da class XMLConnector

Transparência no Flash.

Aplicativo Dirigido por Dados com XML

Flash Intro - Aspectos Básicos do MX

Formulário de e-mail com ASP.

Site da banda os Titãs - Avaliação de sites

Animação no Flash

Janela popup.

O "X" do MacOS no PhotoShop
Hit test

Planeta orbita

Troca cor de fundo

Motionguidemask2

Esconde scroll

Transição

Nudemask2

Check date

Sombra Texto

Menu pastas

Munu ampliando

Logos caindo
HOME | TUTORIAIS
Número randômicos sem repetições no Flash 4.
por Stickman

Clique para gerar uma nova listagem de números

Alguém me perguntou uma vez como se pode gerar uma série randômica de números sem repeti-los. A solução mais óbvia é conferir a cada vez que gerar um novo número, para ver se já apareceu antes. Se isso aconteceu, você o descarta e gera outro... e segue dessa forma até conseguir a quantidade de números de que precisa. No entanto, isso é bastante ineficiente - você teria que fazer tantas checagens, mesmo para conseguir uma pequena quantidade de números válidos, que ia desistir - e não o livra da possibilidade de ficar preso em loops praticamente intermináveis.

Pensei bastante sobre isso e inventei esse método, que provavelmente não é uma novidade, mas que nunca tinha visto antes. Você vai achar o filme mostrado acima zipado aqui [link] e uma versão apenas com o código de randomização aqui [link] (essa é a versão a que me refiro no texto abaixo).

Ilumine-me, ó ser de pouca modéstia!

Vamos dizer que você quer cinco números randômicos únicos entre 1 e 5. Obviamente, apenas gerar cinco números randômicos não vai funcionar - um mesmo número quase certamente vai aparecer mais de uma vez. Em vez disso, criamos séries de variáveis (na verdade, uma matriz) de todos os valores possíveis - nesse caso, 1, 2, 3, 4, 5. Essas variáveis (var1 a var5) são criadas nesse loop:

Set Variable: "number" = 5
Set Variable: "counter" = 1
Loop While (counter <= number)
Set Variable: "var"&counter = counter
If (counter>1)
Duplicate Movie Clip ("/random1", "random"&counter, counter)
Set Property ("random"&counter, Y Position) = ((counter-1) * 20)
End If
Set Variable: "counter" = counter + 1
End Loop

Agora faremos a randomização. Primeiro, começamos um loop que conta de trás para frente, a partir do total de números randômicos que queremos (nesse caso, cinco), até dois. Em seguida, geramos um número randômico random_number entre um e nosso número máximo (no caso, cinco). Pegamos o valor da variável correspondente ao nosso novo número randômico e o colocamos numa nova variável "random"&counter. Agora deletamos aquela variável "usada" da matriz, colocando em seu lugar o último valor não utilizado. Finalmente, deduzimos uma unidade do contador e recomeçamos o loop. Depois que o loop for feito, passamos o valor resultante da variável matriz para random1.

Set Variable: "counter" = number
Loop While (counter > 1)
Set Variable: "random_number" = (Random (counter )) + 1
Set Variable: "random"&counter = eval("var"&random_number)
Set Variable: "var"&random_number = eval("var"&counter)
Set Variable: "counter" = counter - 1
End Loop
Set Variable: "/random1:value" = var1

Como é que é?

Para ficar mais claro, vamos exemplificar. Eis aqui uma possível série de eventos:

Loop 1: counter = 5

random_number=3
random5 = var3 (3)
var3 = "var"&counter
//se counter=5, var3=var5
//então, var1=1, var2=2, var3=5, var4=4, var5 é ignorada

Loop2: counter = 4

random_number = 2
random4 = var2 (2)
var2 = "var"&counter
// se counter=4, var2=var4)
// então, var1=1, var2=4, var3=5, var4 e var5 são ignoradas e assim por diante.

Portanto, a cada vez que "usamos" um dos valores da matriz (var1 a var5), nós o removemos e o substituímos pelo valor do último elemento da matriz - no primeiro loop, isso seria var5, no segundo loop var4, no terceiro loop var3... Sacou?

Copyright de todos os arquivos e textos de ©Stickman 1998 - 2001. Sobre copyright, termos de uso e informações, por favor visite www.the-stickman.com/terms.

Baixe aqui o arquivo FLA desse tutorial.



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
0 comentário