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

Menu Circular em 3D


LadyAra

Pergunta

Boa tarde

Sou iniciante em Flash..na realidade só sei fazer animações "bobinhas"

mas me foi solicitado(meu primeiro emprego) a construir um menu igual ao do link

Menu Circular em 3D

A dois dias venho tentando adequar a idéia do menu acima para o pedido aqui...o problema é que eles querem que a imagem central...a que aparece com alpha 100...seja a única com alpha 100 e que as demais tenha alpha minino.

e não é isso que acontece...a central tem alphamaximo e as imagens ao lado vão diminuindo conforme se afastam

já tentei _root

_level

_parent

tudo para pegar apenas a imagem que aparece no centro e deixá-la com alphaMaior = 100 e as demais..independente de onde estejam com alphaMaximo = 70 e o que já é alphaMinimo=0 do jeito que já está.

alguém poderia me ajudar...meu prazo está acabando e confesso que estou ficando desesperada(estou em fase de experiência...preciso ir bem) :(

Eis meu código...na realidade não muda muito..tentei fazer do meu jeito e não funcionou nem a pau..o jeito foi seguir a risca o tutorial

/*******************************************/
// variavies de configuracao
/*******************************************/
// guardar as instancias a serem rotacionadas em um vetor
var clips = Array("ben", "fada", "corrida", "rosap", "pretoa", "rosa", "hot");
var raio = 250; // raio de rotacao
var aceleracao = 0.01; 
// aceleracao do mouse para o giro
var alphaMinimo = 0;
// transparencia do botao de menu mais distante
var alphaMaximo = 100;
var alphaMaior = 100; // transparencia do botao de menu mais proximo
var escalaMinima = 5;
// 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

//altura minima
// 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 = 40.0; //142.75
var yIni = Stage.height / 2;// 45.90 Stage.height / 2; varia de acordo com tamanho do meu arquivo pode informar valores pra x e y
var alturaMaxima = 80;
//valor da altura
var alturaMinima = alturaMaxima-50;
var dobroRaio = raio*2;
var conversao = Math.PI/180;
// fator de conversao de angulo para radiano
var difAngular = 360/clips.length;
var diffAltura = alturaMaxima-alturaMinima; //5
// diferenca angular entre os itens de menu
var angulo = 0;

// 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.x = Math.sin(rad)*raio;
    pos.y = Math.cos(rad)*raio;
    return pos;
}
// funcao para ser chamada na mesma frequencia da animacao
// e que é responsavel por girar o menu

this.onEnterFrame = rodar;

function rodar () {    
    // 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;
    } else {
        velocidade *= aceleracao;            
    }
    // giramos o menu todo
    angulo += velocidade;
    // reposicionamos cada item do menu
    for (i=0; i<clips.length; i++) {
        for(j=i; j<clips.length; j++){
        var arraydois = this[clips[j]];
        
        // criar alias para o clipe de filme atual        
        var ptr = this[clips[i]];    
        
        // calcular a diferenca angular desse menu
        // em relacao a origem da roda
        ptr.difAngular = difAngular*i;
        var centro = 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
        // para alterar seu tamanho e transparencia
var perc = (pos.y+raio)/dobroRaio;
ptr._alpha = perc*difAlpha+alphaMinimo;
ptr._xscale = ptr._yscale=perc*difEscala+escalaMinima;
// colocar o menu acima dos que estao mais afastados
  ptr.swapDepths(pos.y+dobroRaio); 
  var meio = ptr.getDepth();
  
           
        // alterar posicao vertical do menu
        var pctPos = (ptr._xscale-escalaMinima)/(difEscala/100);
        var posAlt = (pctPos*(diffAltura/100))+alturaMinima;
        ptr._y = posAlt;
         arraydois.swapDepths(pos.y);
        var meiu = arraydois.getDepth();
            
        
        trace(postAlt)
    
            
        if(meiu == meio){
            if(ptr._y == meio){
            ptr._alpha = alphaMaior;
            }
          }
        }
        }
        
        

    
    
};

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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...