RICARDO TEIXEIRA (40 pts)

JOTA LAGO (40 pts)

BÁRBARA TOSTES (64 pts)

AUTOR DESCONHECIDO (100 pts)

DENIS CARAVALHO (85 pts)

EDUARDO PERROUD (52 pts)

LUI FERNANDO (151 pts)

HELEN TRIOLO (444 pts)

DEN IVANOV (260 pts)

LUIZ HERRERA (117 pts)

DANIELA PIRES (86 pts)

ZECA BALA (45 pts)
Treinamento PontoFlash de Flash e ActionScript

Tenho uma variável que só abre na timeline principal, dentro do MovieClip não.

Como fazer um movie clip animado com alpha gradativo?

Eu gostaria de saber como faz o efeito de desfoque nos objetos!!

Como fazer uma contagem de dias até uma data específica?

Dica sobre o uso de cenas.

Como fazer um botão crescer no rollOver e voltar ao tamanho normal no rollOut?

Com o LocalConnection do FlashMX, posso enviar variáveis para outro SWF?

Classe para facilitar o uso dos SharedObjects.

Preciso fazer com que o Flash capture 2 teclas pressionadas ao mesmo tempo.

Como arrastar um objeto somente na horizontal?

Alguém aí tem um efeito de neve caindo

Como se usa o "linkage/export this symbol"?

Como fazer para o flash puxar um texto de um arquivo externo?

Como justificar um texto e criar uma barra colorida?
Includes.

Dicas para otimizar seu SWF (revisado e atualizado).

Cursor customizado no Flash5.

Integração Dreamweaver + Fireworks.

Citroen, máscaras que simulam vídeo - Avaliação de sites

Níveis dentro do Flash - Load Movie e Load Variables (primeira parte)

A história do Flash.

Jogo da Forca

Sistema de newsletter utilizando Flash + ASP.

Usando XML com Fireworks MX.

Como fazer uma panorâmica 360º com Flash e CorelDraw

Clipes Inteligentes (SmartClip).
Gravidade

Preloader com percent

Slide menu

Cronometro

Waterfall

Rotating dna

Timer

Loop FOR declarando variáveis

Duplicate MC

Preload advanced

Translação

Waterdrop
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