Site da Brazucah (feito pelos Cabanudos) saiu na coluna do Sergio Maggi no Caderno InfoEtc do Globo Dengarelli, a mosquita safada.
abr 04

Baixe o arquivo fonte aqui.

Existem várias formas de alterar o cursor do mouse no Flash. A maioria delas usa “onEnterFrameâ€, o que significa que a cada frame o swf atualiza a posição do cursor. Daí já dá pra perceber a falha desse método porque se precisarmos usar um frame rate baixo, como 12, por exemplo, o cursor novo não fica totalmente fiel ao cursor normal. Pode-se argumentar que o uso do comando “updateAfterEvent†resolve isto, mas eu encarei um problema quando estava construindo o site da Brazucah. Ao utilizarmos gráficos complexos, que exigem grande processamento do CPU, a tendência é que o mouse fique tremido e pouco fiel. Saí estudando todas as possibilidades e finalmente encontrei a resposta, e ela se chama “setIntervalâ€. Com este comando, dizemos ao swf para executar uma tarefa de tempo em tempo, mas medindo este tempo em segundos, ao invés de utilizar os frames. O que eu fiz foi programar este tempo para 0.1 milesegundos (milesegundo é a medida de tempo utilizada pelo Flash, cada milesegundo é 1 segundo dividido por 1000) e mandar o swf atualizar a posição do cursor sempre que se completasse esse período. Ou seja, a todo instante.

Crie um novo arquivo no Flash, coloque o Movie Clip que você deseja que substitua o mouse no palco, clique nele e nomeie sua instância (no canto inferior direito, em baixo de “Movie Clipâ€) como “rato†(sem aspas).

Depois, no primeiro frame do filme principal, cole este código:

stop();
//De início, escondemos o mouse.
Mouse.hide();

//É preciso dar um nome para o “setInterval” e definí-lo como número
var Mudando:Number;

//Aqui você escolhe o período de tempo que “setInterval” executará
var tempo:Number = 0.1;

//Esta é a função executada a cada 0,1 milesegundo
function mudaMouse():Void {
//vc está dizendo para o seu movie clip acompanhar o x e o y do mouse
rato._x = _root._xmouse;
rato._y = _root._ymouse;

//Este comando auxilia na independência deste evente em relação ao que acontece no resto do seu filme
updateAfterEvent();

}
//Aqui está o setInterval. O “this” se refere a ele mesmo, “mudaMouse” é o nome da função a ser repetida e “tempo” é o período escolhido acima.
Mudando = setInterval(this, “mudaMouse”, tempo);

//Eu criei um outro Movie Clip chamado “imagem” e o coloquei como fundo do swf para brincarmos

_root.imagem.onPress = function() {
//ao clicar no fundo, o mouse muda de Cabana é Bacana para Bacana é Cabana
rato.gotoAndStop(2);
}

_root.imagem.onRelease = _root.imagem.onReleaseOutside = function() {
//ao soltar, dentro ou fora do MC “imagem” o mouse volta ao frame anterior
rato.gotoAndStop(1);

}
_root.imagem.onRollOut = function() {

/*mandamos o mouse ficar escondido de novo, pois se apertarmos o botão direito
o menu do Flash puxa o mouse normal novamente*/
Mouse.hide();
}
_root.imagem.onRollOver = function() {

/*mandamos o mouse ficar escondido de novo, pois se apertarmos o botão direito
o menu do Flash puxa o mouse normal novamente*/
Mouse.hide();
}

Fácil né? Se tiver dificuldade, deixa um comentário.

Pablo Cabana

4 Respostas para “Como mudar o cursor do mouse no Flash – o script definitivo”

  1. Regina Alfaia Diz:

    Excelente, funciona muito melhor do que “onEnterFrame”.

  2. Gustavo Diz:

    NEsse tutor vc estáexplicandocomo fazer Flash 6.0 mais oke eu tenhu aki em casa é o MX feis o download do arki a cima e não rodou no MX….
    e num funfo!
    queria que postaseum de Flash MX.
    Fui…
    Vlw….

  3. Gustavo Diz:

    Outra duvida voce teria umtutorial pra tipow asim:
    fazer um jogo onde o curso é um mira de uma arma e so acertase quando atirase no lugar certo tipow luraes definidos por x & y ou botão.
    fui…
    Té mais.
    Vlw’s…

  4. pablo Diz:

    Gustavo, o código está aí. É so colar no seu arquivo Flash MX e criar o Movie Clip “rato”.

 Deixe um comentário.