..:: MX Studio Fóruns ::..: Tsunamis - Ajuda da análise do código - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Tsunamis - Ajuda da análise do código PARA TODOS: 2 exemplos ótimos! FLAs disponíveis

#1 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 13 February 2008 - 05:11 PM

Oi amigos, estou disponibilizando dois menus TSUNAMIS horizontais que pesquisei na web.
Foram os melhores que já achei, tanto em funcionamento, quanto na praticidade do código.

Porém, eu preciso de ajuda para compreender algumas coisas no código e executar alterações e possíveis melhoras.

Portanto, aos feras do actionscript: Dêem suas instruções sobre o que é o que neste código.
Sei a maioria do funcionamento, mas me falta alguns detalhes imprescindíveis.
Ademais, creio que será bom para todos como aprendizado também.

Abaixo os links dos SWFs e FLAs:

http://www.idcult.com/estudos/dockmenu.fla
...


http://www.idcult.com/estudos/Tsunami2.fla
...

0

#2 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 13 February 2008 - 06:31 PM

Eu até me prontifico pra ajudar, mas acho que seria mais legal se você copiasse as partes que não entende e colasse aqui pra gente explicar, e assim quem não souber alguma coisinha vai postando também.

Assim a gente não precisa ficar analisando o código para entende-lo, e depois explica-lo todo detalhadamente.
Faremos isso somente com as partes mais importantes, o que acho mais fácil e rápido.

Abração !
0

#3 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 13 February 2008 - 06:49 PM

Oi Rafael, td. bem? biggrin.gif

Eu pensei nisso, mas achei melhor postar assim por dois motivos:

1 - ao menos 1/3 do código do exemplo dockmenu eu fiquei meio na dúvida, e do exemplo Tsunami eu me perdi mais ainda... Portanto teria que postar o código inteiro. Mais fácil para analisar no Flash, creio... Mesmo para quem entende muito de AS.

2 - para todos terem acesso ao aprendizado e assim evitar a prolongação de perguntas redundantes.

Por exemplo, eu sei que "Array" serve para guardar as informações em strings. No cabeçalho do primeiro exemplo é feita a indicação dos MCs para que o Flash os reconheça:

var clipArray:Array = new Array("clip1", "clip2", "clip3", "clip4", "clip5", "clip6");


Mas, fica difícil eu perguntar de forma "quebrada", pois são várias dúvidas...

Outro exemplo, em um exemplo usa-se Math.abs (absoluto) e em outro usa-se Math.sqrt... Porque? Sim, eu sei, são maneiras diferentes, mas ainda não compreendi... Creio que muitos tem dúvidas assim...

Vou fazer o seguinte. Abaixo segue os códigos de cada FLA. Se puder indicar o que serve, e para que serve, creio que todos ficarão agradecidos.

Ao menos seria legal saber a lógica que, sem saber todas funções fica difícil. Se puder dar uma explanada ao menos sobre o arquivo DOCKMENU que tem o código com menos de 40 linhas seria legal... Existem coisas tipo var xm = Math.sqrt(xxm*xxm+yym*yym); que não dá para entender... wink.gif

Primeiro código - Tsunami2


CÓDIGO
[color=red]var clipArray:Array = new Array("clip1", "clip2", "clip3", "clip4", "clip5", "clip6");

function tsunami(target:MovieClip):Void
{
    trace(target);
    target.onEnterFrame = function()
    {
        var distanceMin:Number = 60; // benötigter x Abstand der Maus zum Clip für eine Animation
        var minScale:Number = 25; // kleinstmöglich Scalierung (hier 25%)
        var minAlpha:Number = 10; // kleinstmöglicher alpha Wert (hier 10)
        var speed:Number = 0.2; // Geschwindigkeit (kleinerer Wert = langsamere Animation)
        
        var distanceX:Number = Math.abs(target._x - _root._xmouse);
        
        var activeTopY:Number = target._y - 150; // Grenze oberhalb der Clipmitte (hier 150 vom Mittelpunkt der Clips)
        var activeBottomY:Number = target._y + 150; // Grenze unterhalb der Clipmitte (hier 150 vom Mittelpunkt der Clips)
        
        if (_root._ymouse > activeTopY && _root._ymouse < activeBottomY)
        {
            if(distanceX < distanceMin)
            {
                targetScale = 100 - distanceX;
                targetAlpha = 100 - distanceX;            
            }
            else
            {
                targetScale = minScale;
                targetAlpha = minAlpha;
            }
        }
        else
        {
            targetScale = minScale;
            targetAlpha = minAlpha;
            if(target._yscale <= minScale+1)
            {
                delete target.onEnterFrame;
                target._yscale = target._xscale = 25

            }
        }
        
        var addScale:Number = (targetScale - target._yscale);
        var addAlpha:Number = (targetAlpha - target._alpha);
        
        target._yscale += addScale * speed;
        target._xscale = target._yscale;
        target._alpha += addAlpha * speed;
        
        clipPosition();
    };
}


