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
abril 4th, 2008 at 15:31
Excelente, funciona muito melhor do que “onEnterFrame”.
junho 10th, 2008 at 19:31
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….
junho 10th, 2008 at 19:37
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…
junho 11th, 2008 at 12:56
Gustavo, o código está aÃ. É so colar no seu arquivo Flash MX e criar o Movie Clip “rato”.