Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Luis Machado

[Resolvido] Links usando AS3

Recommended Posts

Fala galera, beleza?

 

Seguinte, estou como uma duvida de como colocar um link usando AS3.

 

Se fosse AS2, criaria um obejto com uma area sensivel e dentro desse objeto colocaria um getURL.

 

Mas utilizando AS3, não posso fazer isso. Ele pede que eu coloque a minha ação dentro de um frame. Quando faço isso meu banner rotativo para de funcionar.

 

Nesse banner eu tenho 5 botoes que chamam via AS3, 5 imagens diferentes. (queria ter um link em cada uma dessas 5 imagens. fazendo com que quando clicadas redirecionem para uma pagina na web)

 

Alguem sabe como fazer isso?

 

Segue o codigo que utilizei para fazer meu banner:

 

import com.greensock.*;
import com.greensock.easing.*;

// variavel numero de botoes instaciados
var arrBotoes:Array=new Array(bt_01,bt_02,bt_03,bt_04,bt_05);
var timer:Timer;
var controle:int=1;


// variavel controla tempo dos produtos
adicionaListener();
timer=new Timer(5000);
timer.addEventListener(TimerEvent.TIMER , _qualbanner);
timer.start();
trace(timer);


// variavel para botoes
function adicionaListener():void {

for (var i:int = 0; i < arrBotoes.length; i++) {

	arrBotoes[i].buttonMode=true;
	arrBotoes[i].mouseChildren=false;
	arrBotoes[i].addEventListener(MouseEvent.MOUSE_OVER, cima);
	arrBotoes[i].addEventListener(MouseEvent.MOUSE_OUT, fora);
}
}


// variavel numero produto. sempre um numero a mais que a quantidade de produtos
function _qualbanner(e:TimerEvent):void {
if (controle==6) {
	controle=1;
}
trocabanner(controle);
controle++;
}



function cima(e:MouseEvent):void {
e.target.gotoAndPlay(2);
}

function fora(e:MouseEvent):void {
e.target.gotoAndPlay(6);
}


// variavel tween dos botoes

bt_01.addEventListener(MouseEvent.CLICK, passa01);
bt_02.addEventListener(MouseEvent.CLICK, passa02);
bt_03.addEventListener(MouseEvent.CLICK, passa03);
bt_04.addEventListener(MouseEvent.CLICK, passa04);
bt_05.addEventListener(MouseEvent.CLICK, passa05);

function trocabanner(e:int):void {
trace(e);
switch (e) {
	case 1 :
		TweenLite.to(slide, 1, {x:0, ease:Expo.easeOut});
		break;
	case 2 :
		TweenLite.to(slide, 1, {x:-770, ease:Expo.easeOut});
		break;
	case 3 :
		TweenLite.to(slide, 1, {x:-1540, ease:Expo.easeOut});
		break;
	case 4 :
		TweenLite.to(slide, 1, {x:-2310, ease:Expo.easeOut});
		break;
	case 5 :
		TweenLite.to(slide, 1, {x:-3080, ease:Expo.easeOut});
		break;
}
}


function passa01(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:0, ease:Expo.easeOut});
}

function passa02(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-770, ease:Expo.easeOut});
}

function passa03(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-1540, ease:Expo.easeOut});
}

function passa04(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-2310, ease:Expo.easeOut});
}
function passa05(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-3080, ease:Expo.easeOut});
}

 

Muito obrigado pela ajuda.

 

Att,

Felipe Machado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue:

 

Lembrando que voce pode otimizar o código com XML e o casting dos botoes pode ser feito via AS sem o uso de arrays.

 

qualquer dúvida, é só postar novamente.

 

import com.greensock.*;
import com.greensock.easing.*;

import flash.net.URLRequest;
import flash.net.navigateToURL;

// variavel numero de botoes instaciados
var arrBotoes:Array = new Array(bt_01,bt_02,bt_03,bt_04,bt_05);
var links:Array = new Array("link1.htm","link2.htm","link3.htm","link4.htm","link5.htm");
var timer:Timer;
var controle:int = 1;


// variavel controla tempo dos produtos
adicionaListener ();
timer = new Timer(5000);
timer.addEventListener (TimerEvent.TIMER , _qualbanner);
timer.start ();
trace (timer);