function clipPosition():Void
{
    for (p = 0; p < clipArray.length; p++)
    {
        var dis:Number = 5;
        this[clipArray[p]]._x = this[clipArray[p - 1]]._x + (this[clipArray[p-1]]._width/2) + (this[clipArray[p]]._width/2) + dis;
    }
}

activator_mc.onRollOver = function ()
{
    for (i = 0; i < clipArray.length; i++)
    {
        tsunami(_root[clipArray[i]]);
    }
}

for (i = 0; i < clipArray.length; i++)
{
    this[clipArray[i]]._xscale = this[clipArray[i]]._yscale = 25;
    this[clipArray[i]]._alpha = 10;
    clipPosition()
    
    this[clipArray[i]].onRollOver = function ()
    {
        var colorRollOver:Color = new Color(this);
        colorRollOver.setRGB(0x000000);

    }
    this[clipArray[i]].onRollOut = function ()
    {
        var colorRollOut:Color = new Color(this);
        colorRollOut.setRGB(0xFF0030);

    }
}
[/color]


Segundo código - Dockmenu

CÓDIGO
[color=blue]align = bottom;
centerx = Stage.width/2;
centery = Stage.height/2;
menuholder = createEmptyMovieClip("menuholder", -1);
menuholder._y = centery;
menucount = 10;
menuitems = [];
miwidth = 20;
miborder = 1;
startx = centerx-((menucount-1)*(miwidth+miborder))/2;
trace(startx);
for (var i = 0; i<menucount; i++) {
    var menuitem = menuholder.attachMovie("menuitem", "menu"+i, i);
    menuitem._x = startx+i*(miwidth+miborder);
    menuitem.id = i;
    menuitem.onRollOver = function() {
        _root.selected = this;
    };
    menuitems.push(menuitem);
}
onEnterFrame = function () {
    var width = 0;
    for (var i = 0; i<menucount; i++) {
        var xxm = menuitems[i]._xmouse;
        var yym = menuitems[i]._ymouse;
        var xm = Math.sqrt(xxm*xxm+yym*yym);
        if (xm<50) {
            menuitems[i]._xscale = menuitems[i]._yscale += ((200-xm)-menuitems[i]._yscale)/3;
        } else {
            menuitems[i]._xscale = menuitems[i]._yscale += (100-menuitems[i]._yscale)/3;
        }
        width += menuitems[i]._width;
    }
    width += (menucount-1)*miborder;
    var xpos = Math.round(centerx-width/2);
    for (var i = 0; i<menucount; i++) {
        xpos += menuitems[i-1]._width/2+miborder+menuitems[i]._width/2;
        menuitems[i]._x = xpos;
    }
};
[/color]



0

#4 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 14 February 2008 - 12:12 AM

Ok, então vamos primeiro ao menor.

Resolvi comentar o código, quem descordar ou não entender por favor me avise. São 24:10 e eu trabalhei o dia todo, então posso ter esquecido ou errado algum detalhezinho ok ?

Mas vamos lá

CÓDIGO
// Cria uma série de variáveis e estabelece seus valores
align = bottom;
centerx = Stage.width/2;
centery = Stage.height/2;
menuholder = createEmptyMovieClip("menuholder", -1);
menuholder._y = centery;
menucount = 10;
menuitems = [];
miwidth = 20;
miborder = 10;
startx = centerx-((menucount-1)*(miwidth+miborder))/2;
trace(startx);

// Enquanto i for menor que o valor da variavel menucount continua repetindo a função e acrescentando +1 ao valor de i
for (var i = 0; i<menucount; i++) {
// Aqui ele cria uma nova variavel chamada "menuitem" que cria um MovieClip chamado "menuholder"
// Dentro desse MovieClip "menuholder" é criado adicionado o seu MovieClip que está na library.
// E ele é renomeado para o nome dele + o valor do i.
     var menuitem = menuholder.attachMovie("menuitem", "menu"+i, i);
// Aqui a gente estabelece sua posição no eixo X baseada no valor de i e das outras duas variáveis
     menuitem._x = startx+i*(miwidth+miborder);
// Estabelece uma ID para cada MovieClip inserido para que o mesmo seja acessado posteriormente
     menuitem.id = i;
// Mudei essa parte para que vocês vejam ao colocarmos o mouse sobre cada um deles
     menuitem.onRollOver = function() {
         trace (this.id);
     };
// Finaliza a inserção do "menuintem" no array.
     menuitems.push(menuitem);
}

