FLASHGURU (155 pts)

LUIZ AVANCI (51 pts)

MUZAK (45 pts)

GABRIEL SPORCH (53 pts)

ILVA RUDEV (90 pts)

DENIS CARAVALHO (85 pts)

MANGOOST (80 pts)

GUILHERME G.G. (137 pts)

NILTON BICALHO (61 pts)

MAURO ROCHA TAVARES (40 pts)

EDUARDO WALMOTT (226 pts)

MARLOS ALVES CARMO (90 pts)
Treinamento PontoFlash de Flash e ActionScript

Como fechar uma janela fullscreen ou poup?

Como fazer que num movie tenha três músicas, onde eu posso parar e continuar de onde ela parou?

Como abrir, de um menu em Flash, um HTML em outro frameset?

Como fazer um autoRun para um executável do Flash?

Não consigo enviar uma ação de dentro de um movieclip para outro. Eles estão em frames diferentes na timeline principal.

Como fazer um random que nunca repita o resultado?

Como utilizar a função para procurar valores dentro de uma variável?

Como definir um loop num som tocado via actionscritp.

Como que faz para um gif ou uma imagem seguir o mouse?

Flash 5 ou Flash 4?

Porque no meu flash, 1 + 15 retorna 15 e não 6?

Estou precisando contolar o volume de uma trilha sonora em loop em um site.

Preciso fazer o "play" ao contrario, ou seja voltar do último para o primeiro frame.

Como traço uma linha no meu filme com o mouse?
Shared object.

Transparência no Flash.

Fontes no Flash - campos de texto e HTML

Um contador Flash + PHP

Desenvolvendo um Tocador de Vídeo em Flash

Busca em Textos no Flash MX

Comunicação Flash-PHp-MySql - Editar banco de dados

Criação de letras transparentes - Fireworks

Duplicate Movieclip.

Criando texto neon.

Controlando MovieClip pelas teclas direcionais.

ListBox no FlashMX.
Fogos de artificio

Scroll f5

Swap Movieclips

F5 Scroll

Nudemask2

Dynamic

Aleatórios

Drag manchas

Digitalclock

Mouse thingy

Type 2

BarrasCrescentes
HOME | TUTORIAIS
Objeto array - Arrays X Objetos
por Helen Triolo

1 / 2 / 3

 

Tomando o exemplo do tutorial anterior, uma Array de arrays, você pode notar que, ainda que seja um modo eficiente de economizar dados, não é sempre fácil lembrar qual indicador vai com que. Para obter o montante doado por um indivíduo, por exemplo, você tem que se lembrar que aquele "amount" é o 3º elemento em cada Array. Seria mais fácil lembrar que esse ou aquele valor pode ser acessado utilizando-se o string "amount" no lugar de index=2.

Criar uma classe e um objeto daquela classe

Ao invés de usar uma Array multidimensional, podemos, então, criar um objeto com esse construtor para definir todas as propriedades iniciais do objeto Doador:

function Donor(firstname, lastname, amount, state) {
this.firstname = firstname;
this.lastname = lastname;
this.amount = amount;
this.state = state;
}

Para criar um doador individual, utilizamos esse código:

firstDonor = new Donor("John","Anderson",18,"Ohio");

o qual parece consideravelmente semelhante ao modo com que montamos a ordem na página anterior. Mas agora nós podemos obter o montante de doação de John assim:

trace("John Anderson donated $" + firstDonor.amount);

ao invés da via mais obscura de "entries[0][2]".

Configurar uma Array daqueles objetos

Assim, temos um objeto doador, mas o que queremos realmente é manter uma coleção deles. Para fazer isso, salvamos todos numa Array. Terminamos com uma Array de objetos em vez de uma Array de arrays, como na página anterior. Aqui está o código para fazer isso:

allDonors = [];
allDonors.push(new Donor("John","Anderson",18,"Ohio"));
allDonors.push(new Donor("Carly","North",225,"Florida"));
allDonors.push(new Donor("Simon","Beard",200,"Connecticut"));
allDonors.push(new Donor("Francine","Smith",35,"Alaska"));
allDonors.push(new Donor("Jack","Ferguson",415,"Maine"));

Qual a vantagem de fazer isso? Em primeiro lugar, nós podemos acessar os elementos através de nomes lógicos, em vez de através de índices numéricos aninhados, como vimos acima. Por outro lado, uma vez que temos um objeto de classe definida (o Doador, nesse caso), podemos também criar métodos que podem ser aplicados a qualquer objeto daquela classe.

Aplicar um método para uma classe

Por exemplo, se quisermos solicitar de todos os nossos doadores alguma porcentagem a mais sobre o que eles deram nos últimos tempos (sórdido, muito sórdido...), nós poderíamos criar um método findNewAmount que calcularia isto e utilizá-lo para imprimir uma lista de quantias a solicitar da próxima vez:

