Ir para conteúdo

POWERED BY:

Arquivado

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

Fabricio Fosmeo

[Resolvido] Movie clips clicáveis em Action Script 2.0

Recommended Posts

Olá pessoal, estou com uma dúvida cruel, preciso criar um swf que carregue 10 imagens .gif que vão mudando aleatoriamente a cada refresh que eu dou na página. Até ai tudo bem, fiz a rotina em ASP e funcionou beleza a aleatoreidade. Acontece que além das imagens mudarem (são mais de 100 imagens), cada imagem deve ter um link que redirecione para o seu respectivo site.

Após muito pesquisar na internet, manuais e tal, não consegui encontrar nada que satisfizesse minha necessidade, por isso estou aqui pedindo a ajuda de vocês. Segue o meu código abaixo com as indicações "-->" onde eu tentei qualquer coisa que fizesse algum sentido. O restante do código está funcional. Só não consigo colocar os links.

 

PS.Quando as imagens mudam, os links devem mudar tal qual.

 

Agradeço desde já,

Fabricio

 

--> loadermc = new MovieClipLoader();
--> listen = new Object();
--> loadermc.addListener(listen);

 var varsselo:LoadVars = new LoadVars();
 varsselo.load("aspselos.asp");
 varsselo.onload = function() {

      py_mc = 0;
      for (i=0; i<11; i++) {

      _level0.createEmptyMovieClip(["mc_selos"+i],i);
      _level0["mc_selos"+i]._x = 0;
      _level0["mc_selos"+i]._y = py_mc;

      loadermc.loadClip(varsselo["caminho"+i],_level0["mc_selos"+i]);

      py_mc = py_mc+70;
      
  -->    listen.onmousedown = function() {
  -->    getURL("endereçoURL", _blank);
      
         };
      }
 };

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, estou com uma dúvida cruel, preciso criar um swf que carregue 10 imagens .gif que vão mudando aleatoriamente a cada refresh que eu dou na página. Até ai tudo bem, fiz a rotina em ASP e funcionou beleza a aleatoreidade. Acontece que além das imagens mudarem (são mais de 100 imagens), cada imagem deve ter um link que redirecione para o seu respectivo site.

Após muito pesquisar na internet, manuais e tal, não consegui encontrar nada que satisfizesse minha necessidade, por isso estou aqui pedindo a ajuda de vocês. Segue o meu código abaixo com as indicações "-->" onde eu tentei qualquer coisa que fizesse algum sentido. O restante do código está funcional. Só não consigo colocar os links.

 

PS.Quando as imagens mudam, os links devem mudar tal qual.

 

Agradeço desde já,

Fabricio

 

 

--> loadermc = new MovieClipLoader();

--> listen = new Object();

--> loadermc.addListener(listen);

 

var varsselo:LoadVars = new LoadVars();

varsselo.load("aspselos.asp");

varsselo.onLoad = function() {

 

py_mc = 0;

for (i=0; i<11; i++) {

 

_level0.createEmptyMovieClip(["mc_selos"+i],i);

_level0["mc_selos"+i]._x = 0;

_level0["mc_selos"+i]._y = py_mc;

 

loadermc.loadClip(varsselo["caminho"+i],_level0["mc_selos"+i]);

 

py_mc = py_mc+70;

 

--> listen.onMouseDown = function() {

--> getURL("endereçoURL", _blank);

 

};

}

};

 

Tenta isso:

 

_level0.createEmptyMovieClip(["mc_selos"+i],i);
_level0["mc_selos"+i]._x = 0;
_level0["mc_selos"+i]._y = py_mc;
loadermc.loadClip(varsselo["caminho"+i],_level0["mc_selos"+i]);

_level0["mc_selos"+i].armazenavariavel = varsselo["endereçoURL"+i];