// Cria uma função em loop ao carregar o frame
onEnterFrame = function () {
// Cria uma variavel chamada "width" com valor zero
     var width = 0;
// Enquanto i for menor que o valor da variavel menucount continua repetindo a função e acrescentando +1 ao valor de i
     for (var i = 0; i<menucount; i++) {
// Cria a variável xxm baseada na posição do mouse em X em relaçao ao MovieClipinserido
         var xxm = menuitems[i]._xmouse;
// Cria a variável yym baseada na posição do mouse em Y em relaçao ao MovieClipinserido
         var yym = menuitems[i]._ymouse;
// Cria uma variável que tem o valor da raiz quadrada da soma dos quadrados de xxm e yym
         var xm = Math.sqrt(xxm*xxm+yym*yym);
// Se o valor de xm for menor que 50 é porque o mouse está perto do MovieCLip
         if (xm<50) {
// A escala em X vai ser igual a escala em Y
// Executa o cálculo para gerenciar a escala, aqui cada um pode alterar e deixar ao seu gosto
             menuitems[i]._xscale = menuitems[i]._yscale += ((200-xm)-menuitems[i]._yscale)/3;
         } else {
// Caso o valor de xm seja maior que 50 permanece com a escala de 100%.
             menuitems[i]._xscale = menuitems[i]._yscale += (100-menuitems[i]._yscale)/3;
         }
// Essa parte não tem funcionalidade, pode remover.
         width += menuitems[i]._width;
     }
// Define o valor da variavel "width" baseado na quantidade de MovieClips - 1 * a variável miborder
     width += (menucount-1)*miborder;
// Cria uma variável xpos que tem o valor do calculo da variável centerx - a variável width/2
     var xpos = Math.round(centerx-width/2);
// Enquanto i for menor que o valor da variavel menucount continua repetindo a função e acrescentando +1 ao valor de i
     for (var i = 0; i<menucount; i++) {
// Aumenta o valor da variável xpos para cada novo MovieClip criado, baseado nas coordenadas do MovieClip criado anteriormente e nas // variáveis criadas no começo da programação
         xpos += menuitems[i-1]._width/2+miborder+menuitems[i]._width/2;
// Estabelece a posição em X de cada MovieClip como sendo o valor de xpos
         menuitems[i]._x = xpos;
     }
};


Bom galera, se alguem ai quiser perguntar sobre alguma explicação sintam-se a vontade.

Abraço
0

#5 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 14 February 2008 - 01:06 AM

Rafael, o Ninja!!! rs biggrin.gif

Vou descansar agora tmb., pois já estou a muitas horas acordado.
Mas, já copiei e amanhã vou ficar estudando este código com as explicações.

Espero que a galera aproveite, pois é uma excelente oportunidade de aprendizado. smile.gif

Muito obrigado!
Louzada
0

#6 User is offline   troika 

  • Group: Membros
  • Posts: 31
  • Joined: 07-January 08

Posted 14 February 2008 - 08:21 AM

Sim, oportunidades como estas acho que não se devem perder thumbsup.gif


Bom trabalho Rafael ph34r.gif smartass.gif ph34r.gif
0

#7 User is offline   Edward K 

  • Group: Membros
  • Posts: 91
  • Joined: 23-July 07

Posted 14 February 2008 - 04:42 PM

ótimo tópico para quem quer aprender

vlws wink.gif
0

#8 User is offline   xikinho 

  • Group: Membros
  • Posts: 172
  • Joined: 10-July 07

Posted 15 February 2008 - 07:30 AM

bom gente...parabens pelo topico...mas acho que podiam explicar como colocar texto em cada botao e as actions para carregar alguma coisa (swf, outra frame, etc).

acho que ficaria um topico bem completo...pois tem gente que não sabe como faze isso...

valewww
0

#9 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 15 February 2008 - 01:34 PM

Opa!

Não entendi... Como assim colocar texto em cada botão e actions para carregar alguma coisa? smile.gif

