Actionscript 3.0

LuisPitbull

Power Member
Boas a todos!

Gostava de saber se existe por aqui alguem entendedor de AS3 para que me possa dar uma ajuda em várias duvidas minhas.

Tenho algumas luzes de AS2 e na verdade não estou a entender a forma de trabalho do AS3. Estou farto de ler artigos, tutoriais, movies, etc...e nada me é conclusivo.

Uns fazem de uma maneira, outros de outra e torna-se complicado saber o que é essencial e o que não é.

OU MAIS IMPORTANTE!!
Será que vale a pena avançar já para o ACTIONCRIPT 3 ou acham que devo mergulhar a sério no ACTIONSCRIPT 2?

Se alguem me pudes ajudar podia adicionar ao msn
[email protected]

Cumprimentos a todos!!
 
Última edição:
Tá decidido!! Vou para o ActionScript 3.0

Conforme for avançando vou tentar colocar ou responder a algumas duvidas básicas de AS3.

Para já posso começar por dizer que encontrei uma class muito boa para AS3, visto que o ZigoEngine e o FuseEngine ainda não estão preparados para o AS3.

A class pode ser encontrada aqui:
http://blog.greensock.com/category/tweening/

Além dos tweens convencionais tem também uma outra class para manipular filtros como blur, cor, DropShadow, Glow e Belevel.

O que tem a mais que os outros?? Permite fazer sequencias de tweens no mesmo movieClip de uma forma muito simples, o que no AS2 não éra assim muito facil (apesar de não impossivel).

Para já é o que tenho...

Abraços!!
 
AS3 Tween's

Estou a desenvolver um site todo em AS3.

Para já o que reparei é que estou a usar varias classes de Tweens para fazer as animações que quero.

Assim uso o:
TweenFilterLite para aplicar filtros bitmap como blur, drop shadow, etc e dar-lhes alguma animação...
O Tweener para movimentos de objectos ou instancias.

Ambos são muito faceis de usar.
 
AS3 :: Alpha num TextField

Não é facil aplicar a propriedade "alpha" numa caixa de texto...para isso é necessário incluir (embed) a font que queremos utilizar.

INCLUIR UMA FONT NA LIBRARIA:
1. Botão do lado direito do rato e escolher "New Font..."
2. Escolher a fonte e dar-lhe um nome
--- Essa fonte fica com um icon "A" na nossa libraria
Vamos disponibilizala para uso no AS
3. Botlao do lado direito do rato por cima do "A" da libraria e escolher "Linkage..."
4. Seleccionar "Export for ActionScript" e dar um nome na class (no exemplo dei "font1")
5. Confirmar com "OK" e temos a nossa font incluida na libraria e pronta para ser chamada por ActionScript!!

Agora podemos utilizar a nossa fonte incluida na libraria para criar as caixas de texto e aplicar o efeito alpha.
Para isso escrevi uma função (pode ser utilizada numa class) que coloca facilmente no stage uma caixa de texto com um texto qualquer, num tamanho qualquer e com uma cor qualquer.

Código:
function txtToStage(nome,texto,xx,yy,cor,size,opac,pos):void {
 var myFont:Font = new font1();
 var txtFormat:TextFormat = new TextFormat();
 txtFormat.font = myFont.fontName;
 txtFormat.size = size;
 nome.autoSize = TextFieldAutoSize.LEFT;
 nome.embedFonts = true;
 nome.antiAliasType = AntiAliasType.ADVANCED;
 nome.defaultTextFormat = txtFormat;
 nome.text = texto;
 if (xx=="centro") {
  nome.x = stage.stageWidth/2-nome.width/2;
 } else {
  nome.x = xx;
 }
 nome.y = yy;
 nome.alpha=opac;
 nome.textColor=cor;
 addChildAt(nome,pos);
}

function txtToStage(nome,texto,xx,yy,cor,size,opac,pos):void

nome = Nome da caixa de texto que queremos criar
texto = Texto que queremos incluir
xx = Posição X no stage
yy = Posição Y no stage
cor = Cor (Ex: 0x00FF00)
size = Tamanho da font (10)
opac = Alpha (de 0 a 1)
pos = Posição no stage (ordem de apresentação das instancias)

EX: txtToStage(nome1,"Meu texto","centro",stage.stageHeight/2,0x003366,10,1,2);

Se repararem, no lugar do argumento "xx" está o valor "centro" que foi definido na funçãi que iria centrar horizontalmente ao Stage. Tive necessidade de escrever assim pois o tamanho da caixa de texto depende do texto que enviamos, logo não podemos definir logo à partida qual vai ser o seu comprimento.