_level0["mc_selos"+i].onRelease = function() {
getURL(this.armazenavariavel, _blank);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro João, eu testei o codigo de sua colaboração, fiz uns ajustes aqui outro ali e mesmo assim não deu certo mas valeu a ajuda mesmo assim. Vou continuar tentando por aqui, qualquer luz que aparecer por ai de um toque.

 

Abraços e obrigado desde então.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As funções em clips de MC devem ser colocadas após o clip ser inicializado

 

E como você ta fazendo ai... não deu tempo ainda de carregar o clip e você ta tentando colocar uma função

Então use o onLoadInit on L de loadinit é maiusculo (caso o forum coloque em minusculo)

 

E ai você vai conseguir fazer isso que você quer.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Berseck, eu fiz como você recomendou, não sei se coloquei tudo no lugar certo (provavelmente não) e não funcionou. Dá uma olhada e veja se a sintaxe está correta.

 

Abraço

 

 

loadmc = new MovieClipLoader();
listen = new Object();
loadmc.addListener(listen);

z=0

for (i=0; i<=11; i++) {

_level0.createEmptyMovieClip(["mc_selos"+i],i);
_level0["mc_selos"+i]._x = 0;
_level0["mc_selos"+i]._y = z;

z = z+70;

loadmc.loadClip(varsselo["caminho"+i],_level0["mc_selos"+i]);

listen.onloadInit = function() {
listen.onmousedown = function() {
getURL(varsselo["site"+(i-1)], _blank);

};
};
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz-se assim:

[indent]//Crio c classe MovieClipLoader
var mcl:MovieClipLoader = new MovieClipLoader();
//Crio meu objeto ouvinte
var obj:Object = new Object();

//Crio meus MovieClips
//MovieClip principal que vai conter os outros 2
var banner:MovieClip = this.createEmptyMovieClip(’banner’, 1);
//MovieClip onde vai carregar a imagem
var mc:MovieClip  = banner.createEmptyMovieClip(’mc’, 1);
//MovieClip que vai ser o botão de fechar
var fechar:MovieClip = banner.createEmptyMovieClip(’fechar’, 2);

//Carrego aqui meus clips
mcl.loadClip(’http://forum.imasters.com.br/public/style_images/imasters2010/logo.png’,banner.mc);
mcl.loadClip(’http://forum.imasters.com.br/public/style_images/imasters2010/comment_delete.png’, banner.fechar);

//Ao iniciarem eu carrego as posições e as ações dos mesmos
obj.onLoadInit = function(){
	fechar._x = mc._width – fechar._width;
	fechar.onPress = fecha;
}
//A ação de fechar o clip principal para fazer ele sumir da tela
function fecha(){
	unloadMovie(banner);
}
//Adiciono o listener ao MovieClipLoader
mcl.addListener(obj);

[/indent]

Veja que a função onLoadInit é chamada e da as ações necessárias para os botões...

 

E normalmente ela é chamada FORA de um FOR

 

você sempre pode fazer assim:

loadmc = new MovieClipLoader();
listen = new Object();
loadmc.addListener(listen);

z=0

for (i=0; i<=11; i++) {

_level0.createEmptyMovieClip(["mc_selos"+i],i);
_level0["mc_selos"+i]._x = 0;
_level0["mc_selos"+i]._y = z;

z = z+70;

loadmc.loadClip(varsselo["caminho"+i],_level0["mc_selos"+i]);

listen.onloadInit = function() {
_level0["mc_selos"+i].onmousedown = function() {
getURL(varsselo["site"+(i-1)], _blank);

};
};
}

Que deve funcionar...

Eu faria o mesmo for só que com a função loadInit recarregando a função dos arquivos e alimentando o i... até acabar

 

Ficaria mais rápido e o código mais efetivo.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu to quase chegando lá, consegui fazer 1 dos 12 botoes funcionar.

 

Você disse:

"Eu faria o mesmo for só que com a função loadInit recarregando a função dos arquivos e alimentando o i... até acabar. Ficaria mais rápido e o código mais efetivo."

 

Poderia ser mais especifico?? Ou mandar um exemplo pois estou em duvida se 1 só listener é o suficiente para fazer isso, ou preciso usar 12 listeners e 12 moviecliploaders para conseguir o que preciso. Prezando pela boa programação imagino que o ideal seria usar apenas 1 listener e 1 MCL e o FOR para conseguir tal proeza.

 

Abraços e até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos dar um exemplo bem simples ok?

 

var mcl:MovieClipLoader = new MovieClipLoader();
var obj:Object = new Object();
var arr:Array;
var i:Number = 0;
var yInit = 0;
var total:Number = 10;

function init(){
   arr[i] = this.createEmptyMovieClip('mc', i);
   mcl.loadClip('algumacoisa', arr[i]);
   arr[i]._x = 0
   arr[i]._y = yInit;
   yInit += 70;
}

obj.onLoadInit = funcion(){
  arr[i].onMouseDown = function(){
      trace(arr[i]._name);
  }
  if(i < total){
      init();
      i++
  }
}
mcl.addListener(obj);
init();

Ta bem básico... mas é isso ai ;)

 

No caso o seu total vai ser o valor de um lenght de alguma array provavelmente

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro berseck, graças ao seu exemplo consegui, finalmente, entender como usar corretamente os listeners e consegui fazer o componente funcionar perfeitamente. :-) Novamente agradeço a sua ajuda e a atenção.

 

Um grande abraço.

 

ps. segue o meu codigo pronto se você quiser ver como eu construi a aplicação.

 

var mcl:MovieClipLoader = new MovieClipLoader();
var obj:Object = new Object();
arr = new Array()
var i:Number = 0;
var yInit = 0;
var total:Number = 11;

var varsselo:LoadVars = new LoadVars();
varsselo.load("aspselos.asp");
varsselo.onload = function() {

	function init() {
		
		arr[i]="http://"+varsselo["site"+i]
				
		_level0.createEmptyMovieClip(["mc_selos"+i],i);
		
		mcl.loadClip("varsselo["caminho"+i],_level0["mc_selos"+i]);

		_level0["mc_selos"+i]._x = 0;
		_level0["mc_selos"+i]._y = yInit;
		yInit += 70;

	}

	obj.onloadInit = function() {
						
		traduz_var = eval(["mc_selos"+(i)]);
		
		traduz_var.onPress = function(){
			
   		indice=this
		ind = new String(indice)
			
//Aqui eu pego um índice a partir do retorno do "this" cortando o final da string e gravando na variavel "n". Assim sei qual botão estou apertando e coloco dentro do arr[].

			if(ind.length>17){
			n=ind.slice(16,18)
			}else if(ind.length<=17){
			n=ind.slice(16,17)
		}

		getURL(arr[n], _blank);
		};

		if (i<=11) {
			i++;
			init();

		}
	};

	mcl.addListener(obj);
	init();
};

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.