JOTA LAGO (40 pts)

RICARDO FIGUEIRA (33 pts)

MARCOS JOSÉ PINTO (44 pts)

JONAS GALVEZ (521 pts)

IRAPUAN MARTINEZ (45 pts)

STICKMAN (155 pts)

ILVA RUDEV (90 pts)

MAURO ROCHA TAVARES (40 pts)

HELEN TRIOLO (444 pts)

RODRIGO AMARAL (56 pts)

GÉRIO (93 pts)

SASHA GUDEY (235 pts)
Treinamento PontoFlash de Flash e ActionScript

Galera ávida por colocar vídeo nas aplicações em Flash.

Quero fazer um movimento circular infinito sem quebras (truncados).

Tem como executar uma função para todos os movieclips sem usar a propriedade prototype?

Botões feitos no Fireworks não funcionam em um e-mail.

Como substituir uma letra de uma string?

Como eu abro uma janela popup de uma tag HTML em um arquivo .txt importado com load variables?

Como gravar dados de um Flash em um arquivo .mdb (Access)?

Quero fazer alguns layouts diferentes para o mesmo site e cada vez que o usuário entrar veja um deles.

Alguém sabe como funciona os parâmetros do startdrag? StartDrag (beleza1, false, 70, 15, 70, 180);. O que seria estas medidas?

Tem como abrir um PDF (acrobat reader) entro do Flash? Pode ser com Delphi?

Como fazer uma imagem de background no HTML não se repetir?

Como eu coloco uma data no Flash?

Como faço para que uma seta aponte para o botão em que o mouse estiver (roll over)?

Quero imprimir o conteúdo de um campo de texto e não somente a parte que está na tela.
Fireworks, o patinho feio da Macromedia.

Efeito de texto esticado (stretched text).

Grandene - Avaliação e sites

Máscara com gradiente.

LOAD vs XMLConnector, vantagens e diferenças no carregamento do XML

Menu circular em 3D personalizável

Quadro comparativo: Fireworks ou Photoshop

Família Macromedia Studio MX 2004

Menu dinâmico a partir de um xml.

Controlando MovieClip pelas teclas direcionais.

Primeiros passos - apresentação

Componentes no Flash MX 2004
On Off Button

Bounce

Barra de som

Espanto

Preload leve

3d cube2

Drag circling

Widgets

Set focus

Spectrum Sound Analyzer

Raspadinha

Theba
HOME | TUTORIAIS
Objeto array - Classificar uma array (sorting) e e arrays multidimensionais
por Helen Triolo

1 / 2 / 3

 

Tomando nosso primeiro exemplo do artigo anterior, a Array macarrao, suponhamos que quiséssemos ordenar os elementos dela em ordem alfabética? Fácil - só precisamos usar o método de classificar Array (sorting):

macarrao = ["spaghetti","tubetti","farfalle","ziti","penne"];
macarrao.sort();
trace (macarrao);

saída --> farfalle,penne,spaghetti,tubetti,ziti

Exatamente como esperávamos. Mas, e se tivermos uma array de números e quisermos colocá-los em ordem? Se tentarmos a mesma coisa:

ages = [13, 52, 33, 2, 25, 14, 3, 77, 8];
ages.sort();
trace(ages);

vamos ter essa saída --> 13,14,2,25,3,33,52,77,8

Não é exatamente o que tínhamos em mente. Isto é porque o método de classificação padrão sempre aplica uma classificação alfabética sobre os elementos da array sem prestar atenção nos valores atuais dos números (usando, ao invés, o valor ASCII do primeiro número na classificação). Para obter uma ordenação numérica, vamos precisar de uma função personalizada de classificação, que dirá ao método de classificação como ordenar os elementos. Eis aqui um exemplo corretamente funcional do que nós queríamos:

function sortByNumber(a, b) {
return (a > b);
}
ages = [13, 52, 33, 2, 25, 14, 3, 77, 8];
ages.sort(sortByNumber);
trace(ages);

saída --> 2,3,8,13,14,25,33,52,77

Muito melhor (mas não me pergunte como funciona. Você pode dar uma olhada no arquivo de ajuda para obter mais algumas explicações, e tenha em mente que "a" e "b" são números, assim, estamos basicamente dizendo "compare o valor numérico dos elementos quando classificar.")

Arrays Multidimensionais

Uma Array multidimensional em Flash é simplesmente uma array que contém outra array (ou muitas outras arrays). Um modo para criar uma dessas é simplesmente nomear todos os elementos, como fizemos anteriormente, assim:

foods = [["spaghetti","tubetti","farfalle"],["apples","oranges"],
["broccoli","asparagus","spinach"]];

Assim, em outras palavras, é uma array chamada "foods", que contém 3 elementos. Cada elemento é sua própria array - de macarrao, frutas e vegetais, no caso disso não ser óbvio. Então, por exemplo, para acessar o primeiro elemento (maçãs) da segunda array (["maçãs","laranjas"]), precisaremos usar dois índices da array para apontá-lo:

