Ir para conteúdo

POWERED BY:

Arquivado

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

Fabiano Uskara

[Resolvido] Animação Flash mais rápido no Firefox do que no IE

Recommended Posts

Caros amigos, fiz um banner onde logomarcas vão deslizando de um lado para outro. Nada mais é do que um enterFrame somando posições "banner._x", onde as logomarcas carregam externamente indicadas em um XML e carregam dentro do mc banner. Não tenho nada criado na biblioteca.

 

Até aí ok, só que ao rodar, percebi que no IE (estou usando o 8) a rolagem fica absurdamente mais lenta do que no Firefox. Tentei mexer na proporção entre frames/s e quantidade de pixels que ele anda e dá no mesmo.

 

Um detalhe é que tanto em um quanto outro browser as imagens parecem dar pequenas travadas, parecem piscar, mesmo estando muito leves.

 

O Firefox mostra a velocidade real pretendida, mas não acho que no caso do IE seja performance do sistema, porém em se tratando de IE...

 

Não acho nada na net sobre isso. Alguém já viu?

 

Abraços,

Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código está meio bagunçado pq estava testando outras ações, mas enfim:

 

 

 

var imgLarg:Number = 111; // Largura da imagem
var barrasX:Array = new Array(); //
var posInicial:Number = -905;
var largX:Number = 0;

// XML
var urlImgs:XML = new XML(); // Cria novo Objeto XML.
urlImgs.ignoreWhite = true; // Configura para ignorar espaços em branco (default é falso).

// Função que cria MCs e carrega imagens dos Logos no MC de Container
function carregaLogo(ctrl, posX, img, barra)
{
	var nBarra:String = "barra"+barra;
	var imgContainer:MovieClip = _root[nBarra].createEmptyMovieClip(ctrl, _root[nBarra].getNextHighestDepth());
	imgContainer.loadMovie(img, this.getNextHighestDepth());
	imgContainer._x = imgContainer._x + posX;
	imgContainer.cacheAsBitmap;
}

// Função que cria MCs de container dos logos
function carregaBarra(num, target):Void
{
	var depth:Number = this.getNextHighestDepth();
	target.createEmptyMovieClip("barra"+num, depth);
	var barraContainer:MovieClip = target.getInstanceAtDepth(depth);
	barraContainer._x = posX;
	barraContainer.cacheAsBitmap;

	// LOOP para carregar imagens das Logos
	var imgCount:Number = urlImgs.firstChild.childNodes.length; // Numero de registros
	var imgs:Array = new Array(); // Array com as URL das imagens
	var i:Number = 0; // Loop para carregar logos no MC Container (barra)
	var pos:Number = 2; // Posição inicial da imagem
	for (i=0; i<imgCount ;i++)
	{
		carregaLogo(i, 
		 pos, 
		 urlImgs.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue,
		 num
		 );
		largX = parseInt(urlImgs.firstChild.childNodes[i].childNodes[4].firstChild.nodeValue);
		
		pos = pos + largX + 15; // Define em px a posição da imagem após a pos. da última imagem
	}

	var tamanhoMC:Number = _root[barrasX[0]]._width; // Tamanho da Barra
	barraContainer._x = posInicial; 
	
	barrasX.push("barra"+num); // Adiciona o nome das instancias do container num array
}

// Realiza ações quando o carregamento do XML estiver completo
urlImgs.onload = function(success)
{
	var p:Number = 0;

	// Executa as funções p/ carregar as barras
	onEnterFrame = function()
	{
		if (p == 0)
		{
			carregaBarra(1, _root);
			p = 1;
		}
		if (_root["barra1"]._x >= 580 && p == 1)
		{
			_root["barra1"]._x = posInicial;
			p = 0;
		}

		_root["barra1"].cacheAsBitmap;

		_root["barra1"]._x += 0.5;
	}
}

urlImgs.load("logomarcas.xml"); // Carregar o XML dentro do objeto urlImgs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já vi isso ocorrer com um menu accordion em AS3, mesmo usando conteúdo interno.

 

Sempre tenho navegadores e Flash Player atualizado, testo em 5.

 

O arquivo original foi criado no Flash CS3, com Flash Player 9.

 

Abri o arquivo no Flash CS4 e salvei com Flash Player 10, e resolveu.

 

 

No seu caso em AS2, não garanto dê certo, mas não custa conferir.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!

 

Desabilitar a opção "Aceleração por Hardware", colocar o default em "Nenhum". Por algum motivo o IE agiu de forma diferente com essa opção habilitada, reduzindo drasticamente o framerate. Eu havia ativado isso, afim de tentar resolver a fluidez da movimentação por enterframe, pois a imagem dá trepidadas e micro pausadas durante o movimento e parece estar cintilando, piscando muito fraquinho, mas incomoda.

 

Alguém saberia algo sobre isso? É um mc, que contém outros mcs menores com imagens. Faço a movimentação do mc container utilizando enterFrame e somando posições à este (banner._x += 2). De que outro jeito poderia fazer isso por código?

 

Obrigado e abraços!

Fabiano

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.