Resulta que estoy desarrollando unos ejercicios de tipo relación*, pero tengo un problema al crear una linea que es la que me va a realizar la relacion.
He aqui el codigo:
Código ActionScript :
var theURL:String = "xml/containers.xml";
var xmlData:XML = new XML();
var indexArray:Array = [];
var opcion1:Array = [];
var enunciado:Array = [];
var imageList:Array = [];
var puntos:Number = 0;
var indexCont:Number = 0;
var indexXML:String;
var posx:Number;
var posy:Number;
var mcClip:MovieClip = new MovieClip();
var newClip:MovieClip = new MovieClip();
var posArrayX:Array = new Array();
var posArrayY:Array = new Array();
var line:Shape;
line = new Shape();
function callXML():void {
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, loadXML);
xmlLoader.load(new URLRequest(theURL));
}
function loadXML(event:Event):void {
xmlData = new XML(URLLoader(event.target).data);
var a:Number = xmlData.contenedor.length();
for (var i:uint = 0; i < a; i++) {
indexArray.push(xmlData.contenedor.@id[i]);
enunciado.push(xmlData..emisor[i]);
opcion1.push(xmlData..receptor[i]);
var objeto:DisplayObject = mcHolder.getChildAt(i);
if (objeto is MovieClip) {
trace(objeto.name);
if (objeto.name.substr(0, 11) == "mcContainer") {
trace(objeto.name);
mcClip = objeto as MovieClip;
mcClip.emisor_txt.text = enunciado[i];
mcClip.addChild(line);
mcClip.mcShape.buttonMode = true;
mcClip.mcShape.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
}
}
}
function mouseDownHandler(event:MouseEvent):void {
mcClip = MovieClip(event.currentTarget.parent);
posx = (mcClip.width - (mcClip.mcShape.height / 2));
posy = mcClip.height / 2;
//line.graphics.lineStyle(2, 0x99FF00, 100);
stage.addEventListener(MouseEvent.MOUSE_MOVE, movement);
}
function mouseUpHandler(event:MouseEvent):void {
line.graphics.clear();
stage.removeEventListener(MouseEvent.MOUSE_MOVE, movement);
}
function movement(event:MouseEvent):void {
//trace(mcClip.name);
line.graphics.clear();
line.graphics.moveTo(posx, posy);
line.graphics.lineStyle(3, 0x861328);
line.graphics.lineTo(mcClip.mouseX, mcClip.mouseY);
}
callXML();
Hasta aquí todo me funciona bien, el problema es cuando se pinta la linea de relación, siempre me la pinta en el ultimo MovieClip de la primera columna, asi se quiera generar desde cualquier MovieClip de la primera columna.
Asumo que la función "movement", que es en donde se pinta la linea de relación, me esta tomando el MovieCllip con el ultimo valor del [i], asignado en el for........
Espero me puedan echar una mano o por lo menos darme un luz en el camino, ya que siempre he recibio buensa ayudas de parte de toda la comunidad de crisitalab.
Cualquier duda, no mas preguntar.....
Imagen de la dinamica del ejercicio para mayor entendimiento:
[img]http://l4c.me/fotos/Fidealcho/ejemplo-ejercicios-de-relacion[/img]
* Estos ejercicios consisten en mostrar dos columnas paralelas, una de definición de conceptos y otra con el nombre del concepto, la idea es relacionar las definiciones con su respectivo concepto.
