Comunidad de diseño web y desarrollo en internet online

Ayuda...para pintar linea de relación en MC dentro de un for

Citar            
MensajeEscrito el 07 Jul 2010 07:31 pm
Nuevamente solicitando una ayuda a ustedes los expertos:

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.

Por Fidelacho

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2010 01:19 am
Anexo url de la aplicación para un mejor entendimiento de lo expuesto anteriormente...

http://fidelacho.webege.com/

Espero se visualize de una mejor forma

Por Fidelacho

12 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.