Ir para conteúdo

POWERED BY:

Arquivado

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

Doug_S.S.S.

álbum de fotos

Recommended Posts

Oi pessoal, :)

eu fiz um álbum de fotos com um menu deslizante!

Só que eu estou com um probleminha, no seu exemplo que eu tinha fiz o menu com 5 fotos, até ai tudo bem, só que eu queria fazer um menu com 10 fotos, eu até consegui fazer o menu mas dai eu tive que alterar a propriedade "nScreenWidth = 450;" para "nScreenWidth = 898;" e dai para o rolamento funcionar corretamente eu tenho que mudar o tamanho do filme para 898px, mas quero que o filme continue com a largura de 450px(que é a largura original do exemplo).

 

Como eu posso fazer para fazer com que o menu role certinho mesmo tendo mudado o valor da "nScreenWidth" e não tendo mudado a largura do filme, pois se eu não mudar a largura do filme quando coloco o mouse para a direita o menu não rola para a direita porque a posição que o mouse deveria estar para o menu rolar para a direita não aparece no filme!

 

O link do menu eh esse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pelo o que você explicou aqui, ainda fica difícil de te ajudar, porque tem ações de posições de mouse e tudo mais não tem?tem como você colocar aqui uma amostra do fla pra dar uma olhada?Acho que fica mais facil pra te ajudar.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae galera,

os dois .fla estão disponiveis aqui

Filme com 898px funcionando certinho

Filme com 450px funcionando errado

 

Alguem pode baixar o .fla e ver aonde eu errei? :D

 

Ae americano.2000, o link do tuto eh esse aqui http://www.pontoflash.com.br ele tah dentro da seção tutoriais-intermediarios! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

OI Doug, ele não funciona porque no primeiro ele tem uma largura, e no segundo tem outra, e estão declaradas essas larguras no código, só que você não alterou, nas ações do movieclip onde tem as fotos, você coloca assim:

 

onClipEvent (load) {

nScreenWidth = 450; // aqui estava o valor de 898 que é a largura do outro filme

nMaxRate = 15;

// nPixels determines the speed of the slider movement

function moveLeft(nPixels) {

this._x -= nPixels;

if (this._x<0-nScreenWidth) {

this._x = 0;

}

}

function moveRight(nPixels) {

this._x += nPixels;

if (this._x>0) {

this._x = 0-nScreenWidth;

}

}

}

onClipEvent (enterFrame) {

// move slider with speed dependent on mouse position

if (_root._xmouse<nScreenWidth/2 && _root._xmouse>0) {

moveRight(nMaxRate-_root._xmouse*nMaxRate/(nScreenWidth/2));

} else {

if (_root._xmouse>nScreenWidth/2 && _root._xmouse<nScreenWidth) {

moveLeft(_root._xmouse*nMaxRate/(nScreenWidth/2)-nMaxRate);

}

}

}

 

Se quiser aí no seu filme mesmo só altere o numero 898 do nScreenWidth, pra 450 que já vai funcionar.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só carneirinho,

eu fiz o que você falou, agora ele está correspondendo certo a posição do mouse só que as fotos não parecem ter uma continuidade como nos outros filmes. :huh:

 

Dah uma olhada aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, vamos ao código.

 

Antes o filme tinha declarado o seguinte:

 

nScreenWidth = 898;

 

Porque essa era a largura do seu filme, daí o que fizemos, diminuimos pra 450, então como isso é praticamente a metada de 898, o filme só estava pegando a parte do lado esquerdo, pois a ação pra mover era a seguinte:

 

if (_root._xmouse<nScreenWidth/2 && _root._xmouse>0) {

moveRight(nMaxRate-_root._xmouse*nMaxRate/(nScreenWidth/2));

}

 

Ou seja, se a posição do mouse em x for menor que 898 dividido por 2(metade do palco) e a posição do mouse for maior que 0, então execute a função movieRight, só que como diminuimos o tamanho do palco pra 450, então ele somente dividiu em vez de 898, ele dividiu os 450, então seu filme voltou ao normal, quanto a deslizar o menu pra direita e esquerda, mas daí você disse que o posicionamento das fotos mudou, porque será?Vamos ver no código denovo a ação que faz ele rolar pra direita e pra esquerda:

 

function moveLeft(nPixels) {

this._x -= nPixels;

if (this._x<0-nScreenWidth) {

this._x = 0;

}

}

 

então temos aqui a função pra ele mover pra esquerda certo?então está lá, se a posição do movieclip em x for menor que 0 menos 898(valor dado ao screenWidth, então posicione o movieclip na posição 0 em x . Então aqui já matou tudo, porque agora nosso nscreenWidth não é mais 898 e sim 450, porisso que está dando esse corte seco nas imagens, a solução porem é simples, porque não alteramos o tamanho do movieclip, então o certo é colocar:

 

function moveLeft(nPixels) {

this._x -= nPixels;

if (this._x<0-898) {

this._x = 0;

}

}

 

isso porque o 898 era o valor antigo do nScreenwidth, certo?então vamos passar pro move right(mover pra direita):

 

function moveRight(nPixels) {

this._x += nPixels;

if (this._x>0) {

this._x = 0-nScreenWidth;

}

}

 

Olha lá o mesmo problema, ele diz assim, "se a posiçao desse movieclip em x for maior que 0, então posicione o movieclip em x, na posição 0 - nScreenWidth que agora tem o valor de 450 e não mais 898 tambem, então a solução continua simples, você coloca assim:

 

function moveRight(nPixels) {

this._x += nPixels;

if (this._x>0) {

this._x = 0-898;

}

}

 

Agora seu filme tem tudo pra dar certo, entendeu a lógica?Então resumindo tudo, seu código agora deve ficar assim:

 

onClipEvent (load) {

nScreenWidth = 450;

nMaxRate = 15;

// nPixels determines the speed of the slider movement

function moveLeft(nPixels) {

this._x -= nPixels;

if (this._x<0 -898) {

this._x = 0;

}

}

function moveRight(nPixels) {

this._x += nPixels;

if (this._x> 0 ) {

this._x = 0-898;

}

}

}

onClipEvent (enterFrame) {

// move slider with speed dependent on mouse position

if (_root._xmouse<nScreenWidth/2 && _root._xmouse>0) {

moveRight(nMaxRate-_root._xmouse*nMaxRate/(nScreenWidth/2));

} else {

if (_root._xmouse>nScreenWidth/2 && _root._xmouse<nScreenWidth) {

moveLeft(_root._xmouse*nMaxRate/(nScreenWidth/2)-nMaxRate);

}

}

}

 

Espero ter ajudado, qquer coisa poste aí denovo.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carneirinho, brigadão cara, você me achudou muito!!!Valeussss :) Quando eu tiver outra dúvida eu volto a encher o saco de vcs, heheheheeh :P

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.