Ir para conteúdo

POWERED BY:

Arquivado

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

Everton Javas

[Resolvido] Problemas para redimensionar imagem em movie clip

Recommended Posts

Olá pessoal,

 

Estou criando uma galeria de fotos e ao redimencionar a imagem que é carregada por um movie clip e dependendo do tamanho da imagem original o movie clip não segue um padrão.

 

Meu código de redimencionamento =>

 

if (mc_foto8._xscale > 46) {

mc_foto8._xscale = 46;

}

if (mc_foto8._yscale>44) {

mc_foto8._yscale = 44;

}

 

PERGUNTA:

 

Porque dependendo do tamanho da imagem original o movie clip não fica com as medidas dadas as condições acima?

 

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Everton

 

Para redimensionar é necessário utilizar a classe MovieClipLoader()

 

e fazer a função loadClip("seuswf.swf", alvo);

 

e ai usar o código

var mcl:MovieClipLoader = new MovieClipLoader();
mcl.loadClip("seuswf.swf", alvo);
function onLoadInit(alvo){
	alvo._xscale = 100;
	alvo._yscale = 100;
	if(alvo._width > alvo._height and alvo._width > StageW){
		trace("if");
		alvo._xscale = ((StageW)*(100))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > StageH){
		trace("else if");
		alvo._yscale = ((StageH)*(100))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 100;
		alvo._yscale = 100;
	}
}

;)

 

Abraços e bons testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção berseck, mas onde estou errando ainda?

 

var mcl:MovieClipLoader = new MovieClipLoader();

mcl.loadClip("c:/instantrails/www/qss/web_admin/images/pictures/foto1.jpg", alvo);
function onLoadInit(alvo){
	alvo._xscale = 100;
	alvo._yscale = 100;
	if(alvo._width > alvo._height and alvo._width > StageW){
		trace("if");
		alvo._xscale = ((StageW)*(100))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > StageH){
		trace("else if");
		alvo._yscale = ((StageH)*(100))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 100;
		alvo._yscale = 100;
	}
}

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não sei se você percebeu.......

 

Mas StageW e StageH = Stage.width e Stage.height...

 

se você não declarar essas variaveis ele não vai reconhecer o tamanho do stage <--- palco... para poder redimensionar

 

 

Coloque assim

 

var StageW = Stage.width;

var StageH = Stage.height;

 

e ai então use o código que te passei

 

onde o alvo é o movieclip que você vai utilizar para carregr a sua imagem

 

então o código completo ficaria:

var mcl:MovieClipLoader = new MovieClipLoader();
var alvo:MovieClip = _root.createEmptyMovieClip("alvo", 0/*posição x*/, 0/*posição y*/);
var StageW = Stage._width;
var StageH = Stage._heigth;

//Caso você queira que o movie clip fique centralizado sem sua tela remova o comentario da linha abaixo
/*
alvo._x = StageW/2; 
alvo._y = StageH/2; 
*/

mcl.loadClip("c:/instantrails/www/qss/web_admin/images/pictures/foto1.jpg", alvo);
function onLoadInit(alvo){
	alvo._xscale = 100;
	alvo._yscale = 100;
	if(alvo._width > alvo._height and alvo._width > StageW){
		trace("if");
		alvo._xscale = ((StageW)*(100))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > StageH){
		trace("else if");
		alvo._yscale = ((StageH)*(100))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 100;
		alvo._yscale = 100;
	}
}

Acredito que assim se não vai ter mais erros abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu meu caro berseck,

 

Não tinha percebido mesmo, vacilei.

 

O código ficou assim:

 

var mcl:MovieClipLoader = new MovieClipLoader();
var alvo:MovieClip = _root.createEmptyMovieClip("alvo", 0/*posição x*/, 0/*posição y*/);

// Alteração Everton: Stage._width mas não funciona alterei para Stage.width, o mesmo para height

//var StageW = Stage._width;
//var StageH = Stage._height;

var StageW = Stage.width;
var StageH = Stage.height;

//alvo._x = StageW/2; 
//alvo._y = StageH/2;
alvo._x = 125; 
alvo._y = 90; 


mcl.loadClip("c:/instantrails/www/qss/web_admin/images/pictures/foto1.jpg", alvo);
function onLoadInit(alvo){
	alvo._xscale = 46;
	alvo._yscale = 44;
	if(alvo._width > alvo._height and alvo._width > StageW){
		trace("if");
		alvo._xscale = ((StageW)*(46))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > StageH){
		trace("else if");
		alvo._yscale = ((StageH)*(44))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 46;
		alvo._yscale = 44;
	}
}
// Alteração Everton: precisei chamar a função neste ponto
onLoadInit(alvo);

Mas mesmo assim dependendo do tamanho da imagem o mc com tamanhos diferentes como resolvo isso

 

Muito Obrigado pela ajuda.

 

Everton Martins

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara você alterou para (46) (44).......

 

 

100 é 100% do valor da scale ou seja tamanho real do arquivo......

 

Ai eu recalculo o tamanho do arquivo para que ele fique dentro do tamanho que você quer.... ou seja dentro do palco (Stage)

 

