19 de outubro de 2007

Centralizar MovieClip no Stage [ActionScript]

Opa!!!

Agora ta entrando na área de mais conhecimento meu hehehe..
uma dica bem rapida para o pessoal novato em ActionScript ;D

Vamos lá!

Rapidamente vou dar um exemplo de como criar e centralizar um MovieClip em seu Stage.

>CODE <<>

/** Aqui você está criando um MovieClip vazio **/
var meu_mc:MovieClip = createEmptyMovieClip("meu_mc", this.getNextHighestDepth());

/** Aqui estamos setando uma imagem dentro do nosso MovieClip **/
loadMovie("swf/image/minhaImagem.png", meu_mc);

/** Aqui estamos pegando o tamanho width do nosso MovieClip subtraindo o width do nosso Stage e dividindo por 2, assim teremos o centro da nossa posição "x" **/
meu_mc._x = (Stage.width - meu_mc._width) / 2;

/** Aqui estamos pegando o tamanho height do nosso MovieClip subtraindo o height do nosso Stage e dividindo por 2, assim teremos o centro da nossa posição "y" **/
meu_mc._y = (Stage.height - meu_mc._height) / 2;



Simples pessoal, assim você vai ter uma imagem centralizada!!
Até mais ;D

8 comentários:

Ferzito.O disse...

aeee bro ti juro ki um dia eo vo intende tudu isso sauhsuahusasuahs


abraço vei

Unknown disse...

Cara, esse tuto salvo minha vida... tava kerendo fazer um site fullscreen no browser.... ja tinha conseguido deixar fullscreen, mais o problema tava sendo colokr a img no centro certinho.... intao fico assim:

=======

stop();

Stage.scaleMode = "noScale";

setProperty(bgGradient_mc, _width, Stage.width);
setProperty(bgGradient_mc, _height, Stage.height);

var resizeListener1024:Object = new Object();
Stage.addListener(resizeListener1024);


resizeListener1024.onResize = function() {
setProperty(suafoto1024_mc, _width, Stage.width);
setProperty(suafoto1024_mc, _height, Stage.height);

};

var resizeListener800:Object = new Object();
Stage.addListener(resizeListener800);


resizeListener800.onResize = function() {
setProperty(suafoto800_mc, _width, Stage.width);
setProperty(suafoto800_mc, _height, Stage.height);

};


XX = System.capabilities.screenResolutionX;//verifique qual a dimensão do monitor em X
YY = System.capabilities.screenResolutionY;//verifique qual a dimensão do monitor em Y

if (XX == 1024) {
Stage.width = 1025;
Stage.height = 560;
suafoto1024_mc._xscale = 100;
suafoto1024_mc._yscale = 100;
gotoAndStop("1024", 1);
/** Aqui você está criando um MovieClip vazio **/
var suafoto1024_mc:MovieClip = createEmptyMovieClip("suafoto1024_mc", this.getNextHighestDepth());

/** Aqui estamos setando uma imagem dentro do nosso MovieClip **/
loadMovie("suafoto1024.png", suafoto1024_mc);

/** Aqui estamos pegando o tamanho width do nosso MovieClip subtraindo o width do nosso Stage e dividindo por 2, assim teremos o centro da nossa posição "x" **/
suafoto1024_mc._x = 0.5;

/** Aqui estamos pegando o tamanho height do nosso MovieClip subtraindo o height do nosso Stage e dividindo por 2, assim teremos o centro da nossa posição "y" **/
suafoto1024_mc._y = 0;



} else if (XX == 800) {
Stage.width = 800;
Stage.height = 380;
suafoto800_mc._xscale = 100;
suafoto800_mc._yscale = 100;

/** Aqui você está criando um MovieClip vazio **/
var suafoto800_mc:MovieClip = createEmptyMovieClip("suafoto800_mc", this.getNextHighestDepth());

/** Aqui estamos setando uma imagem dentro do nosso MovieClip **/
loadMovie("suafoto800.png", suafoto800_mc);

/** Aqui estamos pegando o tamanho width do nosso MovieClip subtraindo o width do nosso Stage e dividindo por 2, assim teremos o centro da nossa posição "x" **/
suafoto800_mc._x = 112;

/** Aqui estamos pegando o tamanho height do nosso MovieClip subtraindo o height do nosso Stage e dividindo por 2, assim teremos o centro da nossa posição "y" **/
suafoto800_mc._y = 90;

}

Unknown disse...

Teve um amigo meu Jean (gente boa ;D)
que fez um comentário comigo, este sistema para centralizar MovieClip não funfa muito bem quando se trata de dar load de um XML ao invez de um load direto na imagem.

Exemplo:

var centro_mc:MovieClip = createEmptyMovieClip("centro_mc", this.getNextHighestDepth());
loadMovie("myXML", centro_mc);
centro_mc._x = (Stage.width - centro_mc._width)/2;
centro_mc._y = (Stage.height - centro_mc._height)/2;

criamos nosso MovieClip;
chamamos o XML;
centralizamos;

isso retorna um certo problema =/
por ter uns milésimos de atraso no processamento disso, nosso MovieClip acaba lendo seu _width como 0 onde causa problema na centralização

mas depois de algum tempinho ajustei o codigo para XML
e ta aqui para o pessoal

this.createEmptyMovieClip("tester_mc", this.getNextHighestDepth());
var mclListener : Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {

tester_mc._x = (Stage.width - tester_mc._width)/2;
tester_mc._y = (Stage.height - tester_mc._height)/2;
}
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip('myXML', tester_mc);

o que muda?
Ele primeiramente carrega, verifica se carrego o XML e depois executa!

bom espero que isto ajude muito ;)

até mais

Anônimo disse...

Laionnn!!!
muito obrigado.. rs
resolveu meu problemaa que já estava pe dando dor de cabeça rss
putss.. ganhou um fã e um amigo...
pode contar comigooo!!!

valeuuuu!!!

Anônimo disse...

nossaaa... vlw!!!
funcionou blz aqui!! era o que eu precisava!! =]

o/

obrigada!!

Luana Moura disse...

Valeu =P parece simples mas eu não consegui pensar nisso.

Wallace disse...

Usei o código aqui desenvolvido/oferecido e tive o seguinte problema: quando carrego múltiplas imagens no(a) mesmo(a)
- clipe de filme
- linha do tempo/timeline
- cena/scene
mas em quadros/frames diferentes algumas imagens sao carregadas fora da posição. Podem me ajudar?

Unknown disse...

Boa tarde Wallace, nos comentários eu respondi já como fazer isto, mas basicamente você tem que carregar a imagem antes de setar a posição.

this.createEmptyMovieClip("tester_mc", this.getNextHighestDepth());
var mclListener : Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {

tester_mc._x = (Stage.width - tester_mc._width)/2;
tester_mc._y = (Stage.height - tester_mc._height)/2;
}
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip('myXML', tester_mc);