Ir para conteúdo

Arquivado

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

RenatinhaA

MC seguindo o mouse com limite no eixo X

Recommended Posts

Olá, preciso colocar um limite no palco para o swf não passar das laterais (horizontal) já tentei de várias formas e não consegui.

Eu peguei o AS desse exemplo:

http://www.flashkit.com/tutorials/Actionscripting/Basic/Making_a-Alexande-735/index.php

 

Removi a parte que faz o movimento no eixo Y pois só que que ele siga no eixo X, até ai tudo bem o problema é que se eu colocar a seta do mouse nas bordas do swf o MC ( bolinha ) começa a sair pra fora da área do arquivo, gostaria de por um limite pro mesmo não sair.

Seria desse jeito:

http://www.templatemonster.com/demo/30373.html

 

As caixas faz o mesmo movimento seguindo o mouse só que elas para, não move até as bordas do arquivo.

 

Agradeço desde já, segue o código que estou utilizando:

onClipEvent (enterFrame) {
	
	mx=_root._xmouse;
	if (mx<_x) {
		dx=_x-mx;
	}
	else {
		dx=mx-_x;
	}

	moveSpeedx=dx/10;
	if (mx<_x) {
		_x=_x-moveSpeedx;
	}
	else {
		_x=_x+moveSpeedx;
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá RenatinhaA e seja bem vinda ao fórum.

 

Para os limites (laterais do filme) está sendo considerado o ponto de registro do MC, por esta razão é que pode ficar um pedaço do MC para fora. Considerando que o ponto de registro do seu MC é no centro, a solução é pegar o tamanho deste MC e dividir pela metade para reduzir este valor dos limites (dx=dx-this._width/2;), ficaria assim:

 

onClipEvent (enterFrame) {
    
    mx=_root._xmouse;
    if (mx<_x) {
        dx=_x-mx;
        dx=dx-this._width/2;
    }
    else {
        dx=mx-_x;
        dx=dx-this._width/2;
    }

    moveSpeedx=dx/10;
    if (mx<_x) {
        _x=_x-moveSpeedx;
    }
    else {
        _x=_x+moveSpeedx;
    }
}

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Public2004 obrigada pela resposta, realmente funcionou no arquivo da bolinha, apenas esqueci de considerar uma coisa.

Meu MC tem o mesmo tamanho do arquivo, seria possível fazer? se for preciso mudar o ponto de registro do MC não tem problema,

No caso meu arquivo seria assim:

 

tamanho do arquivo = 1024x850

tamanho do MC = 1024x850

 

Eu fiz um teste diminuindo esse MC para ficar tipo o do exemplo da bolinha, funcionou mais preciso que o MC tenha o mesmo tamanho do arquivo pois se eu diminuir, a foto que contém nele não irá ficar da forma que desejo. Grata!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim esse mesmo de menos o brilho que dá nas caixas, seria só o movimento.

Não, a foto pega do meio do MC pro lado direito. Aqui o link do fla pra você entender melhor.

 

http://www.deerstore.com.br/downloads/EXEMPLO.fla

 

Se você olhar o lado esquerdo do MC é uma área em branco, se for mais fácil remover essa área em branca e deixar o mesmo espaço do lado direito não tem problema. eu queria saber se no action é possível configurar para que a foto siga o mouse mais tempo pro lado esquerdo pois como você vai ver no arquivo ela fica perto do final do arquivo do lado direito, ou seja se o movimento ficar igual ela vai sair do arquivo pelo lado direito. Se não for possível creio eu que é só aumentar o tempo "moveSpeedx=dx/10;" que irá mover para os 2 lados a mesma distância só que mais lento impedindo da foto sair da área do arquivo.

Do jeito que for mais fácil de fazer pode ser, não se preocupe. Afinal você está me ajudando e não quero dar trabalho pois se não der eu mudo a forma, centralizo a foto no meio do arquivo removendo essa parte grande branca do lado esquerdo e uso com o código que você fez acima. Grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, agora consegui entender melhor o que precisa... Então acho interessante um efeito de movimento mais suave e para isso, sugiro trabalhar com a classe "Tween" como no exemplo abaixo:

 

import mx.transitions.Tween;
import mx.transitions.easing.*;
onMouseMove = function (){
    var bX:Number = mcWoman._x;
    var eX:Number = _root._xmouse;
    var vX:Number = 5;
    var tweenX = new Tween(mcWoman, "_x", Strong.easeOut, bX, eX, vX, true);
    if (eX < 130 || eX > 800){
        tweenX.stop();
    }
};

 

Para utilizar, instancie seu MC (neste exemplo está como "mcWoman") e coloque o trecho de código acima em um frame na Timeline do filme principal. Para ajustar a velocidade de movimento, altere o valor da "var vX" - E os valores (130 e 800) na condição, são os limites para o MC em relação ao palco (esquerda e direita respectivamente), se achar que ainda precisa de ajuste é só alterar esses valores.

Qualquer dúvida em relação a classe ou a função, pode perguntar.

 

Att.

 

PS: Delete o arquivo que disponibilizou para download.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Public2004, nem sei como te agradecer, era exatamente oque eu queria e ainda posso regular até onde o movimento vai!

Muito obrigada mesmo, irei usar o primeiro código também em outros projetos :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, sou novo no fórum e no Flash. Estou postando aqui pelo motivo de ter encontrado 95% da resposta que precisava, nesse tópico, com a resposta do Public2004, porém ainda existe uma dúvida.

 

Estou tentando animar o menu de um site onde uma forma (triangular) segue o movimento do mouse, com o código passado acima obtive sucesso, porém estou precisando delimitar o espaço onde o mouse vai executar o movimento.

 

 

SEGUE O PRINT DA SITUAÇÃO EM QUE ME ENCONTRO:

 

(A moldura verde é onde meu mouse está executando movimento, só que quero delimitar ao espaço em vermelho)

 

1mio.jpg

 

Espero ter conseguido ser claro.

Desde já agradeço a atenção e ajuda.

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.