Sigo insistiendo en que deberías hacerlo con clases, pero bueno.
Todas las acciones arrastrar y solar las puedes dejar en las originales añadiendo un poquito de lógica al código.
Está Pseudo-función (por llamarlo de alguna manera) que tienes construida, ó su llamada, no me puedo creer que no te esté dando error en el compilador.
Código ActionScript :
function trt
{
total++;
aciertos.text = 'aciertos = '+total;
}
Te falta ponerle el paréntesis donde se nombran las variables que recibe la función.
Código ActionScript :
function trt -->()<-- {
Y a la llamada también te falta ponerle los paréntesis
Código ActionScript :
trt -->()<--
A ver, está vez te he comentado el código para que te enteres mejor
Y no es por ser malo ni un ogro, pero no te voy a ayudar más a desarrollar tu código, te ayudare con cosas que necesites concretas, pues si te hago yo el código, no vas a aprender en la vida.
Código ActionScript :
import flash.events.MouseEvent;
import flash.display.MovieClip;
var arrastrado:MovieClip;
//Definimos una nueva variable para almacenar el objetivo del objeto arrastrado
var objetivo:MovieClip;
var total:int = 0;
for (var i:int = 0; i<4; i++) {
var arrastre:String = 'arrastre'+i;
var animal:String = 'animal'+i;
var fruta:String = 'fruta'+i;
//Lo primero a los movieClips con el nombre arrastre, animal y fruta
//Llámalos arrastre0, animal0, y fruta0
//Y con esto nos ahorramos los 3 condicionales siguientes
/*
if (i == 0) {arrastre = 'arrastre'};
if (i == 0) {animal = 'animal'};
if (i == 0) {fruta = 'fruta'};
*/
var este:MovieClip = getChildByName(arrastre) as MovieClip;
var aquel:MovieClip = getChildByName(animal) as MovieClip;
var bien:MovieClip = getChildByName(fruta) as MovieClip;
este.buttonMode = true;
aquel.buttonMode = true;
bien.buttonMode = true;
este.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
aquel.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
bien.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}
function arrastrar (e:MouseEvent):void {
arrastrado = e.target as MovieClip;
arrastrado.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}
function soltar (e:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
arrastrado.stopDrag();
//Si estuvieramos haciendo clases todo este proceso sería infinitamente más sencillo
//Pero bueno, hagámoslo BRUTEMODE.
//Extraemos los 2 primeros caracteres del nombre del objeto arrastrado
var tipo:String = arrastrado.name.substring(0, 2);
//Ahora mediante un condicional compramos esos 2 caracteres con lo que sabemos para establecer el objetivo
if (tipo == 'ar') {objetivo = getChildByName('destino1') as MovieClip;}
else if (tipo == 'an') {objetivo = getChildByName('destino2') as MovieClip}
else if (tipo == 'fr') {objetivo = getChildByName('destino3') as MovieClip}
//Yo personalmente, para la facilididad de reconocimiento de posibles errores
//crearía una sentencia trace que salte si el tipo del objeto no es reconocido
else {trace('El tipo del objeto arrastrado es erróneo')};
if (objetivo.hitTestObject(arrastrado)) {
arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
//Eliminamos el modo boton del objeto
arrastrado.buttonMode = false;
total++;
aciertos.text = 'aciertos = '+total;
}
}
Un saludo.