PESQUISA: 

 

Fórum de Flash
Fórum de discussão sobre Flash moderados por especialistas.

tutoriais
Os melhores tutoriais de Flash escritos em Português.

open sources
Milhares de "open sources" devidamente catalogadas e classificadas.

jogos
Centenas de viciantes jogos desenvolvidos em Flash.

websites
Selecção dos melhores websites em Flash.

bibliotecas
Bibliotecas de software, componentes, fontes e sons para Flash.

artigos
Artigos técnicos indispensáveis para profissionais em Flash.

Newsletter
Receba todos os dias a newsletter do Flash Web Training com as principais notícias sobre tecnologia e informática.
 
Curso Online
Curso de Flash 5 e MX com acompanhamento de formadores especializados.
 
flash shopping
Online Store com os melhores produtos dedicados ao Flash.
 
conferências
Principais conferências e eventos sobre Internet e Novas Tecnologias.
 
job opportunities
Anúncios de emprego para empresas que procuram profissionais de Flash.
 
suporte técnico
Caso tenha alguma dificuldade, contacte o nosso suporte técnico.

 

 
Homepage Tutoriais ActionScript

Ficha Técnica
Autor: Flash Web Training
Versão: Flash 5
Dificuldade: Actionscript
Data de Publicação: 02/10/2002


Introdução

O Flash tem uma série de objectos embutidos, cada um destes objectos tem definidas as suas propriedades e métodos no seu protótipo"prototype", mas por vezes podemos ter interesse em criar nos novos métodos ou até reescrevê-los ou estendê-los. Neste tutorial vamos ver como fazemos tudo isto, não é muito difícil, mas é muito útil.

Ficheiro Swf

Downloads:

Flash Player icon Ficheiro Fla e Swf Tutorial em PDF
 

Criar novos Métodos Embutidos "Built-in Methods"

O Flash tem numerosos Objectos Embutidos "Built-in Objects" como por exemplo, MovieClip, String, Math, Array, Color, e Object. Cada um tem métodos e propriedades úteis que são definidas no manual de Actionscript. Mas imagina que querias que todos os Movie Clips tivessem um método que rodasse 180º na horizontal e na vertical, algo como bola.flipX (), por outras palavras, que cada Movie Clip no teu Filme herdasse o método flipX() automaticamente.

Na verdade, isto não é muito difícil. Se souberes a sintaxe certa podes adicionar o teu método ao "prototype" do objecto embutido. Por exemplo, isto é como adicionar o método flipX () à class do Movie Clip:

MovieClip.prototype.flipX = function () {

this._xscale = -this._xscale; };

};

Agora podes rodar qualquer Movie Clip chamando o método assim:

mc.flipX ();

Agora um método flipY () para também poderes rodar 180º no eixo y:

MovieClip.prototype.flipY = function () {

this._yscale = -this._yscale;

};

Em geral, podes adicionar um método a um objecto embutido através desta sintaxe:

BuiltinObject.prototype.method = function () {

// codigo

};

(Nota de terminologia: o método MovieClip.flipX () que criámos não é um "prototype"; é um método "prototype". A class MovieClip só tem um "prototype", por isso não podes adicionar um "prototype" ao MovieClip.)

A seguir um SWF que demonstra os resultados dos métodos flipX () e flipY ():




Reescrever Métodos Embutidos "Built-in Methods"

Não só podes adicionar novos métodos aos Objectos Embutidos "Built-in Objects", como também reescrever os seus métodos. Por exemplo, Branden Hall do Figleaf escreveu novos métodos para o objecto String que são substancialmente mais rápidos no player do Flash que os existentes por defeito.

Para reescrever um método embutido, só tens que usar a mesma sintaxe usada para adicionar um método. Por exemplo, o método Array.push () é bastante lento no Flash 5. Podes reescrevê-lo com o seguinte código:

Array.prototype.push = function (data) {

this[this.length] = data;

};

O código acima insere dados no fim do array actual. Atenção que este código é usado para se referir ao objecto em questão, dentro do método.


Estender Objectos Embutidos Estáticos "Static Built-in Objects"

Math, Selection, Key e Mouse são objectos estáticos "Static Objects", ao contrário de outras classes como Array e Date. Estáticos "Static" significa que são objectos únicos, só encontras um objecto; não podes os podes instanciar. Por instanciamento não podes criar mais nenhum objecto Math.

A extensão de alguns objectos embutidas terá que ser feita de uma forma um pouco diferente. Objectos estáticos não têm a propriedade prototype, então, como alternativa tens que adicionar propriedades e métodos directamente no objecto. Por exemplo, isto é como poderias escrever a função Math.distance (), esta função encontra a distância entre dois pontos:

Math.distance = function (x1, y1, x2, y2) {

var dx = x2 - x1;
var dy = y2 - y1;
return Math.sqrt (dx*dx + dy*dy);

};

Em geral, podes usar esta sintaxe para estender objectos estáticos:

StaticObject.method = function () {

// code

};


Nota: não uses esta sintaxe:

StaticObject.__proto__.method = função ()


__proto__ usado neste caso adicionará o método ao Object.prototype que nós não queremos.


Há vários sites que armazenam colecções de métodos de prototype:

http://www.layer51.com/proto/
http://www.five100.com/protos/protoJunkie.html
http://www.sephiroth.it/download/prototype.php

 
Espero que este tutorial te tenha ajudado. Se tiveres alguma dúvida ou questão, não hesites em utilizar os nossos Fóruns de Discussão.
 
Ângelo Castanheira
angelo.castanheira@flashwebtraining.com
 
« Anterior   
 
Copyright ©2002-2008 Desenvolvimento de Sites , Serviços de Web Design Todos os direitos reservados