Código
function InsertarNodo () { Imagenes = Imagenes+1; Nodos = Nodos+1; Grafo.attachMovie("mNodo", "Nodo"+Nodos, Imagenes); // Especificar la situación que representa: set ("Grafo.Nodo"+Nodos+".EnHP", EnHP); // Insertar flecha: Imagenes = Imagenes+1; Grafo.attachMovie("mFlecha", "Flecha"+Nodos, Imagenes); // Especificar el sitio donde se insertan: PosicionY = PadrePosicionY+33; setProperty ("Grafo.Nodo"+Nodos, _y, PosicionY); setProperty ("Grafo.Flecha"+Nodos, _x, PadrePosicionX); setProperty ("Grafo.Flecha"+Nodos, _y, PadrePosicionY+6.5); Hijos = Hijos+1; if ( Hijos == 1 ) { PosicionX = PadrePosicionX; setProperty ("Grafo.Nodo"+Nodos, _x, PosicionX); } else { Hijo = 0; MinPosicionX = PadrePosicionX-16.5*(Hijos-1); SAquedebeActualizarse = SAs-Hijos; do { Hijo = Hijo+1; PosicionX = (Hijo-1)*33+MinPosicionX; setProperty ("Grafo.Nodo"+(Nodos-Hijos+Hijo), _x, PosicionX); // Actualizar datos de las posiciones guardadas: SAquedebeActualizarse = SAquedebeActualizarse+1; set ("SA"+SAquedebeActualizarse+"PosicionX", PosicionX); // Rotación y tamaño de flecha. DistanciaXPadreHijo = Math.abs(PosicionX); setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _height, Math.sqrt(DistanciaXPadreHijo*DistanciaXPadreHijo+20*20)); trace ("Altura: "+Math.sqrt(DistanciaXPadreHijo*DistanciaXPadreHijo+20*20)); Rotacion = 180/Math.PI*Math.atan (DistanciaXPadreHijo/20*-1); if ( PosicionX<0 ) { Rotacion = Rotacion*-1; } setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _rotation, Rotacion); } while ( Hijo < Hijos ); } }
La 1era vez que se aplica esa función inserta una flecha y no la modifica porque no es necesario; queda como quiero:
La 2nda vez inserta otra (ahora hay 2) y modifica el tamaño y rotación de ambas; quedan como quiero:
La 3era vez lo mismo:
La 4ta vez no queda bien:
Algunas están más anchas que otras, ni idea por qué, y probablemente más largas de lo que deben. Pero las alturas supuestamente son iguales en las que deben serlo:
Altura: 53.3877326733399
Altura: 25.9277843249283
Altura: 25.9277843249283
Altura: 53.3877326733399
¿Alguna idea de cual es el problema, error, y cómo corregirlo?