Hola a todos.. Buenas tardes..
Básicamente mi problema es este:
Tengo que hacer algo excamente igual a esto:
http://concurso.cnice.mec.es/cnice20...web/trian8.htm
El primero del lado derecho, el del círculo. Pero en Flash con AS 2
Esto es lo que tengo hecho, Video:
http://www.youtube.com/watch?v=okEYQtJLME0
Lo que no he podido hacer es el cuadrito pequeño que marca el ángulo de 90 Grados.
Me sugirieron en un conocido foro, que usara la Clase "Point" para calcular unos
puntos interpolados en lo que podría ser un 20% de las lineas y con "Polar"
determinar un punto cartesiano entre ambos para trazar ese cuadrito..
Sin embargo, cuando intento hacerlo los puntos sencillamente no "son nada".
Este es el código:
Código:
//Big circle's x y cordinates, center registration
centerX = theCircle._x;
centerY = theCircle._y;
//radius for the circle
radius = theCircle._width/2;
//Dibujar 3 Líneas
ReDibujarTriangulo();
//drag the slider
slider.onPress = function() {
slider.onMouseMove = dragTime;
};
//stop dragging
slider.onRelease = function() {
slider.onMouseMove = null;
};
//stop.dragging
slider.onReleaseOutside = function() {
slider.onMouseMove = null;
};
//function to drag the slider
function dragTime() {
//Find out the angle between the eyeball's center and the point where mouse is at
var radians = Math.atan2(_root._ymouse-theCircle._y, _root._xmouse-theCircle._x);
//radius for the circle
radius = theCircle._width/2;
//find out the x y coordinates of this object, from the calculated angle
//multiplying the cos and sin of the angle,by the radius ensures---->
//that the object will be placed on the circumference of the big circle
this._y = theCircle._y+Math.sin(radians)*radius;
this._x = theCircle._x+Math.cos(radians)*radius;
updateAfterEvent();
ReDibujarTriangulo(); //Robertool
}
function ReDibujarTriangulo(){
DibujarTriangulo();
this.Noventa._x = slider._x - 15;
this.Noventa._y = slider._y + 20;
}
function DibujarTriangulo(){
this.createEmptyMovieClip("Diametro", 5);
this.Diametro.lineStyle(1, 0x0000FF, 100);
this.Diametro.moveTo(PuntoB._x + 5, PuntoB._y + 5);
this.Diametro.lineTo(PuntoA._x + 5, PuntoA._y + 5);
this.createEmptyMovieClip("LineaBC", 10);
this.Diametro.lineStyle(1, 0x0000FF, 100);
this.Diametro.moveTo(PuntoB._x + 5, PuntoB._y + 5);
this.Diametro.lineTo(slider._x, slider._y);
this.createEmptyMovieClip("LineaCA", 15);
this.Diametro.lineStyle(1, 0x0000FF, 100);
this.Diametro.moveTo(slider._x, slider._y);
this.Diametro.lineTo(PuntoA._x + 5, PuntoB._y + 5);
//Puntos para la marca de 90 Grados
var pbx:Number = PuntoB._x + 5;
var pby:Number = PuntoB._y + 5;
var pax:Number = PuntoA._x + 5;
var pay:Number = PuntoA._y + 5;
var psx:Number = slider._x;
var psy:Number = slider._y;
Ptb:Point = new Point(pbx, pby);
Pts:Point = new Point(psx, psy);
Ppa:Point = new Point(pax, pay);
Ppb:Point = Point.interpolate(Ptb, Pts, 0.2);
Ppa:Point = Point.interpolate(Ppa, Pts, 0.2);
this.createEmptyMovieClip("raya", 20);
this.Diametro.lineStyle(3, 0x0000FF, 100);
this.Diametro.moveTo(Ppb.x, Ppb.y);
this.Diametro.lineTo(Ppa.x, Ppa.y + 50);
}
Tienen alguna idea, al respecto de como podria hacerlo?
Gracias de antemano..