Ir para conteúdo

POWERED BY:

Arquivado

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

darkwader

Problemas com Layout Liquido

Recommended Posts

E ai galera

 

Estou fazendo um site com layout liquido no flash e acabei de encontrar uma pequena dúvida

 

Ja consegui centralizar meu conteudo, meu topo e meu menu porem não estou conseguindo posicionar meu rodapé no final da tela ( o site não usará o scroll de rolagem da pagina).

 

Aguem pode me ajudar? estou usando os codigos passador pelo Italo Borges (muito bom)

http://www.italoborg...toriais/Resize/

 

Gostaria de saber como posicionar o rodapé no fim da pagina, tambem algumas mudanças como o menu ficar na lateral esquerda e no meio da tela entre outros

 

//Inclui a classe tween do zeh
#include "mc_tween2.as"

//propriedades do Stage
Stage.scaleMode = "noScale";
Stage.align = "TL";

//Criamos o listener para o Stage
var listener:Object = new Object();

//Função que irá conter as ações pare redimensionar os mcs.
function stageResize ()

{

	back._x = 0;
	back._y = 0;
	back._width = Stage.width;
	back._height = Stage.height;
	
	barra_x = 0;
	barra._y = 0;
	barra._width = Stage.width;

	



menuTopBar.xSlideTo( int(Stage.width/2 - menuTopBar._width/2), 0.6, "easeoutquart");
menuTopBar._y = 0;
	
}

//Verifica quando o Stage sofre alguma mudança
listener.onresize = function ()
{
	//Assim chamamos a nossa função que organiza os objetos
	stageResize();
}

//Adicionando nosso listener ao Stage
Stage.addListener(listener);
//chamando a função para iniciar
stageResize();
Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado david

outro problema que estou encontrando no layout liquido é com os SWFs externos, quando carrego o container que recebe o swf fica centralizado mas a pagina que carrega não fica centralizada, ela carrega com sua parte superior esquerda no centro do container de carregamente.

 

estou usando

stop();

_root.currMovie = "entrada";

 

container.alvo.loadMovie(_root.currMovie+".swf");

 

porque tenho uma transição de paginas sempre que chamo o swf externo

 

Sabe porque?

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim sim..

uma das soluções seria essa:

 

Meu Exemplo:

 

 

loadmovie ("inx.swf", alvo);

 

//lembra do joão? ganho uma esposa.. rs

joao = Stage.height;

maria = Stage.width

 

alvo._y = joao/2 - metadedaalturadosswfexterno;

alvo._x = maria/2 - metadedalarguradosswfexterno;

 

entendeu?

matematica basica.. =D

 

essa é uma das soluções.

=D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você ter melhor controle sobre esse tipo de coisa

 

Eu usaria a classe MovieClipLoader e o onLoadInit() da mesma ;)

 

Pois ai qualquer clip que for carregado com o MovieClipLoader já vai ser automaticamente centralizado... quando você colocar a função dentro do Init

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Falera vou tentar aqui o exemplo do inx

 

berseck você teria um exemplo das classes MovieClipLoader e o onloadInit()

 

para eu entender melhor

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai Moçada

 

INX seu exemplo deu certo mas ai pintou um problema.

 

para fazer esse site estou usando umas transições de pagina para troca dos SWF externos

 

nos SWF externos uso o seguinte codigo

Primeiro frame

midframe = 50

Frame 50 onde a pagina esta totalmente montada

stop

No ultimo frame quando a pagina "desmontou" o seguinte codigo para a troca:

_root.container.loadMovie(_root.container.currMovie+".swf")

nos meus botões do palco principal, onde esta localizado o container, uso o seguinte código

 

on (release) {
	if (_root.currMovie == undefined) {
		_root.currMovie = "entrada2";
		_root.container.loadMovie("entrada2.swf");
	} else if (_root.currMovie != "entrada2") {
		if (_root.container._currentframe >= container.midframe) {
			_root.currMovie = "entrada2";
			_root.container.play();
		}
	}
}

Ainda no palco, coloco o seguinte código em um frame determinado para carregar um swf externo de entrada

stop();
_root.currMovie = "entrada";

container.loadMovie(_root.currMovie+".swf");

Ele funcionou legal, carregou centralizado porem quando clico no menu no botão que tem o codigo acima ele desmonta normalmente a pagina mas não carrega o proximo SWF clicado e notei que o container esta sumindo

 

