Ir para conteúdo

POWERED BY:

Arquivado

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

Davicamarinha

variavel global nao funciona

Recommended Posts

Boa tarde a todos.

 

Estou tentando fazer uma global que é carregada dentro de um movieclip mandar seus dados para o movieclip principal. Pus ela assim no movieclip que é carregado:

 

on (release) {
	//loading.loadClip("02.swf",palco);
	_global.filme = "filme1";
	_root.palco.gotoAndPlay(16);
	_root.palco.papel.gotoAndPlay(16);
}

E no movieclip principal eu pus assim:

 

if (_global.filme == "filme1") {
trace("ok")
}

O q esta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já expliquei milhares de vezes aqui no forum...

Mas sempre posso explicar denovo

 

Variaveis chamadas dentro de funções só valem dentro da função!!!

 

Coloque a variavel no frame fora do botão... clique sobre o frame e vá na parte de action script e coloque lá sua variavel

 

_global.filme = "";

 

Pronto agora que a variável foi declarada... você pode chamar ela dentro de uma função e alterar que ela vai ser valida para outros locais.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a ignorancia, eu pus a variavel do lado de fora como você falou (no frame 1) do movieclip que é carregado. Agora, como eu faço para declarar ela dentro do meu botão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a ignorancia, eu pus a variavel do lado de fora como você falou (no frame 1) do movieclip que é carregado. Agora, como eu faço para declarar ela dentro do meu botão?

 

Teóricamente, se a variável é global, não vai precisar mais declará-la... somente chamá-la...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Errrrrrr do mesmo jeito que você já havia chamado?

 


_global.filme = true;

botao.onPress = function(){
 if(_global.filme){
	trace('é chamei a variavel');
 }else {
	trace('variavel não existe');
}

//ou clique sobre o botão e coloque
on(release){
 if(_global.filme){
	trace('é chamei a variavel');
 }else {
	trace('variavel não existe');
}
}

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente eu estou me batendo com isso... Fiz assim, no mc principal, eu pus:

 

_global.filme = "";

if (_global.filme == "filme1") {
trace("ok")
}
else {
trace("global vazia")
}

E no mc que é carregado, no botão eu pus assim:

 

on (release) {
	_global.filme = "filme1";
}

Mas não funciona, o valor "filme1" não chega a variavel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Programação 0 para você! Reprovado na matéria!!! RS tem que fazer novamente!!!

 

 

Se você fizer isso aqui:

_global.filme = "";
if (_global.filme == "filme1") {
trace("ok")
}
else {
trace("global vazia")
}

Nunca vai funcionar!!!!!! pois seu código vai ler direto isso... ou seja vai dar sempre global vazia!!!!!

Nunca via dar global ok... pois nunca mais você vai fazer esse if else

 

Eu já disse como você tinha de fazer para ver funcionando...

 

Vamos lá passo a passo com o titio!! (parece sacanagem... mas é uma maneira de brincar... mas por favor tente como vou ensinar)

 

1) Crie um quadrado em sua tela

2) Selecione esse quadrado

3) aperte F8

4) Marque a opção MovieClip ou botão e de OK

5) Clique apenas 1 vez sobre o botão e vá em propriedades (ctrl + f3) ou window -> propriedades

6) Assim que abrir a parte de propriedades se ele tiver desselecionado o botão selecione novamente. E veja que tem um campo aparecendo com instance name (possivel de preencher) um seletor para você selecionar entre movie clip, botao ou simbolo etc.

7) Na parte de instance name ESCREVA LITERALMENTE botao... é a palavra botao sem acento mesmo!!!

8) Clique sobre o frame na timeline

9) Abra a parte de Action Script (F9)

10) Escreva o código abaixo (ou copie e cole):

_global.filme = true;

botao.onPress = function(){
 if(_global.filme){
 	trace('é chamei a variavel');
 }else {
 	trace('variavel não existe');
 }
}
11) Agora de um ctrl + enter (testar movie) e aperte o botão!

12) Verá a mensagem no output: é chamei a variavel

 

Agora com base nisso faça o mesmo procedimento para colocar o novo valor em seu botão e lembre-se IF E ELSE só funciona quando chamados... se você colocar em sequencia como você citou ele vai rodar 1 vez e nunca mais vai testar novamente... pois não tem código nenhum re acessando essa informação!

 

