A tus dudas:
1) No era "onLoad", era onClipEvent (Load). Lo siento mucho, pero no manejo muy continuamente ActionScript, y olvido luego la forma correcta de llamar a todo
2) A "abs" se le debía llamar como Math.abs
3) Con el rápido Copy-Paste, olvidé que los dos && antes de cerrar el parentesis no van, lo siento
Bueno, creo que es tiempo de corregir algunos detallitos. Comencemos entonces:
En ga
Código:
//el código para cada silaba://
onClipEvent(load){
this.inicioX = this._x;
this.inicioY = this._y;
}
on (rollOver) {
var music:Sound = new Sound();
music.loadSound("ga.mp3",true);
music.start(1);
}
on (press) {
var music:Sound = new Sound();
music.loadSound("ga.mp3",true);
music.stop();
this.startDrag(true);
}
on (release) {
this.stopDrag();
if (this.hitTest(_root.clip1) &&
Math.abs(this._x - _root.clip1._x) < this._width/2 &&
_root.clip1.ocupado == false) {
this._x = _root.clip1._x;
this._y = _root.clip1._y;
_root.clip1.ocupado = true;
_root.clip1._alpha = 100;
}
else if (this.hitTest(_root.clip2) &&
Math.abs(this._x - _root.clip2._x) < this._width/2 &&
_root.clip2.ocupado == false) {
this._x = _root.clip2._x;
this._y = _root.clip2._y;
_root.clip2.ocupado = true;
_root.clip2._alpha = 100;
}
else if (this.hitTest(_root.clip3) &&
Math.abs(this._x - _root.clip3._x) < this._width/2 &&
_root.clip3.ocupado == false) {
this._x = _root.clip3._x;
this._y = _root.clip3._y;
_root.clip3.ocupado = true;
_root.clip3._alpha = 100;
}
else if (this.hitTest(_root.clip4) &&
Math.abs(this._x - _root.clip4._x) < this._width/2 &&
_root.clip4.ocupado == false) {
this._x = _root.clip4._x;
this._y = _root.clip4._y;
_root.clip4.ocupado = true;
_root.clip4._alpha = 100;
}
else {
this._x = inicioX;
this._y = inicioY;
}
_root.revisar();
}
Repetir el procedimiento en revisar para cada una de las silabas.
En el frame inicial:
Código:
function limpiar() {
_root.a._x = _root.a.inicioX
_root.a._y = _root.a.inicioY
_root.bri._x = _root.bri.inicioX
_root.bri._y = _root.bri.inicioY
_root.go._x = _root.go.inicioX
_root.go._y = _root.go.inicioY
_root.clip1.ocupado = false;
_root.clip1._alpha = 50;
_root.clip2.ocupado = false;
_root.clip2._alpha = 50;
_root.clip3.ocupado = false;
_root.clip3._alpha = 50;
_root.clip4.ocupado = false;
_root.clip4._alpha = 50;
}
function revisar() {
if ((
_root.a.hitTest(_root.clip1) &&
_root.bri.hitTest(_root.clip2) &&
_root.go.hitTest(_root.clip3)
) || (
_root.a.hitTest(_root.clip2) &&
_root.bri.hitTest(_root.clip3) &&
_root.go.hitTest(_root.clip4)
)){
loadmovie("abrigo.mov");
}
}
limpiar();
Repite el procedimiento para todas las palabras.
Y por último, en un botón llamado "limpiar"
Código:
on(press){
_root.limpiar();
}
Te dejo el ejemplo en los siguientes links:
http://mx.geocities.com/daphyreweb/test/darganddrop.swf http://mx.geocities.com/daphyreweb/test/darganddrop.fla
Nota: Asegurate que haya suficiente espacio entre los "clip" o podrían chocar con una esquina casi invisible al ojo. Tardé horas en descubrir que estaba mal en mi código, y al final estaba bien
Cualquier duda me preguntas, ahora si estoy seguro que estará perfecto. ¡Mucha suerte!