Ainda estou estudando o código "DOCKMENU", mas este código funciona assim: Você o coloca no primeiro frame do arquivo Flash e o Action cria o menu e suas funções. Não existe objeto no Stage, somente 1 na biblioteca.

Para carregar um swf ou imagem vc. usa loadMovie neste mesmo código, basta acrescentar.
Mas, este não é o foco deste tópico... E sim aprendermos como funciona um menu Tsunami com estes códigos disponíveis.

Aliás, encontrei estes códigos em sites alemães e ingleses e são códigos muito bons. Por isso os coloquei aqui para a análise dos experts em ActionScript, como o Rafael, por exemplo.

Fique à vontade para comentar o código ou definir melhor sua questão. (ainda não entendi *rs)

Abraços,
Louzada

QUOTE(xikinho @ 15/2/2008 06:02:20) <{POST_SNAPBACK}>
bom gente...parabens pelo topico...mas acho que podiam explicar como colocar texto em cada botao e as actions para carregar alguma coisa (swf, outra frame, etc).

acho que ficaria um topico bem completo...pois tem gente que não sabe como faze isso...

valewww

0

#10 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 15 February 2008 - 06:41 PM

Concordo com o Eduardo sobre o foco deste tópico, mas eu entendi o que você quis dizer xikinho.

Mas por enquanto acho que devíamos manter o foco e ir tirando as dúvidas que venho recebendo também por MP. O ideal seria mesmo o pessoal todo que ta me mandando colocar aqui para que outros usuário possam compartilhar também já que é este o propósito do tópico.

QUOTE
Aliás, encontrei estes códigos em sites alemães e ingleses e são códigos muito bons. Por isso os coloquei aqui para a análise dos experts em ActionScript, como o Rafael, por exemplo.


Agradelo imensamente o elogio, mas estou MUITO longe de ser expert em ActionScript hehehehe.
Tem gente muito melhor do que eu aqui no forum, o que torna esse ambiente de Flash e ActionScript extremamente rico.
Acho que o corpo de profissionais veteranos do MX dão uma ótima oportunidade de aprendizado para todos os membros que estão procurando aprender e tirar dúvidas, assim como eu faço, sugiro que aproveitem ao máximo e sulguem as coisas que aprenderam, porque é uma oportunidade única.

Mas o que eu sei e consigo compartilhar com o resto de vocês já é bem satisfatório pra mim e espero que pra vocês tambpem !

Abraço gente !
0

#11 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 19 February 2008 - 09:09 PM

UPDATES! smile.gif

Oi amigos, eu estudei o código do arquivo dockmenu.fla, comentado pelo Rafael, mas não consegui entender como poderia ser útil então desisti dele (rs). Explico. O código cria um mesmo botão duplicado (que é um mesmo MC da biblioteca). Mesmo que eu tenha vários MCs na biblioteca eu não os consegui encaixar de forma completa no arquivo... Então... Como não consegui fazer um código que o flash compreendesse passei a estudar o outro arquivo.

Mas, seria legal uma explicação, pois é o código mais enxuto e funcional que já vi para Tsunamis.

Rafael, só uma referência ao código comentado:

CÓDIGO
Essa parte não tem funcionalidade, pode remover.
         width += menuitems[i]._width;
     }


Essa parte é a que determina o ponto central do menu tsunami. Ex: Se o menu tem 6 botões o ponto central fica entre o botão 3 e 4.

................................................................................
...............................................................................

Bem, vamos ao código do outro Tsunami.


Abaixo é o código do arquivo Tsunami2.fla que foi postado na abertura do tópico e continua lá para download. smile.gif

Eu comentei o que compreendi. Quem puder completar, seria ótimo. Principalmente sobre o ponto central desse tsunami, porque eu não consegui mudá-lo...

CODE
var clipArray:Array = new Array("clip1", "clip2", "clip3", "clip4", "clip5", "clip6");