=)

 

Espero que tenha ajudado... e brincando, brincando é que a gente aprende... use e abuse dos foruns pedindo informação!!! Mas não espere sempre que alguem vá colar exatamente o que você quer... muitas vezes vão apenas dar o caminho das pedras... e você é quem tem que descobrir como fazer.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, é que eu estou acostumado só com PHP e estou aprendendo as2 agora. Tentei o que você falou, e tentei por a logica do que você disse no site que estou fazendo, mas não funcionou. Fiz assim:

 

palco.menuzao.botoes.pg_inicial.onPress = function() {
	if (_global.filme == "filme1") {
	trace("ok")
	}
	else {
	trace("global vazia")
	}
}

Pelo o que me lembro, você tem que dizer o caminho de aonde esta o movieclip que voce quer, foi o que eu fiz la na primeira linha, ate chegar no meu botao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta ok

 

Mas você alterou a variavel em algum momento para filme1?????

 

com _global.filme = "filme1"?

 

Se não o fez não vai funcionar...

 

Por favor poderia colocar seu código completo?

Botões... Actions nos frames...

 

Tudo que possa ser referente ao que você está tentando fazer.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do meu mc inicial esta assim:

 

Stage.scaleMode = "noScale";
Stage.showMenu = false;
Stage.align = "TL";

Stage.addListener(objeto);

var loading:MovieClipLoader = new MovieClipLoader();

var porcentagem:Number;

var objeto:Object = new Object();
objeto.onLoadProgress = function(target:MovieClip, bl:Number, bt:Number):Void  {
	porcentagem = Math.round((bl/bt)*100);

	//trace("Carregado: "+porcentagem+"%");
	//trace("Bytes Loaded: "+bl);
	//trace("Bytes Total: "+bt);
	carrega.gotoAndStop(porcentagem);
	carrega.carregador.text = porcentagem+"%";
};

objeto.onLoadStart = function() {
	carrega._visible = true;
	carrega._y = (Stage.height/2)-(carrega._height/2);
	carrega._x = (Stage.width/2)-(carrega._width/2);

};
objeto.onLoadInit = function() {

	if (porcentagem == 100) {
		//trace("Chegou a 100");
		carrega._visible = false;
	}
function Liquido():Void {
		var sh = new Number(Stage.height); 
        var sw = new Number(Stage.width);
		
		trace("altura:"+sh);
		trace("largura:"+sw);
		
		//palco._width = Math.floor(sw);
		palco.menuzao.barra._width = Math.floor(sw);
		//palco.menuzao._y = Math.floor(sh)/2;
		palco.menuzao.botoes._x = Math.floor(sw)/2 - 904/2;
		palco.menuzao.p_dir._x = Math.floor(sw) - 298;
		palco.papel._y = Math.floor(sh)/2 - 440;
		palco.papel._x = Math.floor(sw)/2 - 588;
}
stageList = new Object();
stageList.onResize = function():Void {
        Liquido();
};
Stage.addListener(stageList);

//Posicionar os elementos uma primeira vez
Liquido();	
};

palco.menuzao.botoes.pg_inicial.onPress = function() {
        if (_global.filme == "filme1") {
        trace("ok")
        }
        else {
        trace("global vazia")
        }
}

loading.addListener(objeto);
loading.loadClip("01.swf",palco);


e no meu botão esta assim:

 

on (rollOver) {
	this.gotoAndPlay(2);
}
on (rollOut) {
	this.gotoAndPlay(11);
}
on (release) {
	//loading.loadClip("02.swf",palco);
	_global.filme = "filme1";
	_root.palco.gotoAndPlay(16);
	_root.palco.papel.gotoAndPlay(16);
	
	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continua confuso

 

Ou você faz todas as ações dos botões... com on(Release)

 

Ou vai fazer todas as ações como caminho.botao.onPress = function

Desse jeito ai ao que to vendo tem duas ações para o mesmo botão... e uma vai sobrescrever a outra.

 

O erro basico ta na confusão de código

 

Se eu fosse você esquecia que existe o on(rollOver) on(release)

 

E fazia tudo no frame principal.

 

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.