FLASHGURU (155 pts)

JOÃO NETO (78 pts)

LUIZ AVANCI (51 pts)

EDUARDO WALMOTT (226 pts)

GÉRIO (93 pts)

RÔMULO NUNES (32 pts)

GUILHERME G.G. (137 pts)

MARCELO SIQUEIRA (96 pts)

ZECA BALA (45 pts)

LEANDRO AMANO (83 pts)

PANDOGO (82 pts)

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

Como fazer um efeito de escalar imagens no mouseOver e no MouseOut?

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

Como faço para um objeto seguir em um caminho sinuoso?

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

Quero fazer um descanso de tela no Flash (ScreenSave)?

Quando gerado o swf, o texto perde a resolução.

Como posso dar uma ação a um movieclip quando outros dois se chocam?

Como abrir, com um arquivo mas redimensionado e posisionado em determinado local?

Como faço para redimensionar um preenchimento gradiente?

Como controlar uma trilha sonora com Action Script?

Tem como eu implementar a navegação de um filme do Flash pelos botões do browser?

Preciso de uma função Javascript para fazer a tela tremer. E dá para fazer isso no Flash?

Como fazer um objeto se movimentar pelo teclado (UP, DOWN, Left e Rigth)?

Problemas com variáveis importadas de um txt.
Degradé com tons metálicos - Fireworks

Separar mensagens das listas das pessoais, usando o Outlook

Line Draw

Criando texto neon.

Nikefootball, uso e abuso do flash - Avaliação de sites

ListBox no FlashMX.

GetMySQLData para Flash5 (segunda parte)

Load Movie into level (nível)

Loop Mixer.

Quando usar vetor ou bitmap?

Máscaras no Fireworks MX, o mistério!

HTML no Flash 5 - A solução para formatação de textos longos.
Puzzle

Mouse cross F5

Message Board Flash+ASP

3dbuilderv

Controle deslizante de volume

3d cube2

DragVariable

Rater2

3d frame by frame

ComboBox com load movie

Cronômetro

Bola de futebol
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