function tsunami(target:MovieClip):Void
{
trace(target);
target.onEnterFrame = function()
{
var distanceMin:Number = 100; // Distância X exigida do cursor do mouse entre os MCs p/ a animação
var minScale:Number = 70; // escala mínima (aqui 70%)
var minAlpha:Number = 15; // valor mínimo para o alfa (aqui 15%)
var speed:Number = 0.2; // Velocidade, valor menor = animação mais lenta e vice-versa (obs: só vai até 0.9)

var distanceX:Number = Math.abs(target._x - _root._xmouse);
//var distanceX:Number = Math.sqrt(target._x - _root._width);

var activeTopY:Number = target._y - 150; // Borda sobre o meio de clipe (aqui 150% dos MCs)
var activeBottomY:Number = target._y + 150; // Borda debaixo do meio de clipe (aqui 150% dos MCs)

if (_root._ymouse > activeTopY && _root._ymouse < activeBottomY)
{
if(distanceX < distanceMin)
{
targetScale = 200 - distanceX; // Tamanho máximo do ZOOM / Scale
targetAlpha = 100 - distanceX; // Máximo de alfa
}
else
{
targetScale = minScale; // Volta a escala de origem
targetAlpha = minAlpha; // Volta ao alfa de origem
}
}
else
{
targetScale = minScale;
targetAlpha = minAlpha;
if(target._yscale <= minScale+1)
{
delete target.onEnterFrame;
target._yscale = target._xscale = 50 // Não entendi esse valor...

}
}

var addScale:Number = (targetScale - target._yscale);
var addAlpha:Number = (targetAlpha - target._alpha);

target._yscale += addScale * speed;
target._xscale = target._yscale;
target._alpha += addAlpha * speed;

clipPosition();
};
}

// Função que determina a posição do Movie Clip (obs: não entendi completamente...)
function clipPosition():Void
{
for (p = 0; p < clipArray.length; p++)
{
var dis:Number = 5;
this[clipArray[p]]._x = this[clipArray[p - 1]]._x + (this[clipArray[p-1]]._width/2) + (this[clipArray[p]]._width/2) + dis;
}
}

// Função que ativa o Tsunami
activator_mc.onRollOver = function ()
{
for (i = 0; i < clipArray.length; i++)
{
tsunami(_root[clipArray[i]]);
}
}


// No geral as funções abaixo determinam o valor inicial do menu e algumas cores posteriores etc
for (i = 0; i < clipArray.length; i++)
{
this[clipArray[i]]._xscale = this[clipArray[i]]._yscale = 70; // Função que determina o valor inicial da escala do menu
this[clipArray[i]]._alpha = 10; // Função que determina o valor inicial da escala do alfa
clipPosition()

this[clipArray[i]].onRollOver = function () // Função para determinar as cores
{
var colorRollOver:Color = new Color(this);
colorRollOver.setRGB(0xF04A22);

}
this[clipArray[i]].onRollOut = function ()
{
var colorRollOut:Color = new Color(this);
colorRollOut.setRGB(0xF8A48F);

}
}



Bem, é isso. Vamos continuar aprendendo? biggrin.gif

Abraços,
Louzada
0

#12 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 20 February 2008 - 05:57 PM

Tem razão Eduardo.....revisei o código agora com calma e percebi o erro...

Erro meu mesmo, como falei, fiz isso meio tarde e avisei que poderiam existir erros !!!

Foi ótimo você ter visto e alertado todo mundo...

Erro meu hehehe...

Abraço !
0

#13 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 21 February 2008 - 01:23 AM

Oi Rafael. Não esquenta... Pior fui eu que já entreguei um trabalho sem revisar e o diretor na confiança tmb. não revisou *rs. Refizemos tudo *rsrs. tongue.gif (e vc. tinha avisado mesmo smile.gif) Mas, achei bom comentar para o pessoal não se perder.

Mas, em relação aos códigos, sabe como fazer o posicionamento do registro do menu Tsunami2.fla? Ou, conseguir colocar botões adicionais no menu Dockmenu.fla? (dá para entender nas respostas anteriores).

Eu não descobri mais nada... Ou melhor, não compreendi.

Abraço! thumbup.gif
Edu


QUOTE(ubi_rj @ 20/2/2008 16:02:12) <{POST_SNAPBACK}>
Tem razão Eduardo.....revisei o código agora com calma e percebi o erro...

Erro meu mesmo, como falei, fiz isso meio tarde e avisei que poderiam existir erros !!!

Foi ótimo você ter visto e alertado todo mundo...

Erro meu hehehe...

Abraço !

0

#14 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 21 February 2008 - 01:59 AM

Olha, da para fazer isso tudo no arquivo que eu comentei....

a variável no caso menucount que controla a quantidade de cópias que serão feitas do MovieClip que está na library.

CÓDIGO
menucount = 10;


O que você deve estar se perguntando é o que que adianta fazer cópias se o que desejamos são botões diferente não é ?

Nessa parte ele chama o MovieClip da library, coloca no Stage e muda seu nome:

CÓDIGO
var menuitem = menuholder.attachMovie("menuitem", "menu"+i, i);


O que podemos fazer é bem simples: Basta criarmos 10 itens para nosso mennu.
E na library, alterarmos a propriedade de cada um, colocando nomes diferentes para que possam ser chamados para o Stage alterando o código acima para este:

CÓDIGO
var menuitem = menuholder.attachMovie("menuitem"+i, "menu"+i, i);


Dessa forma, ele vai começar chamando o ítem menuitem0 e terminará chamando o ítem menuitem9 pois segundo a variável menucount só existirão 10 ítens no menu.

Para entender melhor de uma olhada nesse arquivo que eu fiz esta alteração:
http://rapidshare.com/files/93585716/Dock.rar.html

Abração !




0

#15 User is offline   Renatinho_ttt 

  • Group: Desafio Flash
  • Posts: 63
  • Joined: 13-July 05

Posted 21 February 2008 - 02:37 AM

Muito interessante esses menus!! thumbsup.gif
E bem feitos também...

Abraços!
0

#16 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 22 February 2008 - 02:19 PM

Oi gente, tudo bem?!

Eu fiz esses dois menus com base nos menus do tópico.

Qual vocês acham que ficou melhor? Me dão sua opinião? (obs: estou disponibilizando os links, pois não iriam aparecer aqui devido ao texto dinâmico dentro dos menus que carrega o texto de uma biblioteca).

http://idcult.com/estudos/dockmenu_new.swf

http://idcult.com/estudos/Tsunami2_new.swf

Agora, vamos falar sobre os bugs ainda existentes... smile.gif

No menu "dockmenu_new" quando eu aumento o midborder de 1 para 5 vejam o que acontece... Do botão vFX para o botão Making Of o espaço fica maior... Porquê? Eu refiz o botão, dei umas fuçadas, mas não descobri ainda...

Também existe um dilema que, ainda não fucei, mas já me atormenta (*rs). Como eu determino o ponto exato em que o menu deve ser carregado? Mistério... rsrsrs (obs: para não dizer que não fiz nada eu mudei o "align = botton;" para "align = 500;" e em _y tmb. mudei o valor para pixels... Parece que essa é a solução...)

No menu "Tsunami2_new" não existe nenhum bug digno de nota. A única coisa que gostaria de fazer é que o ponto de registro deste menu fosse igual ao do "dockmenu_new"... No dockmenu o registro é no centro do menu; No Tsunami2 o registro é na esquerda (0 do primeiro botão do menu)... Não é possível arrumar isso? Foi a única coisa que ainda não descobri como fazer neste menu (creio).

Bom, os menus estão quase no ponto! Logo todos terão aprendido e poderão adaptar à gosto pra seus sites. wink.gif

Agradecimento especial ao Rafael. valeu a dica anterior sobre o menucount (que controla a quantidade de clips etc).

0

#17 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 24 February 2008 - 02:55 AM

Oi gente!

Alguém sabe como resolver o ponto de registro do menu "Tsunami2"?
Ainda não consegui localizar o registro no actionscript sozinho...

Ps: Os códigos estão no tópico, assim como os *Flas.

Abraços,
Louzada
0

#18 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 25 February 2008 - 07:30 PM

Oi gente!

Alguém saberia me dizer como fazer o que perguntei anteriormente?

Sabe, o trabalho que eu estava utilizando este tipo de menu já foi aprovado e está sendo finalizado, mas eu gostaria muito de saber... Pois, deve ser algo simples.

Geralmente as coisas mais difíceis de resolver são simples...

Abraços e fico no aguardo e algum retorno...

Louzada
0

#19 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 25 February 2008 - 08:03 PM

E ae Eduardo como vai ?

Repare que no Menu Tsunami2 eles já estão no palco, diferente do que ocorre com o Dockmenu.

Pelo que vi eles não precisam ser alinhados no Stage dinamicamente, quem faz isso é você no momento que coloca-los lá.
Se você mudar todos eles de posição eles ficarão na posição que você os colocou, o que mudará será somente a escala, que é aleterada dinamicamente.

Abraços !
0

#20 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 25 February 2008 - 08:35 PM

Oi Rafael, tudo bem?

Sim, você tem razão. Porém, repare em dockmenu que, quando um botão aumenta de tamanho no mouseover, os outros se deslocam para ambos os lados. Isto é, esquerda e direita. Já no menu Tsunami2 isso não ocorre.

Veja...

No dockmenu o registro dos botões é controlado com este código:

