Ir para conteúdo

POWERED BY:

Arquivado

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

fmvnow

[Resolvido]Problema com onpress via actionscript

Recommended Posts

Galera, ja procurei em tudo que é canto algo parecido e não consegui encontrar, então ai vai.

Criei um script teste, para pegar a quantidade de itens de um xml e criar o tanto de botões quantos forem os itens nesse XML, até ai tudo bem, mas meu problema está sendo em quando eu clicar no meu botão o fundo mudar.

 

Vamos dizer assim. tenho um movieclip dinamico, dentro dele tenho um botão, um movieclip (o fundo), e um textfield que contem o id do objeto xml. quando eu clico no botão gostaria que o movieclip (o fundo) fosse para o frame 2.

 

Minha idéia infeliz foi essa

 

$qtd=trabalhos.firstChild.childNodes.length;
		for($ct=0;$ct<$qtd;$ct++)
		{
		//Criando o movie clip dinamico	
			
			_root.createEmptyMovieClip("mv"+$ct,getNextHighestDepth());
			if($ct==0)
			{
			//posicionando o primeiro movie
			_root["mv"+$ct]._x=200;
			_root["mv"+$ct]._y=200;
			}
			else
			{
			//posicionando os outros movies
			$anterior = $ct-1;
			_root["mv"+$ct]._x=_root["mv"+$anterior]._x+$margem;
			_root["mv"+$ct]._y=_root["mv"+$anterior]._y;
			}
			
		/* colocando o fundo do botão*/
			_root["mv"+$ct].attachMovie("gr","gr"+$ct,0);
			_root["mv"+$ct]["gr"+$ct].stop();
			_root["mv"+$ct].attachMovie("bt","bt"+$ct,1);
			_root["mv"+$ct]["bt"+$ct]._alpha=0;
			
		/*criação e formatação do numero do menu*/ 
			_root["mv"+$ct].createTextField("campo"+$ct,2,-15,-9,30,30);
			_root["mv"+$ct]["campo"+$ct].variable="meutexto"+$ct;
			_root["mv"+$ct]["campo"+$ct].selectable=false;
			meuFormato = new TextFormat();
			meuFormato.font = "Vectora LT Std Light";
			meuFormato.embedFonts = true;
			meuFormato.bold = true;
			meuFormato.align = "center";
			meuFormato.size = 12;
			meuFormato.color=0xffffff;// branco
			// aponto o formato para nosso campo de texto
			_root["mv"+$ct]["campo"+$ct].setNewTextFormat(meuFormato);
			_root["mv"+$ct]["meutexto"+$ct]=$ct;
			
			_root["mv"+$ct]["bt"+$ct].onPress = function()
			{
				trace(_root["mv"+$ct]["gr"+$ct].gotoAndStop(2));
			}
		}
como podem reparar nas ultimas linhas, tenho o onpress, mas ele não executa nada. dei um trace e aparece sempre unknown se alguem puder me ajudar ou tiver uma idéia mais simples, serei muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee galera consegui resolver o prob. o caso é que quando ele executava o onpress ele tava pegando o ultimo valor de $ct com isso não estava achando o botão, ja que o ultimo botão era 1 e o ct estava como 2.

pra resolver eu peguei o valor de $ct na criação e depois utilizei no onpress.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee galera consegui resolver o prob. o caso é que quando ele executava o onpress ele tava pegando o ultimo valor de $ct com isso não estava achando o botão, ja que o ultimo botão era 1 e o ct estava como 2.

pra resolver eu peguei o valor de $ct na criação e depois utilizei no onpress.

Aew parabéns pela solução.

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee galera consegui resolver o prob. o caso é que quando ele executava o onpress ele tava pegando o ultimo valor de $ct com isso não estava achando o botão, ja que o ultimo botão era 1 e o ct estava como 2.

pra resolver eu peguei o valor de $ct na criação e depois utilizei no onpress.

Aew parabéns pela solução.

abs

 

Não entendí como ficou no final, será que poderia postar o codigo final?

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que houve duvidas na minha explicação deixo ai o codigo final.

 

