Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gente, trabalho com flash a um bom tempo e sempre tive um pouco de receio de utilizar o EnterFrame com medo q o site ficasse lento. Mas estou chegando a conclusão de q para algumas funções , o enterframe é a única maneira de não deixar as ações com bug....
Por exemplo em botoes, depende das açãos que você quer dar no mesmo, o rollover e o rollout é ineficiente ....
Existe algum modo de medir o qto o processamento do enterframe interfere no desempenho? O enterframe interefere mesmo no desempenho da aplicação ???
Mais uma dúvida, existe uma maneira de fazer ações por exemplo em um botão, mas que não fique o enterframe verificando constantemente ?/
abs
http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Imagine um caso onde tenha varios botoes um grudado no outro.... e eu tenha umn efeito de rollover e rollout em todos os botoes... qdo eu passo o mouse rapidamente sobre os botoes não existe a area de rollout, e todos os botões ficam ativos........... entende ?
Mas no caso do botão ele não tem uma area de rollOut, ele só tem o hit que é o próprio corpo do botão, quando o mouse sai dele ja é considerado como rollOut, o unico jeito dele não funcionar assim, é clicando e arrastando pra fora antes de soltar, o que isso é resolvido com o releaseOutSide, no sue caso você tem o menu e esta dando esse problema?Você tem a url dele?
eu entendi, mas a questao é a seguinte, se você coloca botoes grudados , qdo você sai do botao e vai em cima de outro botao, o primeiro não identifica o segundo botao como rollout entendeu ... esse é o pau q dá........É apenas um exemplo do q acontece sempre com esses efeitos sobre o botao... mais tarde eu posto aki ....
Entendi, o que você pode fazer é uma função dentro de cada botão (isso se ele for um movieclip animado) que verifica como se os botões estivessem no up ou down, por exemplo, você cria uma variavel status dentro de cada botão, ai você coloca:
on(rollOver){
this.status = "over";
}
on(rollOut){
this.status = "up";
}
Então desse modo você vai atribuindo valores a essas variaveis, como se fosse um valor booleano, o que você precisa fazer a mais é usar um if, pra saber se quando você passa o mouseem um botão, ele verifica se tem algum outro ativo e se estiver, faz ele retornar na marra sem precisar de rollOver, por exemplo, se você der instancia aos movieclips que são botões de por exemplo bt1, no outro bt2, bt3, etc... você usaria algo assim no bt1:
on(rollOver){
if(bt2.status == "over"){
bt2.gotoAndStop(1);
bt2.status = "up"
}
// resto das ações do botão, inclusive outros ifs pros outros botões
}
Sendo assim você faz uma gambiarra pra funcionar o falso over, isso deve resolver o seu problema.
qquer duvida poste ai novamente.
abraço,
Carneirinho
entao beleza... essa é a questão carneirinho .. você há de convir que isso não é muito usual, eu tb estava fazendo assim , e para evitar problemas sempre ficava com essa tonelada de verificação ... aí eu comewcei a fazer botoes sempre usando o Enterframe e verificando o "OVER" atraves do hitTest. Ficam perfeitos........ Ai da minha pergunta, o enterframe atrapalha o desempenho do site como um todo, tem como medir isso ??Obrigado pelas respostas até aqui cara..[/s
A vantagem de funções assim é de não usar o enterFrame, ele consome um pouco o enterFrame, mas o que mais pesam consumo mesmo são animações, se essa depender de enterframe ai fica pesado, claro ue quanto menos usar é melhor, mas tem sites que faço com bastante enterframe que não chega a travar e nem deixar lento o processo
bom saber.. obrigado cara.. tava chegando a essa conclusao tb
esses enterframe da uma terpidada no desempenho sim.. mas não a ponto de prejudicar o site.. é só uma travadinha de +/- 1/4 de segundo...não sei como medir isso no flash.. mas eu percebo qdo uso esse trace.. se eu tiver ouvido uma musica no pc.. ela da uma rapida travadinha...
troque por setInterval();e clearInterval(). p/ parar
como eu usaria o set interval Void... ele ficaria verificando por um determindado intervalo de tempo ??
Isso, você primeiro cria uma função, por exemplo:
var i = 1;
function teste(){
trace(i);
i++;
}
id = setInterval(teste, 1000); // primeiro o nome da função, depois seta o tempo para o intervalo, 1000 corresponde a 1 segundo, 2000 a dois segundos...
se em alguma hora você quiser parar o intervalo, use o id do intervalo usando:
clearInterval(id);
Cuidado com loops, pois se passar duas vezes pelo setInterval ee vai dobrar o intervalo e vai deixar seu flash loucasso!
abraço,
Carneirinho
A qualquer hora você pode deletar um enterFrame usando a ação:
on(press){
on(release, releaseOutside ){
abraço,
Carneirinho