// variavel para botoes
function adicionaListener ():void {

for (var i:int = 0; i < arrBotoes.length; i++) {

	arrBotoes[i].buttonMode = true;
	arrBotoes[i].mouseChildren = false;
	arrBotoes[i].addEventListener (MouseEvent.MOUSE_OVER, cima);
	arrBotoes[i].addEventListener (MouseEvent.MOUSE_OUT, fora);
	arrBotoes[i].addEventListener (MouseEvent.MOUSE_DOWN, clica);
	arrBotoes[i].id = i;
}
}


// variavel numero produto. sempre um numero a mais que a quantidade de produtos
function _qualbanner (e:TimerEvent):void {
if (controle == 6) {
	controle = 1;
}
trocabanner (controle);
controle++;
}

function clica (e:MouseEvent) {
var rURL:URLRequest = new URLRequest(links[e.currentTarget.id]);

navigateToURL(rURL, '_BLANK');
trace(links[e.currentTarget.id]);
}


function cima (e:MouseEvent):void {
e.target.gotoAndPlay (2);
trace(e.target.id)
}

function fora (e:MouseEvent):void {
e.target.gotoAndPlay (6);
}


// variavel tween dos botoes

bt_01.addEventListener (MouseEvent.CLICK, passa01);
bt_02.addEventListener (MouseEvent.CLICK, passa02);
bt_03.addEventListener (MouseEvent.CLICK, passa03);
bt_04.addEventListener (MouseEvent.CLICK, passa04);
bt_05.addEventListener (MouseEvent.CLICK, passa05);

function trocabanner (e:int):void {
trace (e);
switch (e) {
	case 1 :
		TweenLite.to (slide, 1, {x:0, ease:Expo.easeOut});
		break;
	case 2 :
		TweenLite.to (slide, 1, {x:-770, ease:Expo.easeOut});
		break;
	case 3 :
		TweenLite.to (slide, 1, {x:-1540, ease:Expo.easeOut});
		break;
	case 4 :
		TweenLite.to (slide, 1, {x:-2310, ease:Expo.easeOut});
		break;
	case 5 :
		TweenLite.to (slide, 1, {x:-3080, ease:Expo.easeOut});
		break;
}
}


function passa01 (e:MouseEvent):void {
TweenLite.to (slide, 1, {x:0, ease:Expo.easeOut});
}

function passa02 (e:MouseEvent):void {
TweenLite.to (slide, 1, {x:-770, ease:Expo.easeOut});
}

function passa03 (e:MouseEvent):void {
TweenLite.to (slide, 1, {x:-1540, ease:Expo.easeOut});
}

function passa04 (e:MouseEvent):void {
TweenLite.to (slide, 1, {x:-2310, ease:Expo.easeOut});
}
function passa05 (e:MouseEvent):void {
TweenLite.to (slide, 1, {x:-3080, ease:Expo.easeOut});
}

 

 

Fala galera, beleza?

 

Seguinte, estou como uma duvida de como colocar um link usando AS3.

 

Se fosse AS2, criaria um obejto com uma area sensivel e dentro desse objeto colocaria um getURL.

 

Mas utilizando AS3, não posso fazer isso. Ele pede que eu coloque a minha ação dentro de um frame. Quando faço isso meu banner rotativo para de funcionar.

 

Nesse banner eu tenho 5 botoes que chamam via AS3, 5 imagens diferentes. (queria ter um link em cada uma dessas 5 imagens. fazendo com que quando clicadas redirecionem para uma pagina na web)

 

Alguem sabe como fazer isso?

 

Segue o codigo que utilizei para fazer meu banner:

 

import com.greensock.*;
import com.greensock.easing.*;

// variavel numero de botoes instaciados
var arrBotoes:Array=new Array(bt_01,bt_02,bt_03,bt_04,bt_05);
var timer:Timer;
var controle:int=1;


// variavel controla tempo dos produtos
adicionaListener();
timer=new Timer(5000);
timer.addEventListener(TimerEvent.TIMER , _qualbanner);
timer.start();
trace(timer);


// variavel para botoes
function adicionaListener():void {

for (var i:int = 0; i < arrBotoes.length; i++) {

	arrBotoes[i].buttonMode=true;
	arrBotoes[i].mouseChildren=false;
	arrBotoes[i].addEventListener(MouseEvent.MOUSE_OVER, cima);
	arrBotoes[i].addEventListener(MouseEvent.MOUSE_OUT, fora);
}
}


