MUZAK (45 pts)

DEN IVANOV (260 pts)

RICARDO FIGUEIRA (33 pts)

SÁVIO PONTE (39 pts)

LUI FERNANDO (151 pts)

GABRIEL SPORCH (53 pts)

RICARDO TEIXEIRA (40 pts)

LUIZ AVANCI (51 pts)

LUIZ HERRERA (117 pts)

SYDNEY GANHO (60 pts)

ZEBEDIAH (35 pts)

DAUTON JANOTA (255 pts)
Treinamento PontoFlash de Flash e ActionScript

Como alinhar dinamicamente um movieclip no centro do palco, horizontalmente e verticalmente?

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

Como verificar se um campo de formulário não foi preenchido?

Preciso fazer uma validação num formulário.

Quicktime no Flash.

Como eu faço para criar um arrays de variáveis com um índice?

Preciso pegar o número do frame em que se encontra a animação e ir para uma outra cena no exato frame em que se encontrava.

Preciso colocar uma variável PHP num campo de texto do Flash?

Como desabilitar um botão quando eu carrego o swf e habilitar quando descarregar o swf.

É possível carregar um filme (loadmovie) numa cena determinada?

Como que eu faço um texto tremer no Flash?

Não conseguir determinar corretamente sua localização (hierarquia ou posição) de uma variável.

Como substituir uma letra de uma string?

Como fazer um mousetrail com duplicate e alpha?
Formulário usando Flash e PHP

Macromedia Flex

A história do Flash.

Duplo clique.

Menu dinâmico a partir de um xml.

Família Macromedia Studio MX 2004

Mascara animada no Flash MX

Objeto Movieclip - Endereçamento (segunda parte)

Controlando um swf que está em outro frame

Colisão (hitTest)

Flash MX 2004 Updater

Code Animation - Parte 2
Text lights 2

Zoom e movimento

Drawline

Botão comutador

Forca

Odômetro

Efeito MTV

Page cur

Barneys menu

Intro animada

Magnetism3

Plasma2D
HOME | TUTORIAIS
Número randômicos sem repetições no Flash 5.
por Stickman

O que preciso saber?

Esse exemplo funciona criando uma matriz [array] de todos os valores possíveis em ordem e depois dispondo-os um a um numa nova matriz. O gerador pega o último valor não utilizado e o insere no lugar do valor usado, reduzindo gradualmente o número de valores disponíveis.

Aí vai o código, que você vai encontrar nas ações do primeiro frame do filme:

  

 function getUniqueRandom (number) {
      numberlist = new array();
      while (counter<number) {
         ++counter;
         numberlist[counter] = counter;
      }
      this.randomlist = new array();
      while (counter>0) {
         picked = math.floor(math.Random()*counter)+1;
         this.randomlist[counter] = numberlist[picked];
         numberlist[picked] = numberlist[counter];
         --counter;
      }
   }


Para ativar a função, use o código abaixo:

  

  x = new getUniqueRandom(10);

 

O título 'x' pode ser qualquer coisa que você queira e o número entre parênteses é a quantidade de valores randômicos de que você precisa. O que resulta é uma matriz x.randomlist[], de números randômicos. Para obter o primeiro valor (por exemplo), você usaria o seguinte código:

 

  firstnumber = x.randomlist[1]
   secondnumber = x.randomlist[2]

 

... e assim por diante, até obter a quantidade de valores randômicos de que precisa.

Mas não entendo como funciona!

Resumindo, funciona assim: primeiro criamos uma matriz (numberlist) que contém uma lista dos números em seqüência, a partir de 1 até o que número que pedimos. Assim, se pedimos por 100 números randômicos únicos, teremos uma matriz 1, 2 ,3... 98, 99, 100.

   Então criamos outra matriz (randomlist). E executamos um loop, que a cada vez pega aleatoriamente um número entre 0 e o número de elementos em nossa matriz numberlist. Copiamos então o valor obtido na matriz numberlist para a "vaga" seguinte na nossa matriz randomizada. Finalmente, copiamos o último valor restante na matriz numberlist para o lugar do número que acabamos de pegar. Isso reduz em uma unidade o número de valores disponíveis na matriz numberlist (porque o valor que acabamos de pegar não está mais disponível).

   Se você está confuso, dê uma olhada no código no arquivo .fla, que está bem comentado. Você pode também ler a versão original para Flash 4, que tem mais explicações acerca do funcionamento da técnica (embora use uma sintaxe diferente, funciona da mesma maneira).

Ei, porque não usar array.splice para remover o valor "usado"?

Tentei esse método, mas era muito lento. Vi que o método acima, embora menos elegante, é muito mais rápido.

Boa sorte!
Stickman

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