width += menuitems[i]._width;
}


Em Tsunami2 o centro é controlado com este código:

// Função que determina a posição do Movie Clip
function clipPosition():Void
{
for (p = 0; p < clipArray.length; p++)
{
var dis:Number = 5;
this[clipArray[p]]._x = this[clipArray[p - 1]]._x + (this[clipArray[p-1]]._width/2) + (this[clipArray[p]]._width/2) + dis;
}
}


Ambos os códigos funcionam a seu modo. E, o que eu gostaria, é que os botões parecessem estar dentro de um MC que está com o registro no centro... Daí, os botões à esquerda do registro, quando o mouse estiver sobre os da direita, se deslocariam...

Como eu faço para que o deslocamento seja tanto para esquerda quanto para direita?

Se souber como fazer me diz? thumbsup.gif

Abraço,
Louzada
0

#21 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 25 February 2008 - 08:57 PM

Oi Rafael, tudo bem?

Sim, você tem razão. Porém, repare em dockmenu que, quando um botão aumenta de tamanho no mouseover, os outros se deslocam para ambos os lados. Isto é, esquerda e direita. Já no menu Tsunami2 isso não ocorre.

Veja...

No dockmenu o registro dos botões é controlado com este código:

width += menuitems[i]._width;
}


Em Tsunami2 o centro é controlado com este código:

// Função que determina a posição do Movie Clip
function clipPosition():Void
{
for (p = 0; p < clipArray.length; p++)
{
var dis:Number = 5;
this[clipArray[p]]._x = this[clipArray[p - 1]]._x + (this[clipArray[p-1]]._width/2) + (this[clipArray[p]]._width/2) + dis;
}
}


Ambos os códigos funcionam a seu modo. E, o que eu gostaria, é que os botões parecessem estar dentro de um MC que está com o registro no centro... Daí, os botões à esquerda do registro, quando o mouse estiver sobre os da direita, se deslocariam...

Como eu faço para que o deslocamento seja tanto para esquerda quanto para direita?

Se souber como fazer me diz? thumbsup.gif

Abraço,
Louzada
0

#22 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 29 February 2008 - 06:46 AM

Oi gente, seguinte, estou usando o menu Tsunami 2 e, estou com um problema.

Construí o menu certinho e funcional, porém quando eu coloco a função onPress ou onRelease uma das funções do Tsunami fica anulada. A a função que faz com que um box apareça em volta do texto no mouseOver.

Abaixo segue os códigos, mas vou resumir... O código do tsunami está no primeiro frame da cena principal. O código do release do botão também. Mas, o código que faz com que o box apareça está dentro do botão. Isto é... É um MC dentro de outro MC. Talvez dê para resolver com level, mas não sei como fazer...

Se puderam ajudar... Já está quase pronto, só falta resolver esse pepino...

Vejam o código do Tsunami:

CÓDIGO
var clipArray:Array = new Array("btn_home", "btn_comerciais", "btn_videos", "btn_vfx", "btn_clips", "btn_mof", "btn_info");

function tsunami(target:MovieClip):Void
{
    trace(target);
    target.onEnterFrame = function()
    {
        var distanceMin:Number = 80;
        var minScale:Number = 100;
        var minAlpha:Number = 30;
        var speed:Number = 0.2;
        
        var distanceX:Number = Math.abs(target._x - _root._xmouse);
        
        var activeTopY:Number = target._y - 80;
        var activeBottomY:Number = target._y + 80;
        
        if (_root._ymouse > activeTopY && _root._ymouse < activeBottomY)
        {
            if(distanceX < distanceMin)
            {
                targetScale = 200 - distanceX;
                targetAlpha = 100 - distanceX;            
            }
            else
            {
                targetScale = minScale;
                targetAlpha = minAlpha;
            }
        }
        else
        {
            targetScale = minScale;
            targetAlpha = minAlpha;
            if(target._yscale <= minScale+1)
            {
                delete target.onEnterFrame;
                target._yscale = target._xscale = 100

            }
        }
        
        var addScale:Number = (targetScale - target._yscale);
        var addAlpha:Number = (targetAlpha - target._alpha);
        
        target._yscale += addScale * speed;
        target._xscale = target._yscale;
        target._alpha += addAlpha * speed;
        
        clipPosition();
    };
}


function clipPosition():Void
{
    for (p = 0; p < clipArray.length; p++)
    {
        var dis:Number = 5;
        this[clipArray[p]]._x = this[clipArray[p - 1]]._x + (this[clipArray[p-1]]._width/2) + (this[clipArray[p]]._width/2) + dis;
    }
}

