Comunidad de diseño web y desarrollo en internet online

escala proporcional y no arbitraria.. no puedo solucionarlo

Citar            
MensajeEscrito el 24 Sep 2007 05:04 pm
Hola,
aun estoy trabajando en una función para escalar,
esta vez la duda que tengo es la siguiente:
al clicar un clip aparecen unos nodos con los cual puedo modificar
la escala del clip horizontal y verticalmente.
son 4 nodos situados uno en cada vértice del clip llamados "nodo0_mc"... "nodo4_mc".
para modificar la escala del clip lo que hace cada nodo es lo siguiente :

Código :

   nodo0_mc.onPress = function() {
      this.startDrag();
      this.onEnterFrame = function() {
         nodo3_mc._x = nodo0_mc._x;
         nodo1_mc._y = nodo0_mc._y;
         //"destino_escala" ES EL CLIP QUE SE ESTA ESCALANDO
         destino_escala._x = nodo0_mc._x;
         destino_escala._y = nodo0_mc._y;
         destino_escala._width = nodo1_mc._x-nodo0_mc._x;
         destino_escala._height = nodo2_mc._y-nodo0_mc._y;
      };
   };


el problema es que la escala no es proporcional y yo necesito que al escalar el clip
este lo haga de manera proporcional para que no se deforme ya que dentro de los
clips cargare una foto.

como podría hacerlo ???
aqui pueden ver un ejemplo de lo que he hecho:
[url]
http://www.trigo.cl/escala/escalar-simple.html
[/url]

aqui coloco todo el codigo por si les sirve, gracias y ojalá puedan ayudarme:

Código :

//COLOCA LO NODOS EN SUS POSICIONES CORRESPONDIENTES
ordena_nodo = function (destino_escala2) {
   nodo0_mc._x = destino_escala2._x;
   nodo0_mc._y = destino_escala2._y;
   nodo1_mc._x = destino_escala2._x;
   nodo1_mc._y = destino_escala2._y;
   nodo1_mc._x = destino_escala2._width+nodo0_mc._x;
   nodo2_mc._y = destino_escala2._height+nodo0_mc._y;
   nodo2_mc._x = destino_escala2._width+nodo0_mc._x;
   nodo3_mc._y = destino_escala2._height+nodo0_mc._y;
   nodo3_mc._x = destino_escala2._x;
};
//CREA LOS NODOS 
crea_nodos = function (destino_escala) {
   for (nodos=0; nodos<4; nodos++) {
      //this.createEmptyMovieClip("square_mc"+i, this.getNextHighestDepth());
      this.createEmptyMovieClip("nodo"+nodos+"_mc", nodos);
      eval("nodo"+nodos+"_mc").beginFill(0xFF0000);
      eval("nodo"+nodos+"_mc").moveTo(-11.5, 11.5);
      eval("nodo"+nodos+"_mc").lineTo(11.5, 11.5);
      eval("nodo"+nodos+"_mc").lineTo(11.5, -11.5);
      eval("nodo"+nodos+"_mc").lineTo(-11.5, -11.5);
      eval("nodo"+nodos+"_mc").lineTo(-11.5, 11.5);
      eval("nodo"+nodos+"_mc").endFill();
      ////
   }
   //INVOCO "ordena_nodo" para posicionar los nodos
   ordena_nodo(destino_escala);
   //CUANDO SUELTO LO NODOS DEJAN DE ARRASTRARSE Y DE ESCALAR EL CLIP
   nodo0_mc.onRelease = nodo1_mc.onRelease=nodo2_mc.onRelease=nodo3_mc.onRelease=function () {
      this.stopDrag();
      this.onEnterFrame = null;
   };
   nodo0_mc.onReleaseOutside = nodo1_mc.onReleaseOutside=nodo2_mc.onReleaseOutside=nodo3_mc.onReleaseOutside=function () {
      this.onRelease();
   };
   //ACCIONES PARA A
   //AL ARRASTRAR "nodo0_mc" se modifica la escala del clip 
   nodo0_mc.onPress = function() {
      this.startDrag();
      this.onEnterFrame = function() {
         nodo3_mc._x = nodo0_mc._x;
         nodo1_mc._y = nodo0_mc._y;
         //"destino_escala" ES EL CLIP QUE SE ESTA ECALANDO
         destino_escala._x = nodo0_mc._x;
         destino_escala._y = nodo0_mc._y;
         destino_escala._width = nodo1_mc._x-nodo0_mc._x;
         destino_escala._height = nodo2_mc._y-nodo0_mc._y;
      };
   };
   //ACCIONES PARA B
   //AL ARRASTRAR "nodo1_mc" se modifica la escala del clip 
   nodo1_mc.onPress = function() {
      this.startDrag();
      this.onEnterFrame = function() {
         nodo0_mc._y = nodo1_mc._y;
         nodo2_mc._x = nodo1_mc._x;
         //"destino_escala" ES EL CLIP QUE SE ESTA ECALANDO
         destino_escala._y = nodo0_mc._y;
         destino_escala._width = nodo1_mc._x-nodo0_mc._x;
         destino_escala._height = nodo2_mc._y-nodo0_mc._y;
      };
   };
   //ACCIONES PARA C
   //AL ARRASTRAR "nodo2_mc" se modifica la escala del clip 
   nodo2_mc.onPress = function() {
      this.startDrag();
      this.onEnterFrame = function() {
         nodo1_mc._x = nodo2_mc._x;
         nodo3_mc._y = nodo2_mc._y;
         //"destino_escala" ES EL CLIP QUE SE ESTA ECALANDO
         destino_escala._x = nodo0_mc._x;
         destino_escala._y = nodo0_mc._y;
         destino_escala._width = nodo1_mc._x-nodo0_mc._x;
         destino_escala._height = nodo2_mc._y-nodo0_mc._y;
      };
   };
   //ACCIONES PARA D
   //AL ARRASTRAR "nodo3_mc" se modifica la escala del clip 
   nodo3_mc.onPress = function() {
      this.startDrag();
      this.onEnterFrame = function() {
         nodo0_mc._x = nodo3_mc._x;
         nodo2_mc._y = nodo3_mc._y;
         //"destino_escala" ES EL CLIP QUE SE ESTA ECALANDO
         destino_escala._x = nodo0_mc._x;
         destino_escala._y = nodo0_mc._y;
         destino_escala._width = nodo1_mc._x-nodo0_mc._x;
         destino_escala._height = nodo2_mc._y-nodo0_mc._y;
      };
   };
   //
};
//AL CLICAR SOBRE EL CLIP SE INVOCA A LA FUNCION "CREA_NODOS" PARA
//COMENZAR A ESCALAR
cuadrado_0.onPress = function() {
   yo = this._name;
   //destino_escala = this._name
   crea_nodos(eval(yo));
};
//
cuadrado_1.onPress = function() {
   yo = this._name;
   //destino_escala = this._name
   crea_nodos(eval(yo));
};

Por Gon

23 de clabLevel



 

safari
Citar            
MensajeEscrito el 24 Sep 2007 08:45 pm
Me gusto tu idea y lo intente hacer de otra manera, aqui te dejo el flash por si te sirve. Solo le puse un nodo.

http://rapidshare.com/files/58008054/Gon.fla

Teorema de pitagoras.
Regla de 3.

Por Wako

77 de clabLevel



 

firefox

 

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