$qtd = trabalhos.firstChild.childNodes.length-1;
for ($ct=1; $ct<=$qtd; $ct++) {
//Criando o movie clip dinamico
_root.container.createEmptyMovieClip("mv"+$ct,getNextHighestDepth());
menu = _root.container["mv"+$ct];
if ($ct == 1) {
//posicionando o primeiro movie
menu._x = 35;
menu._y = 581;
} else if (($ct-1)%10 == 0) {
menu._x = 35;
menu._y = _root.container["mv"+$anterior]._y+$margem;
} else {
//posicionando os outros movies
$anterior = $ct-1;
menu._x = _root.container["mv"+$anterior]._x+$margem;
menu._y = _root.container["mv"+$anterior]._y;
}
/* colocando o fundo do botão*/
premio = trabalhos.firstChild.childNodes[$ct-1].childNodes[6].firstChild.nodeValue;
if (premio == 1) {
menu.attachMovie("gr1","gr"+$ct,1);
} else {
menu.attachMovie("gr","gr"+$ct,1);
}
clip = menu["gr"+$ct];
clip.stop();
clip.onPress = function() {
var num;
num = this.campo.text;
if (trabalhos.firstChild.childNodes[num-1].childNodes[6].firstChild.nodeValue!="&") {
mvlink.link = trabalhos.firstChild.childNodes[num-1].childNodes[6].firstChild.nodeValue;
mvlink.onPress = function() {
getURL(this.link, "blank");
};
} else {
mvlink.link = "";
}
var wid:String = trabalhos.firstChild.childNodes[num-1].childNodes[4].firstChild.nodeValue;
var largura:Array = wid.split(",");
if (trabalhos.firstChild.childNodes[num-1].childNodes[5].firstChild.nodeValue != undefined) {
var alt:String = trabalhos.firstChild.childNodes[num-1].childNodes[5].firstChild.nodeValue;
var altura:Array = alt.split(",");
}
_root.prtimgselec.imgselecionada = num;
/*trace($imagensatual);*/
if ($imagensatual != 0) {
for ($bts=1; $bts<=$imagensatual; $bts++) {
//trace($bts)
_root.container["btproj"+$bts].removeMovieClip();
}
}
legenda = trabalhos.firstChild.childNodes[num-1].childNodes[0].firstChild.nodeValue;
$numimgs = trabalhos.firstChild.childNodes[num-1].childNodes[2].firstChild.nodeValue;
$imagensatual = $numimgs;
if ($numimgs != 1) {
for ($imgs=1; $imgs<=$numimgs; $imgs++) {
_root.container.createEmptyMovieClip("btproj"+$imgs,getNextHighestDepth());
menu2 = _root.container["btproj"+$imgs];
if ($imgs == 1) {
//posicionando o primeiro movie
menu2._x = 266;
menu2._y = 625;
} else {
//posicionando os outros movies
$anterior = $imgs-1;
menu2._x = _root.container["btproj"+$anterior]._x+$margem*2/3;
menu2._y = _root.container["btproj"+$anterior]._y;
}
menu2.createTextField("campo",2,-1,-1,15,15);
meucampo = new TextFormat();
meucampo.font = "arial";
meucampo.embedFonts = false;
meucampo.align = "center";
meucampo.size = 10;
meucampo.color = 0x33FFCC;// verde doido
// aponto o formato para nosso campo de texto
_root.container["btproj"+$imgs].campo.setNewTextFormat(meucampo);
menu2.campo.text = $imgs;
menu2.onPress = function() {
var $num = this.campo.text;
imagem.unloadMovie();
carrega();
$tipo = trabalhos.firstChild.childNodes[num-1].childNodes[1].firstChild.nodeValue;
if ($tipo == "imagem") {
imagem.loadMovie(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+$num+".jpg");
} else if ($tipo == "imagempng") {
imagem.loadMovie(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+$num+".png");
} else if ($tipo == "video") {
trace(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+$num+".swf");
imagem.loadMovie(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+$num+".swf");
}
imagem._x = 647-largura[$num-1]/2;
if (trabalhos.firstChild.childNodes[num-1].childNodes[5].firstChild.nodeValue != undefined) {
imagem._y = 300-altura[$num-1]/2;
} else {
imagem._y = 50;
}
};
}
}
imagem.unloadMovie();
carrega();
if (trabalhos.firstChild.childNodes[num-1].childNodes[1].firstChild.nodeValue == "imagem") {
imagem.loadMovie(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+"1.jpg");
}
if (trabalhos.firstChild.childNodes[num-1].childNodes[1].firstChild.nodeValue == "imagempng") {
imagem.loadMovie(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+"1.png");
} else if (trabalhos.firstChild.childNodes[num-1].childNodes[1].firstChild.nodeValue == "video") {
imagem.loadMovie(trabalhos.firstChild.childNodes[num-1].childNodes[3].firstChild.nodeValue+"1.swf");
}
imagem._x = 647-largura[0]/2;
if (trabalhos.firstChild.childNodes[num-1].childNodes[5].firstChild.nodeValue!=undefined) {
imagem._y = 300-altura[0]/2;
} else {
imagem._y = 50;
}
};
/*criação e formatação do numero do menu*/
clip.createTextField("campo",2,-8,-8,16,14);
clip.campo.variable = "meutexto"+$ct;
clip.campo.selectable = false;
meuFormato = new TextFormat();
meuFormato.font = "Vectora LT Std Roman";
meuFormato.embedFonts = true;
meuFormato.align = "center";
meuFormato.size = 10;
meuFormato.color = 0x000000;// branco
// aponto o formato para nosso campo de texto
clip.campo.setNewTextFormat(meuFormato);
clip["meutexto"+$ct] = $ct;
}
}

O código está bem maior pois é a implementação final. Não tenho mais o teste. com isso tem validações para videos imagens que são os destinos dos links. mas a ideia principal está ai junto com os comentários.

Bem, abraços a todos.

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.