Caso você não queira que seja um stage... mas sim um tamanho pré definido....... coloque no lugar do StageW e do StageH a largura e a altura do tamanho maximo que você quer que o clip....... foto ou o quer que seja..... fique

 

var mcl:MovieClipLoader = new MovieClipLoader();
var alvo:MovieClip = _root.createEmptyMovieClip("alvo", 0/*posição x*/, 0/*posição y*/);

alvo._x = 125;
alvo._y = 90;


mcl.loadClip("c:/instantrails/www/qss/web_admin/images/pictures/foto1.jpg", alvo);
function onLoadInit(alvo){
	alvo._xscale = 100;
	alvo._yscale = 100;
	if(alvo._width > alvo._height and alvo._width > 46){
		trace("if");
		alvo._xscale = ((46)*(100))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > 44){
		trace("else if");
		alvo._yscale = ((44)*(100))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 100;
		alvo._yscale = 100;
	}
}
// Alteração Everton: precisei chamar a função neste ponto
onLoadInit(alvo);

ACho que seria assim o que você quer fazer.........

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara você alterou para (46) (44).......

 

 

100 é 100% do valor da scale ou seja tamanho real do arquivo......

 

Ai eu recalculo o tamanho do arquivo para que ele fique dentro do tamanho que você quer.... ou seja dentro do palco (Stage)

 

Caso você não queira que seja um stage... mas sim um tamanho pré definido....... coloque no lugar do StageW e do StageH a largura e a altura do tamanho maximo que você quer que o clip....... foto ou o quer que seja..... fique

 

var mcl:MovieClipLoader = new MovieClipLoader();
var alvo:MovieClip = _root.createEmptyMovieClip("alvo", 0/*posição x*/, 0/*posição y*/);

alvo._x = 125;
alvo._y = 90;


mcl.loadClip("c:/instantrails/www/qss/web_admin/images/pictures/foto1.jpg", alvo);
function onLoadInit(alvo){
	alvo._xscale = 100;
	alvo._yscale = 100;
	if(alvo._width > alvo._height and alvo._width > 46){
		trace("if");
		alvo._xscale = ((46)*(100))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > 44){
		trace("else if");
		alvo._yscale = ((44)*(100))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 100;
		alvo._yscale = 100;
	}
}
// Alteração Everton: precisei chamar a função neste ponto
onLoadInit(alvo);

ACho que seria assim o que você quer fazer.........

 

Abraços

 

Cara Todas as vezes tem saído pelo trace else.

Acho que não esta calulando.

PQ?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boiei nesses códigos ae...

 

Deixa eu ver se entendo, recapitulando seu primeiro post...

Você tem várias imagens com tamanhos diferentes, e quer carregá-las no palco com um tamanho padrão, é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa mal minha :P

 

Esqueci do addlistener xD

 

var mcl:MovieClipLoader = new MovieClipLoader();
var alvo:MovieClip = _root.createEmptyMovieClip("alvo", 0/*posição x*/, 0/*posição y*/);

alvo._x = 125;
alvo._y = 90;


mcl.loadClip("c:/instantrails/www/qss/web_admin/images/pictures/foto1.jpg", alvo);
function onLoadInit(alvo){
	alvo._xscale = 100;
	alvo._yscale = 100;
	if(alvo._width > alvo._height and alvo._width > 46){
		trace("if");
		alvo._xscale = ((46)*(100))/alvo._width;
		alvo._yscale = alvo._xscale;
	}
	else if(alvo._height > alvo._width and alvo._height > 44){
		trace("else if");
		alvo._yscale = ((44)*(100))/alvo._height;
		alvo._xscale = alvo._yscale;
	} else {
		trace("else");
		alvo._xscale = 100;
		alvo._yscale = 100;
	}
}
mcl.addListener(this);
// Alteração Everton: precisei chamar a função neste ponto
onLoadInit(alvo);

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boiei nesses códigos ae...

 

Deixa eu ver se entendo, recapitulando seu primeiro post...

Você tem várias imagens com tamanhos diferentes, e quer carregá-las no palco com um tamanho padrão, é isso?

 

Sim é isso

 

Como posso realizar?

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oxi.......

 

Coloque o código que lhe dei que todas vão carregar com o mesmo tamanho...

 

....

 

Pode testar colocando só meu código em um novo arquivo...

e colocar uma foto na mesma pasta e chamar ela direto no flash.... tipo

 

mcl.loadClip("foto1.jpg", alvo);

 

E pronto... vai carregar a foto e ela vai ficar minuscula do tamanho que você quer.....

 

><

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oxi.......

 

Coloque o código que lhe dei que todas vão carregar com o mesmo tamanho...

 

....

 

Pode testar colocando só meu código em um novo arquivo...

e colocar uma foto na mesma pasta e chamar ela direto no flash.... tipo

 

mcl.loadClip("foto1.jpg", alvo);

 

E pronto... vai carregar a foto e ela vai ficar minuscula do tamanho que você quer.....

 

><

 

Abraços

Muito Obrigado,

 

Funcionou como eu queria.

 

Grato.

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.