// variavel numero produto. sempre um numero a mais que a quantidade de produtos
function _qualbanner(e:TimerEvent):void {
if (controle==6) {
	controle=1;
}
trocabanner(controle);
controle++;
}



function cima(e:MouseEvent):void {
e.target.gotoAndPlay(2);
}

function fora(e:MouseEvent):void {
e.target.gotoAndPlay(6);
}


// variavel tween dos botoes

bt_01.addEventListener(MouseEvent.CLICK, passa01);
bt_02.addEventListener(MouseEvent.CLICK, passa02);
bt_03.addEventListener(MouseEvent.CLICK, passa03);
bt_04.addEventListener(MouseEvent.CLICK, passa04);
bt_05.addEventListener(MouseEvent.CLICK, passa05);

function trocabanner(e:int):void {
trace(e);
switch (e) {
	case 1 :
		TweenLite.to(slide, 1, {x:0, ease:Expo.easeOut});
		break;
	case 2 :
		TweenLite.to(slide, 1, {x:-770, ease:Expo.easeOut});
		break;
	case 3 :
		TweenLite.to(slide, 1, {x:-1540, ease:Expo.easeOut});
		break;
	case 4 :
		TweenLite.to(slide, 1, {x:-2310, ease:Expo.easeOut});
		break;
	case 5 :
		TweenLite.to(slide, 1, {x:-3080, ease:Expo.easeOut});
		break;
}
}


function passa01(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:0, ease:Expo.easeOut});
}

function passa02(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-770, ease:Expo.easeOut});
}

function passa03(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-1540, ease:Expo.easeOut});
}

function passa04(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-2310, ease:Expo.easeOut});
}
function passa05(e:MouseEvent):void {
TweenLite.to(slide, 1, {x:-3080, ease:Expo.easeOut});
}

 

Muito obrigado pela ajuda.

 

Att,

Felipe Machado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo. Obrigado pela resposta.

 

Pouco antes de ver essa sua resposta, eu consegui resolver da seguinte maneira.

 

O que eu fiz foi:

 

1. Dentro do MC chamado "slide", em cima das imagens que estão uma ao lado da outra, criei 5 botoes istanciados de bt001, bt002, bt003, bt004 e bt005.

2. Criei uma camada de actions. E fiz o seguinte codigo:

bt001.addEventListener(MouseEvent.CLICK,function($evento:MouseEvent):void{
       navigateToURL(new URLRequest('http://www.seu_site_aqui.com.br'));
});

bt002.addEventListener(MouseEvent.CLICK,function($evento:MouseEvent):void{
       navigateToURL(new URLRequest('http://www.seu_site_aqui.com.br'));
});


bt003.addEventListener(MouseEvent.CLICK,function($evento:MouseEvent):void{
       navigateToURL(new URLRequest('http://www.seu_site_aqui.com.br'));
});

bt004.addEventListener(MouseEvent.CLICK,function($evento:MouseEvent):void{
       navigateToURL(new URLRequest('http://www.seu_site_aqui.com.br'));
});

bt005.addEventListener(MouseEvent.CLICK,function($evento:MouseEvent):void{
       navigateToURL(new URLRequest('http://www.seu_site_aqui.com.br'));
});

 

 

Com isso, tudo funcionou legal.

 

Mas ainda sim tenho uma duvida. Quando clico na imagem do banner, ela abre uma outra janela. Ou seja o famoso _BLANK, só que em nenhum momento coloquei uma função para que quando clicar fosse para uma pagina em branco. Gostaria que quando clicasse, a pagina nova caregasse na mesma pagiana, ou seja, _SELF.

 

Alguem sabe como fazer?

 

 

 

 

 

 

===================

resolvido

===================

 

 

 

 

 

Problema resolvido.

 

Para abrir na mesma janela, bastou colocar o _self após o 1º parenteses.

 

Ficou assim:

 

 

bt001.addEventListener(MouseEvent.CLICK,function($evento:MouseEvent):void{
       navigateToURL(new URLRequest('http://www.seu_site_aqui.com.br'), '_self');
});

 

Obrigado,

Felipe

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.