electroduendes.com

bitácora de un desarrollador interactivo

electroduendes.com header image 2

Cuerda elástica

November 1st, 2005 · 3 Comments

Estoy jugando con algunos experimentos de la api de dibujo. En el experimento que trataba de hacer, las curvas cambiaban en función de la velocidad del viento. Me he acordado del experimento de marcos que ví un día en los .fla de subflash y que me gustó bastante. Como tenía algo de código parecido, lo he reproducido. La verdad, es que resulta más fácil de lo que parece.
Cuando tenga un rato, lo comento y lo publico.

PD: cuando acabo cosas como estas, me digo... "los programadores del Medal of Honor se tienen que partir el culo leyendo estas chorradas " :D

[editado]

su código fuente:

Actionscript:
  1.  
  2. import flash.geom.Point;
  3. import mx.transitions.*;
  4. import mx.transitions.easing.*;
  5. // puntos de la goma
  6. var pinit:Point = new Point(50, 100);
  7. var pfin:Point = new Point(150, 100);
  8. // la goma se va a dibujar con un vertice
  9. var pVerticeCurva:Point = null;
  10. // dragger es  la cruz
  11. attachMovie("beizer", "dragger", 2);
  12. init();
  13. // crea el clip goma e inicializa la posicion del dragger y del enterFrame
  14. function init() {
  15.         var goma = _root.createEmptyMovieClip("goma", 1);
  16.         // este punto se podría introducir a mano
  17.         pVerticeCurva = new Point(Math.abs((pinit.x-pfin.x)/2)+pinit.x,
  18.                                                                 Math.abs((pinit.y-pfin.y)/2)+pinit.y);
  19.         // colocamos el dragger en el punto de la curva
  20.         _root["dragger"]._x = pVerticeCurva.x;
  21.         _root["dragger"]._y = pVerticeCurva.y;
  22.         goma.onEnterFrame = redibujar;
  23. }
  24. // dibuja la goma con los valores calculados
  25. function redibujar() {
  26.         with (goma) {
  27.                 clear();
  28.                 lineStyle(2, 0xc0c0c0, 100);
  29.                 moveTo(pinit.x, pinit.y);
  30.                 curveTo(_root["dragger"]._x, _root["dragger"]._y, pfin.x, pfin.y);
  31.         }
  32. }
  33. dragger.onPress = function() {
  34.         startDrag(this);
  35. };
  36. // cuando soltamos el dragger, movemos el punto de la curva...
  37. dragger.onRelease = dragger.onReleaseOutside=function () {
  38.         stopDrag();
  39.         new Tween(this, "_x", Elastic.easeOut, this._x, pVerticeCurva.x, 1, true);
  40.         new Tween(this, "_y", Elastic.easeOut, this._y, pVerticeCurva.y, 1, true);
  41. };
  42.  

Tags: Actionscript · Experimental

3 responses so far ↓

  • 1 marcos // Dec 10, 2005 at 3:21 pm

    Muy wapo, que bien saber que alguien mira los fla de subflash.. :)Queremos ver el codigo!!

  • 2 Alex // Dec 14, 2005 at 4:40 am

    dicho y hecho, maestro :D

  • 3 marcos // Dec 19, 2005 at 12:48 am

    Gracias!. Ya veo que la filosofia es la misma que emplee yo (si no recuerdo mal) pero esto mucho mejor escrito.. creo que de cuando lo hice no tenia a mano las tweens con lo que me curre el efecto de elasticidad a partir de un codigo de joan garnet… XD Tamos todos en el ajo!

Leave a Comment