function FindNewAmount(percent) {
return Math.round(this.amount * (1 + percent/100));
}
Donor.prototype.findNewAmount = FindNewAmount;

for (i in allDonors) {
// show a 20% increase
trace("Requested contribution for " + allDonors[i].firstname + " " +
allDonors[i].lastname + " is $" + allDonors[i].findNewAmount(20));
}

Assim, agora temos uma array lógica e um modo perfeito para aplicar métodos a ele. Infelizmente, no Flash 5, talvez tivéssemos desistido de fazer isso devido a dificuldade para ordenar usando o método de classificação Objeto Array (desde que ele só se aplica a Arrays verdadeiras, não a objetos). Mas no Flash MX nos foi dado um método novo, sortOn, que é usado para Arrays de objetos.

Classificar uma Array de objetos

Como você pode ver olhando a saída (no final da página) do código seguinte, sortOn trabalha bem para classificar campos de strings, mas não campos numéricos. Para produzir uma ordenação numérica, nós arrancamos o método sortOn do Paul Willoughby do layer51 e o aplicamos:

function Donor(firstname, lastname, amount, state) {
this.firstname = firstname;
this.lastname = lastname;
this.amount = amount;
this.state = state;
}
allDonors = [];
allDonors.push(new Donor("John","Anderson",18,"Ohio"));
allDonors.push(new Donor("Carly","North",225,"Florida"));
allDonors.push(new Donor("Simon","Beard",200,"Connecticut"));
allDonors.push(new Donor("Francine","Smith",35,"Alaska"));
allDonors.push(new Donor("Jack","Ferguson",415,"Maine"));

function FindNewAmount(percent) {
return Math.round(this.amount * (1 + percent/100));
}
Donor.prototype.findNewAmount = FindNewAmount;

trace("Original data:");
for (i=0; i<allDonors.length; i++) {
trace(i + " A contribuição requerida a" +
allDonors[i].firstname + " " + allDonors[i].lastname + " is $" +
allDonors[i].findNewAmount(20));
// essas três últimas linhas são juntas
}

allDonors.sortOn("lastname");
trace("\nAfter sort on lastname:");
for (i=0; i<allDonors.length; i++) {
trace(i + " A contribuição requerida a" + allDonors[i].firstname + " " +
allDonors[i].lastname + " is $" + allDonors[i].findNewAmount(20));
// essas duas últimas linhas são juntas
}

// sort numéricos necessitam de uma função customizada
// não funcionará:
allDonors.sortOn("amount");
trace("\nAfter sort on amount (não funciona com o sortOn regular:)");
for (i=0; i<allDonors.length; i++) {
trace(i + " A contribuição requerida a" + allDonors[i].firstname + " " +
allDonors[i].lastname + " is $" + allDonors[i].findNewAmount(20));
// essas duas últimas linhas são juntas
}

// esse funcionará:
// novo método sortOn de layer51.com
Array.prototype.sortOn = function(p) {
Array.$sortprop = p;
var sortfunc = function (a,b) {
var p = Array.$sortprop;
return b[p] < a[p];
}

this.sort(sortfunc);
delete Array.$sortprop;
}

allDonors.sortOn("amount");
trace("\nAfter sort on amount (com o protótipo sortOn de PaulW):");
for (i=0; i<allDonors.length; i++) {
trace(i + " A contribuição requerida a" + allDonors[i].firstname + " " +
allDonors[i].lastname + " is $" + allDonors[i].findNewAmount(20));
// essas duas últimas linhas são juntas
}

Que produz essa saída:

Dados originais:
0 A contribuição requerida a John Anderson é $22
1 A contribuição requerida a Carly North é $270
2 A contribuição requerida a Simon Beard é $240
3 A contribuição requerida a Francine Smith é $42
4 A contribuição requerida a Jack Ferguson é $498

Após classificação pelo sobrenome:
0 A contribuição requerida a John Anderson é $22
1 A contribuição requerida a Simon Beard é $240
2 A contribuição requerida a Jack Ferguson é $498
3 A contribuição requerida a Carly North é $270
4 A contribuição requerida a Francine Smith é $42

Após classificação sobre a quantia (não funciona com o sortOn regular)
0 A contribuição requerida a John Anderson é $22
1 A contribuição requerida a Simon Beard é $240
2 A contribuição requerida a Carly North é $270
3 A contribuição requerida a Francine Smith é $42
4 A contribuição requerida a Jack Ferguson é $498

Após classificação sobre a quantia (com o protótipo sortOn de PaulW)
0 A contribuição requerida a John Anderson é $22
1 A contribuição requerida a Francine Smith é $42
2 A contribuição requerida a Simon Beard é $240
3 A contribuição requerida a Carly North é $270
4 A contribuição requerida a Jack Ferguson é $498


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
0 comentário