stage.stageHeight/2 = Alinha verticalmente com o stage
0x003366 = cor do texto
10 = Tamanho do texto
1 = Opacodade (alpha)
2 = 3ª instancia do site (Sendo 0 para o backGround, 1 para o logotipo)

Os entendidos sintam-se à vontade para modificar o código desde que para melhorar ou evoluir...acredito que pode ser feito de outras formas mas esta foi a que eu encontrei.

Fazer um fadeIn a um texto:

txtToStage(nome1,"Meu FadeIn","centro",stage.stageHeight/2,0x003366,10,0,0);
Tweener.addTween(nome1, {y:stage.stageHeight/2+25, alpha:1, time:0.8, transition:"easeOutCirc", delay:1.5});


ATENÇÃO: Tweener.addTween e a class que eu uso para fazer os Tweens em AS3 e não vem por defeito no Flash CS9!!

Espero ter ajudado!!
 
.wysiwyg { background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%; background-color: #1e1e1e; background-image: none; color: #ffffff; font-family: Verdana, Arial, Arial; font-style: normal; font-variant: normal; font-weight: 400; font-size: 10pt; line-height: normal } p { margin: 0px; }

fixe vai adicionando as tuas descubertas.*qq*dia*viro-me*para*o flash...
 
Load simples de um ficheiro externo

Para fazer o carregamento de um ficheiro externo como uma imagem ou mesmo um outro ficheiro SWF para dentro do nosso SWF actual, o código básico é este:

Código:
var movieLoad:Loader = new Loader();
movieLoad.load(new URLRequest("movie1.swf"));
 
var loadProgress_txt:TextField = new TextField();
 
movieLoad.contentLoaderInfo.addEventListener(Event.OPEN,mostraPreloader);
movieLoad.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,mostraProgresso);
movieLoad.contentLoaderInfo.addEventListener(Event.COMPLETE,mostraMovieLoad);
 
function mostraPreloader(evt:Event):void {
 addChild(loadProgress_txt);
}
 
function mostraProgresso(evt:ProgressEvent):void {
 loadProgress_txt.text = "Carregados:"+evt.bytesLoaded+" de:"+evt.bytesTotal;
}
 
function mostraMovieLoad(evt:Event):void {
 addChild(movieLoad);
}

var movieLoad:Loader = new Loader();
movieLoad foi o nome que dei a variavel do container onde vai ser guardado o nosso load. Este nome como devem calcular, pode ser um nome à vossa escolha que identifique as necessidades do vosso código.

movieLoad.load(new URLRequest("movie1.swf"));
Vai indicar qual o ficheiro que é para ser carregado e vai ser colocado no "container" movieLoad.

movieLoad.contentLoaderInfo.addEventListener(Event.OPEN,mostraPreloader);
Quando o "container" movieLoad é aberto, é executada a função "mostraPreloader"
Código:
function mostraPreloader(evt:Event):void {
 addChild(loadProgress_txt);
}

movieLoad.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,mostraProgresso);
Quando existe progresso no "conatiner" movieLoad, executa a função "mostraProgresso"
Código:
function mostraProgresso(evt:ProgressEvent):void {
 loadProgress_txt.text = "Carregados:"+evt.bytesLoaded+" de:"+evt.bytesTotal;
}
De notar que esta função é um evento (evt) de "ProgressEvent" como é indicado no addEventListener que o chama.

movieLoad.contentLoaderInfo.addEventListener(Event.COMPLETE,mostraMovieLoad);
Quando o "container" movieLoad é completo, executa a função "mostraMovieLoad"
Código:
function mostraMovieLoad(evt:Event):void {
 addChild(movieLoad);
}
Esta função, coloca no stage actual o container "movieLoad" que é o ficheiro que foi carregado pelo URLRequest - movieLoad.load(new URLRequest("movie1.swf"));
Podemos ainda posiciona-lo com as propriedades normais da class addChild como as coordenadas X, Y podendo ser aplicado desta forma:
Código:
function mostraMovieLoad(evt:Event):void {
 addChild(movieLoad);
movieLoad.x = 100;
movieLoad.y = 100;
}

Onde está "movie1.swf" pode ser modificado a nosso interesse onde podemos fazer o carregamento de imagens, xml files, swf's, etc...
 
Última edição:
como estas a ver, fizeste bem a escolha... a grande diferença entre o as2 e o 3 é o tipo de programaçao, o as3 é exclusivamente orietado a objectos, tendo as sua "funcoes" divididas por "packages". a grande vantagem de evoluçao do as2 para o 3 é a rapidez e fiabilidade execuçao, em alguns casos 200% superiores ao as2. bem como controlar directamente todos os "events" dos respectivos objectos.