O que pode estar causando isso?

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

você lembro que ele tem q reiniciar a animação.. mais axo q se ta fazendo muito aue com isso ai...

Voce pode fazer o seguinte.. deixa o efeito de transição separado do load.. porém ja alinhado ao meio.. assim nao tera problema com o posicionamento dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então INX o posicionameno ficou legal, o que deu problema é que não consigo chamar as outras paginas.

 

Estou usando os codigos que passei no ultimo post

 

quando ele chama a primeira pagina de entrada some o container, a animação se desfaz porem a proxima pagina não é carregada

Compartilhar este post


Link para o post
Compartilhar em outros sites

dai o berseck te ajuda..

eu diria que o problema é nessa parte..

_root.container._currentframe >= container.midframe

 

na minha opniao o certo seria.

_root.container._currentframe >= midframe

 

mais eu so quadrado.. hahaha...

ele é o expert. =P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom para começar...

Você pode vir a ter problemas com troca de informação uma vez que você ta trabalhando com movieclips de uma maneira no palco e outra no botão...

 

Variaveis que se escreve em frame no palco não precisa colocar _root.variavel... se declara assim:

var variavel:String = "exemplo";

 

Chamei como se fosse uma string pelo fato que você vai usar para carregar o MovieClip e ele só aceita como parametro string.

 

Ai se o botão ta no palco mesmo... não precisa usar o on(press) você pode usar uma instancia no botão...

e ai chamar instancia.onPress = function() e coloca as ações...

 

Mas para não mudar seu código :)

 

Teste com trace dentro desse botão o if else para ver o que essa sua variavel responde ;)

 on (release) {
         trace(_root.currMovie);
         if (_root.currMovie == undefined) {
                 _root.currMovie = "entrada2";
                 _root.container.loadMovie("entrada2.swf");
         } else if (_root.currMovie != "entrada2") {
                 if (_root.container._currentframe >= container.midframe) {
                         _root.currMovie = "entrada2";
                         _root.container.play();
                 }
         }
 }
Com esse trace você consegue ver o que ele retorna ;)

Caso ele esteja carregando o valor correto.

 

passe o Trace para dentro de do else if que na verdade pode ser apenas else...

Pq se ele for diferente de undefined e igual a entrada2 ai no seu caso... ele simplesmente não vai fazer nada... vai passar reto

Pois o seu teste indica isso.

 

Quanto ao exemplo do MovieClipLoader é assim:

 

var mcl:MovieClipLoader = new MovieClipLoader();
var mc:MovieClip = new MovieClip();
var obj:Object = new Object();

mcl.addListener(obj);

mcl.loadClip("clip.swf", mc);

obj.onLoadInit = function(){ 
//Aqui seu código de resize
}
Lembrando que onLoadInit o l de load é maiusculo L e o forum muda pra minusculo

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Berseck

 

Pesquisando sobre o que você me deu como opção encontrei esse codigo a configurei para o meu projeto e funcionou direitinho

#include "mc_tween2.as"
Stage.scaleMode = "noScale"; //não sofrerá escala
Stage.align = "tl"; //alinhamento top left

//crio mc vazio que será receberá o outro mc vazio com swf externo
_root.createEmptyMovieClip("container", 0);

//crio mc vazio que dentro do container
_root.container.createEmptyMovieClip("alvo", 0);

//ouvinte pro Stage
var ouvinteStage:Object = new Object();
Stage.addListener(ouvinteStage);//adiciono ouvinte de eventos do stage


//ouvinte pro objeto MovieClipLoader
var ouvinteMcl:Object = new Object();

//objeto MCLvar mcl:MovieClipLoader = new MovieClipLoader();


var mcl:MovieClipLoader = new MovieClipLoader();
mcl.loadClip("entrada.swf", _root.container.alvo); //carrego meu swf no mc
mcl.addListener(ouvinteMcl); //adiciono ouvinte de eventos do MCL

//quando estiver carregado e iniciado o stage, consigo manipular o arquivo
ouvinteMcl.onLoadInit = function(){
    onResizeStage();
    trace("Pagina carregada com sucesso");
}

//quando redimensionar o stage, faça...
ouvinteStage.onResize = function(){
    onResizeStage();
    trace("redimensionou stage");
}

