Ir para conteúdo

POWERED BY:

Arquivado

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

rd111072

attachar MCs e referenciá-los para aplicar função

Recommended Posts

Bom dia, moçada!

 

Estou tentando attachar MCs e referenciá-los para aplicar função. Comecei com o código abaixo:

screenWidth = 700;
screenHeight = 400;
aldeonArray = new Array();
for (i=0; i<20; i++) {
	attachMovie ("aldeon", "aldeon"+1, 1);
	aldeonArray[i] = _root["aldeon"+1];
	aldeonArray[i]._x = random(screenWidth);
	aldeonArray[i]._y = random(screenHeight);
}
aldeon._visible = 100;
_root.onEnterFrame = function() {
	for (i=0; i<20; i++) {
	if (aldeonArray[i].hitTest(_xmouse, _ymouse, true)) {
		aldeonArray[i]._alpha = 30;
	}
}
};

Ele deve chamar o mc "aldeon" e criar 20 instnâcias dele e depois se hitTest=true, diminuir seu alpha para 30.

 

O problema é que só atacha uma instância.

 

como eu faço para atachar as 20 que preciso?

 

Alguém sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, tente assim:

screenWidth = 700;
screenHeight = 400;
aldeonArray = new Array();
for (i=0; i<20; i++) {
	attachMovie ("aldeon", "aldeon"+i, i);
	aldeonArray[i] = _root["aldeon"+i];
	aldeonArray[i]._x = random(screenWidth);
	aldeonArray[i]._y = random(screenHeight);
}
aldeon._visible = 100;
_root.onEnterFrame = function() {
	for (i=0; i<20; i++) {
	if (aldeonArray[i].hitTest(_xmouse, _ymouse, true)) {
		aldeonArray[i]._alpha = 30;
	}
}
};

E não esqueça de efetuar o "linkage" de seu mc.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Public!

 

Deu certo, irmão...

 

Agora como eu faço para:

 

- inserir um de cada vez (até 20), cada vez que eu pressionar um botão

- fazer cada um dos mcs executar uma ação (tipo gotoAndStop ("aldeon", 2)), sempre que fôr clicado (onPress)

 

ALGUÉM SABE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom moçada,

Depois de queimar muito a mufa, consegui fazer um botão pra inserir um de cada vez e os tornei clicáveis.

 

Agora preciso fazer cada um dos mcs executar uma ação (tipo gotoAndStop ("aldeon", 2)), sempre que fôr clicado (onPress).

 

Abaixo, a Action como está;

 

screenWidth = 700;
screenHeight = 400;
var numeroMC:Number = 0; //contador para referenciar as instâncias de aldeon

//chamada do botao com funcao que atacha aldeons.
bot.onRelease = function() {
	numeroMC += 1;
	i = numeroMC - 1;
	if (numeroMC >= 20){
		delete this.onRelease;
	}
aldeonArray = new Array();
//criacao do aldeon por attach, dentro do array.
	_root.attachMovie ("aldeon", "aldeon"+i, getNextHighestDepth(), i++);
	aldeonArray[i] = _root["aldeon"+numeroMC];
	aldeonArray[i]._x = random(screenWidth);
	aldeonArray[i]._y = random(screenHeight);
	
	//funcao que torna o aldeon (no _root) clicavel.
		_root["aldeon"+i].onPress = function()
{
	//e remove o aldeon, atraves do this.
this.removeMovieClip();
//this.gotoAndStop ("aldeon"+i, 2);<<ainda não funfa...
}
}
Será que alguém sabe???

Compartilhar este post


Link para o post
Compartilhar em outros sites

@eder

esse eu deixo com o Public shifty.gif

Grande Eder... :rolleyes:

 

rd não seria apenas isso:

this.gotoAndStop (2); //agora funfa...
Mas neste caso teria que desabilitar o "removeMC", porque a ação é exatamente no botão que estás a remover, aí não faria sentido, a não ser que seja uma ação em outro elemento...

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso mesmo Public!

 

Agora os mcs estão sendo ativados um de cada vez através do clique do mouse. No entanto, depois que eu clico em um, não consigo ativar outro que tenha sido attachado antes. Quer dizer: não consigo alternar entre os mcs criados dinamicamente...

 

tenho um outro experimento, que alterna entre os mcs, assim:

 

onClipEvent (enterFrame) {

this.onPress = function() {

gotoAndStop ("um", 2);

}

if (this.escolha == 1) {

this.onMouseDown = function ():Void {

xFind = _root._xmouse;

yFind = _root._ymouse;

onEnterFrame = function ():Void {

this._x += (xFind-this._x)/5;

this._y += (yFind-this._y)/5;

};

};

 

}

if (this.escolha == 0) {

gotoAndStop ("um", 1);

delete this.onEnterFrame;

 

}

}

 

e dentro do mc:

 

var escolha = 1;

_root.um2.escolha = 0;

this.swapDepths(1);

 

Isso faz um alternar com o outro. quando um está ativado o outro não se move e vice-versa. só que eu quero fazer isso com mcs dinâmicos.

 

Como faço??? Who knows???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voltando ao cód anterior...

Você não consegue alternar entre os MC clicados porque definiu uma ação "gotoAndStop" para eles, e no caso essa ação já foi executada, você tem que utilizar por ex: "gotoAndPlay" para dar continuidade na animação do MC.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tive uma idéia:

 

O mc "ativado" poderia ser o que estivesse com no nível, getDepth mais alto.

Ao invés da variável "escolha", poderia ser assim...

 

Mas não sei como faço para, no onPress, colocar o mc no nível mais alto e criar um if para torná-lo o mc "movível", "ativo"...

 

cês sabem???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo assim:

 

var numeroMC:Number = 0; //contador para referenciar as instâncias

//chamada do botao com funcao que atacha aldeons.
bot.onRelease = function() {
	numeroMC += 1;
	i = numeroMC - 1;
	
   
aldeonArray = new Array();
//criacao do aldeon por attach, dentro do array.
	_root.attachMovie ("aldeon", "aldeon"+i, i, i++);
	aldeonArray[i] = _root["aldeon"+numeroMC];
	aldeonArray[i]._x = casa._x;
	aldeonArray[i]._y = casa._y;
	//_root["aldeon"+i].escolha = 0;
	
	//funcao que torna o aldeon (no _root) clicavel.
		aldeonArray[i].onPress = function()
{
	//move o aldeon, se...
aldeonArray[i].gotoAndPlay (2);

if (aldeonArray[i].getDepth() == 1) {
	aldeonArray[i].onMouseDown = function ():Void {
xFind = _root._xmouse;
yFind = _root._ymouse;
onEnterFrame = function ():Void {
aldeonArray[i]._x += (xFind-aldeonArray[i]._x)/5;
aldeonArray[i]._y += (yFind-aldeonArray[i]._y)/5;
};
};
	}	
}
for(each in _root) {
  var obj = _root[each];
  if(obj instanceof MovieClip) {
	var objDepth = obj.getDepth();
	trace(obj._name + ":" + objDepth)
  }
}
}

e dentro do mc:

this.swapDepths(1);

 

por enquanto ele está atachando os movies no depth igual ao número da instância e quando o mc é clicado vai para o maior depth relativo aos outros.

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.