Ir para conteúdo
Fórum Script Brasil
  • 0

Menu Carrosel


sanntanna

Pergunta

Eae galera, beleza?

Fiz um menu carrosel que está funcionando perfeitamente. Porém gostaria que ao clicar em algum no botão que está atrás o carrosel girasse e trazesse esse botão para uma determinada posição x. Mas gostaria que esse movimento não fosse brusco, mas que ele girasse, do mesmo jeito q está rodando com o movimento do mouse.

Bom, não sei seu fui claro. Mas segue o cód q estou usando.

Quem puder ajudar, agradeço.

stop();


/*******************************************/

// variavies de configuracao

/*******************************************/

// guardar as instancias a serem rotacionadas em um vetor

var clips = Array("mc1", "mc2", "mc3");

var raio = 450;// raio de rotacao

var aceleracao = 0.007;// aceleracao do mouse para o giro

var alphaMinimo = 10;// transparencia do botao de menu mais distante

var alphaMaximo = 100;// transparencia do botao de menu mais proximo

var escalaMinima = 30;// tamanho do botao de menu mais distante

var escalaMaxima = 100;// tamanho do botao de menu mais distante

var mouseSeguro = 100;// pixels em torno do centro nos quais o

// mouse não gira o menu





/*******************************************/

// Variaveis calculadas

/*******************************************/

// variacao da transparencia

var difAlpha = alphaMaximo-alphaMinimo;

// variacao do tamanho

var difEscala = escalaMaxima-escalaMinima;



// posicao central do menu em X e Y

var xIni = 550;
var yIni = 350;


var dobroRaio = raio*2;

var conversao = Math.PI/180;

// fator de conversao de angulo para radiano

var difAngular = 360/clips.length;

// diferenca angular entre os itens de menu



var angulo = -19;// angulo inicial da roda como um todo




/*******************************************/

// funcoes

/*******************************************/



// funcao para determinar as posicoes X e Y

// de um menu em funcao do angulo e do raio

function posCircular(angulo, raio) {

    var pos = new Object();

    var rad = angulo*conversao;

    pos.y = Math.sin(rad)*raio;

    pos.x = Math.cos(rad)*raio;



    return pos;

}

// funcao para ser chamada na mesma frequencia da animacao

// e que é responsavel por girar o menu

this.onEnterFrame = function() {

    // calculamos se o mouse esta fora da area central

    // e com que velocidade o menu ira girar

    velocidade = (this._xmouse-xIni);

    if (Math.abs(velocidade)<=mouseSeguro) {

        velocidade = 0;

    }
    //ação para quando passar na seção de Notícias  e Contato                               


    if (this._ymouse>=600 or this._ymouse<=170) {
        velocidade = 0;

    }
    // funcao para chamar a Cena 2 = Conteúdo      
    if (conteudo == true) {
        gotoAndPlay("conteudo");
        conteudo = false;
    }
    //Para movimento / Seção Empresa                    
    if (boxEmpresa == true or boxClientes == true or boxPortfolio == true) {
        velocidade = 0;

    } else {

        velocidade *= aceleracao;

    }// giramos o menu todo

    angulo += velocidade;



    // reposicionamos cada item do menu

    for (i=0; i<clips.length; i++) {

        // criar alias para o clipe de filme atual

        var ptr = this[clips[i]];



        // alterar posicao horizontal do menu

        ptr._y = yIni;



        // calcular a diferenca angular desse menu

        // em relacao a origem da roda

        ptr.difAngular = difAngular*i;



        // buscar as posicoes X (profundidade) e Y (altura) do menu

        var pos = posCircular(angulo+ptr.difAngular, raio);

        ptr._x = xIni+pos.x;



        // calcular percentual de afastamento do menu

        // para alterar seu tamanho e transparencia

        var perc = (pos.y+raio)/dobroRaio;

        ptr._alpha = perc*difAlpha+alphaMinimo;

        ptr._yscale = ptr._xscale=perc*difEscala+escalaMinima;



        // colocar o menu acima dos que estao mais afastados

        ptr.swapDepths(pos.y+dobroRaio);

    }

};

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Por exemplo:

Imagina esse menu circular http://imasters.uol.com.br/artigo/2931/act...circular_em_3d/

Quero uma ação q quando clicar em algum botão ele vá para o centro (ou uma determinada posição x), mas quero q isso acontece simulando o mesmo movimento, nesse caso o circular, pois quando coloco o angulo que eu quero ela vai de uma forma "bruta".

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade não.

Mas tudo bem vamos da sua maneira

// funcao para determinar as posicoes X e Y

// de um menu em funcao do angulo e do raio

function posCircular(angulo, raio) {

    var pos = new Object();

    var rad = angulo*conversao;

    pos.y = Math.sin(rad)*raio;

    pos.x = Math.cos(rad)*raio;



    return pos;

}

Sinceramente eu não sou bom com X e Y

Mas a parte do código que faz o posicionamento é esse.

Você precisa entender como é determinada a posição e mudar para um evento de click

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...