Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Juliano.net

Carregar imagens da Library usando AS3

Recommended Posts

Comecei a criar uma animação onde tenho um MovieClip ocupando toda tela e na parte inferior tenho 6 botões que tem o objetivo de alterar a imagem do MovieClip. Como consigo alterar a imagem deste MovieClip no click do botão (sendo que as imagens estão na Library) usando ActionScript 3.0?*** Obs: Moderadores, por favor, movam para o fórum principal, acabei clicando acidentalmente no link do sub-forum e não percebi na hora de enviar o post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como o AS só trabalha com classes, você deve criar o mc(como uma instancia) e adiciona-lo no palco

 

 

//mc_na_library é o nome do linkage na bibliotecavar nomeMC = new mc_na_library()//esse comando adiciona o nome movieClip no palcoaddChild(nomeMC)

dá uma lida aqui:

 

http://livedocs.adobe.com/flex/201/langref/migration.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma dúvida, como eu associo os botões de minha animação à um event handler (click) e codifico?Antigamente bastava selecionar o botão, ir até o painel de Actions e colocar:on (Press){...}E agora, como ficou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, uma coisa que não estou entendendo nos tutoriais, é como eu posso associar a animação à um arquivo de classe separado. Inclusive fica a dúvida, é uma boa prática separar os arquivos com as classes da animação?Com eu associo o arquivo da classe EventHandlers (a ser criada por mim) à minha animação para que possa usar o addEventListener?Poderia fazer simplesmente: nomeBotao.addEventListener(MouseEvent.CLICK, NomePacote.NomeClasse.funcaoPress);???No AS3, pra mim poder usar uma função dentro de uma classe eu tenho obrigatoriamente que instanciar um objeto dessa classe? Existe o conceito de classe estática (static)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é uma boa prática separar os arquivos com as classes da animação?

sim, por uma questão de organização, e para re-aproveitamento do código

com eu associo o arquivo da classe EventHandlers (a ser criada por mim) à minha animação para que possa usar o addEventListener?Poderia fazer simplesmente:nomeBotao.addEventListener(MouseEvent.CLICK, NomePacote.NomeClasse.funcaoPress);

usando o comando import antes, é possivel
import  NomePacote.NomeClasse;

No AS3, pra mim poder usar uma função dentro de uma classe eu tenho obrigatoriamente que instanciar um objeto dessa classe? Existe o conceito de classe estática (static)?

sim ele trabalha com classes estaticasdetalhado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eder, o código que você me passou na primeira resposta é para adicionar um MovieClip ao palco, no meu caso eu tenho 6 Bitmaps em minha Library em que eu queria adiciona-los no MovieClip que já está no palco.Estou com o seguinte código:

import flash.display.BitmapData;function AlterarImagem(Imagem:Bitmap) {	mcMain.addChild(Imagem);}function btnBackground1_Click(event:MouseEvent){	AlterarImagem(new Easter());}btnBackground1.addEventListener(MouseEvent.CLICK,btnBackground1_Click);

O método AlterarImagem deverá receber o objeto do Bitmap que está na Library e será exibido dentro do MovieClip principal, que já está no palco.Como faço isso?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha como fica :wacko:

 

import flash.display.BitmapData;import flash.utils.*;function AlterarImagem(Imagem:MovieClip) {var novaClasse:Class = getDefinitionByName(getQualifiedClassName (Imagem)) as Class;var instance:Object = new novaClasse();mcMain.addChild(DisplayObject(instance));}function btnBackground1_Click(event:MouseEvent){AlterarImagem(new teste());}btnBackground1.addEventListener(MouseEvent.CLICK,btnBackground1_Click);

 

 

 

o objeto nesse caso é um movieClip, estou vendo como funcionar com bitmapData,

não esta funcionando apenas trocar o tipo, de MovieClip para Bitmapdata

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui fazer funcionar.Criei um novo MovieClip a partir do Bitmap, usei o Linkage, daí ele passa pelo código sem problemas, mas nada é exibido no mcMain, nem se eu usar só addChild sem informar o "container".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui utilizando a classe Loader, mas quando faço o mcMain.addChild, ele (o mcMain) é redimensionado. Como posso redimensionar a imagem antes de adicionar ao mcMain ou fixar o tamanho do mcMain?Já tentei alterar as propriedades width e height de meu objeto loader, mas sem sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para alterar as propriedades naum use o "__" antes do nome

 

mc.width=100mc.height=100

 

 

se naum for posta o código q você ta usando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei assim:loader.width = mcMain.width;loader.height = mcMain.height;o mcMain já possui um tamanho especificado no stage pelo fato de ter sido posicionado visualmente e não por programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por acaso você esta colocando essas 2 linhas dentro do evento Event.COMPLETE do objeto loader?

 

se for, não seria assim, pois o tamanho de mcMain ja foi alterado pois ele ja carregou o mc externo, voce teria que pegar as propriedades antes de carregar e atribui-las depois , assim:

 

var lar=mcMain.widthvar alt=mcMain.heightvar carregador:Loader = new Loader();function onComplete(event:Event):void {	var mc = event.target.content	mc.width = lar	mc.height = alt}carregador.addEventListener(Event.COMPLETE, onComplete);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não funcionou....fui pelo Debug e ele parece não estar executando a função onComplete.import flash.display.BitmapData;var loader:Loader = new Loader();var urlReq:URLRequest;var largura:Number = mcMain.width;var altura:Number = mcMain.height;function AlterarImagem(url:String):void { urlReq = new URLRequest(url); loader.load(urlReq); mcMain.addChild(loader);}function onComplete(event:Event):void { var mc = event.target.content; mc.width = largura; mc.height = altura;}function btnBackground1_Click(event:MouseEvent){ AlterarImagem("easter.jpg");}btnBackground1.addEventListener(MouseEvent.CLICK,btnBackground1_Click);loader.addEventListener(Event.COMPLETE, onComplete);

Compartilhar este post


Link para o post
Compartilhar em outros sites

muda essa linha

 

loader.addEventListener(Event.COMPLETE, onComplete);

para isso

 

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.