Ir para conteúdo

POWERED BY:

Arquivado

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

rudolfkr

Slide - Menu - Horizontal

Recommended Posts

Olá pessoal... novamente mais uma dúvida.

 

Como faço um menu "slide" na horizontal conforme move o mouse.

 

por exemplo, tenho que fazer uma "linha do tempo" (a famosa rsrs...)

 

Ou seja começa por exemplo em 1900 e vai até 2010

 

Só que assim,

 

a cada data que for clicado vai abrir um outro MC até ai tudo bem, crio um "button" em cada data, mando fazer o load do movie clip no lugar X

 

o problema é, não estou conseguindo fazer com que

 

Fique parado no 1900 e quando move o mouse para a direita e vice versa, vai movendo e vai passando as datas e quando para o mouse (no centro no caso o movimento deve ser feito apenas quando estou no canto esquerdo ou canto direito) para o movimento, e quando chegar até o ano 2010 por exemplo ele pare..

 

Não começei a fazer pois não achei nada no google nem aqui falando sobre

 

procurei sobre Slide Menu

 

Horizontal Menu - Slide Horizontal Menu e tudo mais...

 

Existem componentes.

 

Preciso de algo deste tipo (no caso só o efeito mesmo de mover de um lado para o outro)

 

http://www.flashcomponents.net/component/horizontal_scrolling_menu_xml_as3.html

 

Thanks pelo help

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, olha só o que já consegui

 

var prevX:uint = 0;
var curX:uint = 0;
var scrollRight:Boolean = false;
var scrollLeft:Boolean = false;
var scrollAmt:Number = (madeira.width / stage.stageWidth) * 20;

function checkDirection(event:MouseEvent):void
{
prevX = curX;
curX = mouseX;

//trace(scrollLeft);
//trace(scrollRight);

if (curX > prevX)
{
scrollRight = false;
scrollLeft = true;
}
else if (prevX > curX){
scrollLeft = false;
scrollRight = true;
}
else
{
null;
}
}

function scrollMenu(event:Event):void{
	
if (scrollRight && (madeira.x < 639.35))
{
madeira.x += scrollAmt;
}
else if (scrollLeft && (madeira.x > -160))
{
madeira.x -= scrollAmt;
}
else
{
null;
}
}

stage.addEventListener(MouseEvent.MOUSE_MOVE, checkDirection);
stage.addEventListener(Event.ENTER_FRAME, scrollMenu);

Meu problema agora é.

 

em qualquer canto da tela já faz o movimento, como fazer para o MC mover APENAS quando chega com o mouse nos cantos ou seja na esquerda ou direita.

 

pois se eu deixo o mouse parado no centro tudo bem, mas é mover 1 pixel para qualquer lado que o palco já mexe automaticamente...

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu problema agora é.

 

em qualquer canto da tela já faz o movimento, como fazer para o MC mover APENAS quando chega com o mouse nos cantos ou seja na esquerda ou direita.

 

pois se eu deixo o mouse parado no centro tudo bem, mas é mover 1 pixel para qualquer lado que o palco já mexe automaticamente...

 

Alguém pode me ajudar?

 

Você precisa especificar essa condição na função scrollMenu(). Você consegue o posicionamento do mouse com a propriedade mouseX de qualquer DisplayObject. No seu caso, vai obter do stage.

function scrollMenu(event:Event):void
{
	const MARGEM:uint = 50;
	if (stage.mouseX < MARGEM || stage.mouseX > stage.stageWidth - MARGEM) return;
	
	if (scrollRight && (madeira.x < 639.35)) {
		madeira.x += scrollAmt;
	} else if (scrollLeft && (madeira.x > -160)) {
		madeira.x -= scrollAmt;
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, olhe este código abaixo e vê se ele te ajuda a fazer o scroll do menu de um lado para outro:

Obs: fiz com fotos e não botões, mas dá no mesmo bastando dentro do MovieClip "barra" trocar os objetos. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

/*Código em AS3*/

 

var horizontalCenter:Number = stage.stageWidth / 2;

var limit:Number = stage.stageWidth - barra.width;

var speed:Number = 0.1;

var scrollX:Number = 1;

 

addEventListener(Event.ENTER_FRAME, scrollphotos);

 

function scrollphotos(e:Event):void {

scrollX = - speed * ( mouseX - horizontalCenter );

barra.x+= scrollX;

if (barra.x > 0.8) { barra.x = 0.8;}

else

if (barra.x < limit) { barra.x = limit; }

}

;)

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.