DAUTON JANOTA (255 pts)

IRAPUAN MARTINEZ (45 pts)

RICARDO FIGUEIRA (33 pts)

LUIZ AVANCI (51 pts)

GUILHERME G.G. (137 pts)

JOÃO NETO (78 pts)

DANIELA PIRES (86 pts)

LUIZ HERRERA (117 pts)

EDUARDO PERROUD (52 pts)

JOTA LAGO (40 pts)

MUZAK (45 pts)

NETO LEAL (116 pts)
Treinamento PontoFlash de Flash e ActionScript

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

Como fazer um botão desligar o som com um clique e ligar com outro clique sobre ele mesmo?

Como se faz um gradiente com transparência no flash.

Tenho um filme e gostaria de fazer um loading pois o shockwave deu 100 kb.

Como descarregar um SWF quando muda de cena?

Com eu faço para chamar um script em PHP, usando flash4, passando para e este uma variável digitada num form?

Como abrir uma janela popup dentro de um arquivo .exe?

É possível fazer um upload de um arquivo através do flash?

Uso do método hitTest no Flash 5 para verificar colisão.

Como colocar elementos separados por vírgula em uma posição específica de um array?

Quero alterar a ordem de movimentação da tecla tab num formulário.

Como colocar uma ação no clique de um movieclip, sem aparecer a mãozinha?

Como colocar um Ícone na Barra de Endereços no IE?

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

Sub-Menus entre frames, com o Dreamweaver

Desenhando apenas com Actionscript.

Local Shared Objects segunda parte.

Scanline no PhotoShop.

Funções de actionscripts

Duplicate Movieclip.

Carregamento dinâmico de JPG e máscara por AS

Conceitos de Programação e ActionScript.

Integrando o Flash com Arquivos de Vídeos II.

Jogo de colorir.

Entendendo como funciona um preloader. Terceira parte.
MTV

Menu folder

Busca texto

Random color

Drawline

Loop infinito

Cronometro

Spyral draw

Drop Javascript

Motionguidemask2

Page Curl

Static
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