Ho scritto il codice di getto per arginare le ripetizioni del trace dovute all'ENTER_FRAME.
Non so se ho scritto un buon codice...anzi penso che sia necessaria una attenta ottimizzazione, che lascio al diretto interessato.
Ecco quello che ne è saltato fuori :
Codice:
var mc:MovieClip; // dichiaro una variabile di tipo MovieClip
var arr:Array = new Array(); // dichiaro e creo una istanza di tipo Array
var lg:int = 0; // dichiaro e imposto valore variabile di tipo int
var max:Number = 155; // dichiaro e imposto valore variabile di tipo Number
var min:Number = -155; // dichiaro e imposto valore variabile di tipo Number
var mcSel:MovieClip; // dichiaro una variabile di tipo MovieClip
var mcHit:MovieClip = new MovieClip(); // dichiaro e creo una istanza di tipo MovieClip
for(lg;lg<5;lg++) {
// creo il movieclip ************************************************************
//
mc = new MovieClip(); // Creo una nuova istanza
mc.name="Clip_"+lg; // Addegno un nome alla nuova istanza
mc.graphics.beginFill(0x000000); // imposto un colore
mc.graphics.drawCircle(50, 50, 25); // imposto posizione e dimensione
mc.graphics.endFill(); //
mc.buttonMode=true; // abilito la manina
mc.y= 50; // imposto posizione asse Y
mc.x= lg*50 + lg*25; // imposto posizione asse x
// Cambio il colore da associare al nuovo MovieClip *****************************
//
var mcColor:ColorTransform = new ColorTransform();
mcColor.alphaOffset=0.8;
mcColor.blueOffset=Math.ceil(Math.random()*(max-min))+min;
mcColor.greenOffset=Math.ceil(Math.random()*(max-min))+min;
mcColor.redOffset=Math.ceil(Math.random()*(max-min))+min;
mc.transform.colorTransform=mcColor; //
// Imposto i listener del movieclip *********************************************
//
mc.addEventListener(MouseEvent.MOUSE_DOWN, dragS);
mc.addEventListener(MouseEvent.MOUSE_UP, stopD);
// Aggiumgo alla displaylist il movieclip****************************************
//
addChild(mc);
// Aggiungo il movieclip all'array **********************************************
//
arr.push(mc);
}
function dragS(e:MouseEvent)
{
e.target.addEventListener(Event.ENTER_FRAME, checkt);
e.target.startDrag();
mcSel = e.target as MovieClip;
var topP:Number = numChildren - 1;
setChildIndex(mcSel, topP);
}
function stopD(e:MouseEvent)
{
e.target.stopDrag();
e.target.removeEventListener(Event.ENTER_FRAME, checkt);
}
function checkt(e:Event):void
{
var lg:int = arr.length;
for (var i=0; i<lg; i++)
{
if ( (e.currentTarget.hitTestObject(arr[i]) ) && (e.currentTarget.name != arr[i].name) )
{
if (mcHit.name != arr[i].name ) {
trace(mcSel.name,"si trova sopra",arr[i].name)
mcHit=arr[i] as MovieClip;
}
}
}
}
Buon studio
Segnalibri