//manipulo posição do meu mc que recebe swf externo
function onResizeStage(){
    //faço algo
    //AQUI VOCÊ FAZ A MANIPULAÇÃO DO JEITO QUE VOCÊ PRECISAR
	
    _root.container.alvo.xSlideTo( int(Stage.width/2-_root.container.alvo._width/2),0.7, "easeoutquart");
    _root.container.alvo.ySlideTo( int(Stage.height/2-_root.container.alvo._height/2), 0.7, "easeoutquart");

	sh = Stage.height;
    sw = Stage.width

	back._x = 0;
	back._y = 0;
	back._width = Stage.width;
	back._height = Stage.height;
	
	barra_x = 0;
	barra._y = 0;
	barra._width = Stage.width;

	rodape._width = Stage.width;
	rodape._y = Stage.height - rodape._height - 1;
	rodape._width = Stage.width;


    menuTopBar.xSlideTo( int(Stage.width/2 - menuTopBar._width/2), 0.6, "easeoutquart");
    menuTopBar._y = 15;

	
}

Porem eu perdi todo o efeito de transição que tinha com o loadMovie

as trocas de pagina ficaram secas usando esse codigo nos botoes de menu

on (release) {
	if (_root.container.alvo.currMovie == undefined) {
		_root.container.alvo.currMovie = "teste";
		_root.container.alvo.loadMovie("teste.swf");
	} else if (_root.container.alvo.currMovie != "teste") {
		if (_root.container.alvo._currentframe >= container.alvo.midframe) {
			_root.container.alvo.currMovie = "teste";
			_root.container.alvo.play();
		}
	}
}

E essas transições é que dão um toque para os sites então queria saber se tem como continuar realizando essas transições de "desmontagem de cada SWF externo antes de entrar o outro SWF externo usando o loadClip como estou usando no exemplo de codigo acima?

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

É exatamente a mesma coisa do loadMovie e loadClip

 

Você só ta alterando a forma como ele carrega para ter maior controle sobre o que ele vai fazer e funcionar.

Mas a função de transição de carregamento é exatamente a mesma...

 

Basta alterar seu código para usar o MovieClipLoader e o loadClip

E tudo vai funcionar como o loadMovie ;)

 

Com a diferença que você pode por por exemplo no loadInit algum tipo de efeito alpha com transição etc.

 

Pode também criar um efeito de transição que vai ser chamado entre um e outro atráves de uma modificação de uma variavel...

Etc.

Só usar a imaginação e um pouquinho de código que você consegue fazer efeitos maravilhosos rs.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai Berseck, Valeu cara você esta me ajudando muito no tema, estou estudando para dominar melhor isso

 

mas sobre o que você me falou abaixo me da um help, você falou que era apenas substituir por MovieClipLoader e loadClip para ter meu efeito de transição novamente então fiz o seguinte como abaixo coloquei esse código nos botões

 

on (release) {
	if (_root.container.alvo.currMovie == undefined) {
		_root.container.alvo.currMovie = "teste";
		_root.container.alvo.MovieClipLoader ("teste.swf");
	} else if (_root.container.alvo.currMovie != "teste") {
		if (_root.container.alvo._currentframe >= container.alvo.midframe) {
			_root.container.alvo.currMovie = "teste";
			_root.container.alvo.play();
		}
	}
}

e no final de cada pagina quando acaba a transição usei o seguinte codigo

_root.container.alvo.MovieClipLoader(_root.container.alvo.currMovie+".swf")

Mas não deu certo o que errei?

 

desculpe a pergunta direta mas é o velho problema de tempo mesmo

 

desde já Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você olhou como eu usei a classe na resposta acima?

Tem um help muito bacana no flash... inclusive um link em portugues aqui no forum que funciona que é uma maravilha.

 

Mas vamos lá:

 var mcl:MovieClipLoader = new MovieClipLoader()
 var obj:Object = new Object();
 
 mcl.addListener(obj);
 on (release) {
         if (_root.container.alvo.currMovie == undefined) {
                 _root.container.alvo.currMovie = "teste";
                 mcl.loadClip("teste.swf",_root.container.alvo);
         } else if (_root.container.alvo.currMovie != "teste") {
                 if (_root.container.alvo._currentframe >= container.alvo.midframe) {
                         _root.container.alvo.currMovie = "teste";
                         _root.container.alvo.play();
                 }
         }
 }

Tendeu?

 

Abraços

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.