activator_mc.onRollOver = function ()
{
    for (i = 0; i < clipArray.length; i++)
    {
        tsunami(_root[clipArray[i]]);
    }
}


E o código que faz o box ativo:

CÓDIGO
home_quad.onRollOver = function(Void):Void  {
    m1 = new mx.transitions.Tween(home_quad, "_alpha", Regular.easeOut, home_quad._alpha, 100, .3, true);
};
home_quad.onRollOut = function(Void):Void
{
    ResetAll();
};

function ResetAll():Void
{
    m1 = new mx.transitions.Tween(home_quad, "_alpha", Regular.easeOut, home_quad._alpha, 0, .3, true);
};


E a função do Release colocada no primeiro frame da timeline:

CÓDIGO
btn_home.onRelease = function(Void):Void  {
    if(executou==false){
        executou=true
        loadMovie("reel.swf", "alvo_submenus")
    }
};


0

#23 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 29 February 2008 - 05:06 PM

Oi gente,

Vou tentar explicar o post anterior de forma resumida.

Obs: Estou usando o menu Tsunami2.

Tenho ações de onRelease na timeline da cena principal para os botões bt1, bt2, bt3, etc (com outros nomes, estes são só para facilitar). Dentro de cada botão tenho 2 MCs, um para o texto (mc_texto1) e outro para o box (mc_box1) em volta do texto. E tmb. tenho ações dentro destes mesmos botões para executar a animação do "mc_box1".

Porém a ação interna do botão interfere na ação externa, da timeline e vice-verca. Alguma solução? Preciso meeeesmo de uma solução... Obrigado a todos! smile.gif

Ps: Aqui segue o link do menu, só para terem uma idéia da animação do box. Abraços!
http://idcult.com/estudos/menu.swf
0

#24 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 29 February 2008 - 09:15 PM

Posta seu arquivo FLA porque fica mais fácil da gente ver e tentar ajudar.

Abração !
0

#25 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

  Posted 01 March 2008 - 12:02 AM

Oi Rafael, segue o link para você visualizar "os probleminhas"... Obrigado novamente! smile.gif

Pegue todos os arquivos que estão neste diretório:

http://idcult.com/sf/
0

#26 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 07 March 2008 - 05:48 AM

Oi Rafael (Ubi), tudo bem?

Fiz como pediu, "upei" os arquivos... Conseguiu olhar o FLA?

Preciso corrigir isso e não tem ninguém para dar uma força... Meu amigo do RJ que mexe com Flash (o Kleber) tá viajando e aqui em SP os que eu conheço só ajudam se recebem por isso. Legal não? rsrsrs

Por isso, espero poder contar contigo... Obrigadão! smile.gif

Abraço!
Edu
0

#27 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 08 March 2008 - 06:49 PM

Não da para você fazer um comando de onRelease para o MovieClip pai e outro para o MovieClip filho.
O comando relacionado com a ação do MovieClip filho não vai funcionar....

Faça um quadrado fake, invisível e retire as ações do MovieClip pai, e coloque nesse novo MovieClip invisível, localizado sobre o MovieClip.

Abraço !
0

#28 User is offline   Eduardo Louzada 

  • Group: Membros
  • Posts: 161
  • Joined: 14-January 08

Posted 09 March 2008 - 04:54 AM

Oi Rafael,

Já tentei isso antes e tentei agora novamente. Não funciona. A não ser que esqueci algo...

Mas, pense. Mesmo que funcionasse, como eu faria para que o quadrado fake crescesse juntamente com as letras? Dentro do código tsunami não é póssível, pois ele adicionaria o quadrado fake à lista de botões e o colocaria ao lado dos outros e não por baixo... Com mxtransitions fica fora de sincronia...

Alguma dica?

Se souber como me dá um toque. smile.gif

Abcs,
Louzada

QUOTE(ubi_rj @ 8/3/2008 17:03:05) <{POST_SNAPBACK}>
Não da para você fazer um comando de onRelease para o MovieClip pai e outro para o MovieClip filho.
O comando relacionado com a ação do MovieClip filho não vai funcionar....

Faça um quadrado fake, invisível e retire as ações do MovieClip pai, e coloque nesse novo MovieClip invisível, localizado sobre o MovieClip.

Abraço !


0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




2 User(s) are reading this topic
0 membro(s), 2 visitante(s) e 0 membros anônimo(s)