Existem "boatos" que parece que estao ja confirmados como "verdades" (adobe max chicago) que o quake foi "parcialmente" "clonado" para as3 dado o potencial do mesmo (AS3).
http://www.airtightinteractive.com/news/?p=93
e : http://www.peterelst.com/blog/2007/10/03/adobe-max-chicago-sneak-peeks/

:)

Boa escolha!
 
como estas a ver, fizeste bem a escolha... a grande diferença entre o as2 e o 3 é o tipo de programaçao, o as3 é exclusivamente orietado a objectos, tendo as sua "funcoes" divididas por "packages". a grande vantagem de evoluçao do as2 para o 3 é a rapidez e fiabilidade execuçao, em alguns casos 200% superiores ao as2. bem como controlar directamente todos os "events" dos respectivos objectos.

Existem "boatos" que parece que estao ja confirmados como "verdades" (adobe max chicago) que o quake foi "parcialmente" "clonado" para as3 dado o potencial do mesmo (AS3).
http://www.airtightinteractive.com/news/?p=93
e : http://www.peterelst.com/blog/2007/10/03/adobe-max-chicago-sneak-peeks/

:)

Boa escolha!

Apesar de ser uma linguagem orientada a objectos não faz de si uma boa escolha se a programação não seguir boas práticas. Código 'spaguetti' em AS3 é o que não falta ai na net.
Quanto a rapidez é sem dúvida bem mais rápido (muitas vezes bem superior a 200%) mas convém continuar atento a como se programa pois mesmo o AVM sendo muito mais potente, não é 'Deus todo Poderoso' logo não convém descuidar-se.

Quanto ao Quake clonado, este não foi clonado, foi criado uma ferramenta que converte código fonte C++ (sincrono) em código AS3 (modo assincrono). Basicamente este programa poderia converter a maior parte do código actual de C++ para AS3 que em seguida é compilado para um SWF e correr perfeitamente dentro do Flash Player... Atenção que nunca foi dito que todo o código fonte seria 'convertível' para AS3.
 
Apesar de ser uma linguagem orientada a objectos não faz de si uma boa escolha se a programação não seguir boas práticas. Código 'spaguetti' em AS3 é o que não falta ai na net.

qual é a linguagem de programaçao que é uma boa escolha para nao se pretender seguir boas pràticas?? Nenhuma... é como todas as liguagens de programaçao... :)

Mau código espalhado pela net existe muito... e o as3 nao é excepção, principalmente porque ainda está pouco explorado e divulgado a nivel da sua "apredizagem".

Quanto ao Quake clonado, este não foi clonado

Por isso que usei as ""

:)

Atenção que nunca foi dito que todo o código fonte seria 'convertível' para AS3.

Nao foi o que eu disse. :)

cumps.
 
Quanto ao Quake clonado, este não foi clonado, foi criado uma ferramenta que converte código fonte C++ (sincrono) em código AS3 (modo assincrono). Basicamente este programa poderia converter a maior parte do código actual de C++ para AS3 que em seguida é compilado para um SWF e correr perfeitamente dentro do Flash Player... Atenção que nunca foi dito que todo o código fonte seria 'convertível' para AS3.

Já se sabe mais coisas dessas ferramentas?
Tenho que começar a olhar para o AS3... :P
 
Depois de algum temo parado, voltei a pegar no AS3.

Como li neste post, é verdade que o AS3 é uma POO e de facto os exemplos que coloquei mais acima são tudo menos programação orientada a objectoa, no entanto, podemos criar as nossas proprias classes baseadas nesses exemplos.

Logo que vá descobrindo mais alguma coisa vou postando!!

Estou a montar uma class para ler em stream arquivos MP3 que disponibiliza variaveis para mostrar o nome da musica, autor, tamanho total do ficheiro, tamanho total carregado, tempo total da musica, tempo já tocado, possibilidade de reproduzir, pausar ou parar.

Utilização:
Possibilidade de colocar num site em flash (ou não) um simples leitor de MP3.
O facto de retornar as informações como o nome da musica, autor, etc dá a possibilidade de serem colocadas onde e como nos apetecer.
A variavel tamanho total do ficheiro e tamanho total carregado dá a possibilidade de fazer uma barra de preload que informa o utilizador quando da musica já carregou.
A variavem tempo total da musica e tempo já tocado vai dar a possibilidade de apresentar ao utilizador a informação do tempo da musica.

As utilizações são muitas...depois é só usar a imaginação.
 
Última edição:
Back
Topo