trace("O primeiro elemento da segunda array é " + foods[1][0]);

saída --> O primeiro elemento da segunda array é "maçãs"

O que dizemos lá? Dizemos, "Veja no segundo elemento de "foods" (foods[1]) e encontre o primeiro elemento daquela array (foods[1][0]) e diga-nos o que ele é". Um modo mais elaborado para fazer isso seria separar o segundo elemento como uma variável e achar seu 1º elemento:

secondElem = foods[1];
trace("O item que estou selecionando é " + secondElem[0]);

saída --> O item que estou selecionando é "maçãs".

Viu como é a mesma coisa? Se não, tente colar o código e brincar por aí com diferentes combinações até que a coisa faça sentido.

Classificar uma array multidimensional

Agora que podemos classificar arrays alfa-numericamente, ou por valores numéricos e criar arrays multidimensionais, vamos combiná-las todas dentro do exemplo visto acima: uma array multidimensional que é mostrada para o usuário numa série de campos de texto. Baixe aqui o exemplo.

Em primeiro lugar, nós criamos e nomeamos os campos de texto de tal modo que eles possam ser facilmente acessados em círculos. Isto é, os nomes devem ser uma combinação de uma string identificadora, mais um número. Os campos de texto para a primeira coluna, firstName, são nomeados assim: firstName0, firstName1, firstName2, firstName3, e firstName4.

Desse modo, nós, ou podemos recorrer ao campo de texto por seu nome, firstName0, ou por seu associativo-array-equivalente, esse ["firstName"+0] (Para mais informações sobre como endereçar objetos em Flash como esse, veja o artigo Objeto movieclip - endereçamento nessa mesma seção, o qual se aplica a todos os objetos - não somente aos movieclips - em Flash, incluindo variáveis e funções).

Em seguida criamos o conteúdo da array (ou o lemos a partir de um arquivo de texto externo), com essa instrução:

entries = [["John","Anderson",18,"Ohio"],["Carly","North",225,"Florida"],
["Simon","Beard",200,"Connecticut"],["Francine","Smith",35,"Alaska"],
["Jack","Ferguson",415,"Maine"]];

Alternativamente, se quisermos lê-los a partir de um arquivo de texto ou de um banco de dados, podemos mandar uma string como essa para o Flash:

mydata=John:Anderson:18:Ohio,Carly:North:225:Florida (etc)

e lê-la dentro de uma array como essa:

entries = []; // criei uma nova array

// depois do passo a seguir, subentries será uma array de strings
subentries = mydata.split(",");

// depois do loop a seguir, entries será uma array de arrays -- o que nós queremos
for (i in subentries) {
entries.push(subentries[i].split(":"));
}

(mas não precisamos fazer isso no exemplo acima - isto é só uma nota para qualquer um que deseje obter leitura de dados externa dentro de uma array Flash). Depois que nós tivermos o conteúdo de entradas da array, faremos uma função que preencherá nossos campos de texto com o conteúdo atual daquela array. Porque os nomeamos para fácil acessibilidade, podemos utilizar essa função para carregar os campos de texto:

function display() {
for (i=0; i<entries.length; i++) {
this["firstname"+i] = entries[i][0];
this["lastname"+i] = entries[i][1];
this["amount"+i] = "$" + entries[i][2];
this["state"+i] = entries[i][3];
}
}

e então chamar a função mostrar para mostrar outra vez os campos de texto sempre que o conteúdo da array mudar (i.e., depois de uma ordenação).

O passo final é para definir cada uma das funções de classificação e aplicar aquela apropriada para cada botão de classificação. Cada função de classificação fará com que toda a array seja ordenada baseada no conteúdo de um sub-elemento particular da array. Por exemplo, a função que classifica por estado (o 4o sub-elemento no interior de cada array, apontado pelo indicador 3) parecerá assim:

function byState (a, b) {
return a[3]>b[3];
}

e ela é aplicada ao botão "sort by state" como isso:

on (release) {
entries.sort(byState);
display();
}

Isso manda classificar todas as entradas da array baseado no valor do 4o elemento (state) de cada sub-array. (Obrigado a Fumio Nonaka e Tatsuo Kato por apontar este método de classificação na lista de codificadores de Flash) Uma função e um código similares são aplicados para cada um dos botões de classificação. Dê uma olhada no código fonte do fla para ver como a coisa toda trabalha.

Baixe aqui o exemplo do tutorial

Tradução:
Sérgio Ramalho

 

Estruturas / Classificar (sorting) / Array e Objetos


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
2 comentários


Comentário de Marco
| 23/5/2012 - 16:58 |


minha array tem nome, indice Marco, 10 Joao, 1 Renato, 4 preciso que retorne classificado pelo indice Joao, 1 Renato, 4 Marco, 10 nao consigo.



Comentário de leonardo
| 31/3/2010 - 14:20 |


O que seria childnode, e pra que serve as letras, ex: ii i+ i++ j etc..