0 4 mins 2 semanas

Cuando aplicamos las ventajas de la orientación a objetos a los MovieClip de Adobe Flash, nuestros conceptos sobre esta plataforma llegan a cambiar radicalmente. Los trazos vectoriales, los tipos de datos y los elementos multimedia comienzan a interpretarse como parte de una jerarquía de objetos, y no aislados como antes. Aquí se muestra un ejemplo de cómo emplear clases y sus respectivos objetos en ActionScript 2.0.

Para comenzar, se debe abrir un nuevo documento de Flash y dibujar una pequeña nube blanca sobre un fondo azul cielo. Luego convertirla en un MovieClip y nombrar dicha instancia cloud. Posteriormente hacer lo mismo con una pequeña gota de lluvia, que quedará sin instancias en el escenario, pero vinculada con ActionScript con el identificador drop_symbol, referenciando a la clase Drop:

class Drop extends MovieClip{
  // parámetros
  var transparency:Number;
  var size:Number;
  var speed:Number;


  // posiciones iniciales de la gota de lluvia
  var init_x:Number;
  var final_x:Number;
  var init_y:Number;


  // función que retorna un número aleatorio entre dos valores extremos
  function randomize(min_value, max_value) {
    return (Math.floor(Math.random() * (max_value - min_value + 1)) + min_value);
  }


  // Constructor
  public function Drop() {
    transparency = randomize(0, 70);
    size = randomize(100,200);
    this._x = randomize(init_x, final_x);
    this._y = init_y;
    this._alpha = transparency;
  this._yscale = size;
  }


  // polimorfismo
  public function onEnterFrame() {
    this._y += speed; // go down
    if(this._y > Stage.height){
      removeMovieClip(this);
    }
    if(_parent.house.hitTest(this._x, this._y + this._height, true) || _parent.chimney.hitTest(this._x, this._y + this._height, true) || _parent.skyline.hitTest(this._x, this._y + 10, true)){
      this.play();
    }
  }
} 

Es necesario enfatizar que las clases deben ser guardadas por separadas en archivos de extensión as, con el mismo nombre de la clase que albergan y dentro de la misma carpeta del proyecto para que se acceda a ella automáticamente sin tener que acudir a la directiva #include.

Cuando tengamos lista la clase, debemos escribir en el _root lo siguiente:

var _counter:Number = 0; // contador
var _factor:Number = 3; // factor de incremento del total de gotas
var rain_speed:Number = 7;


onEnterFrame = function() {
  for(var i:Number = 0; i < _factor; i++){
// adjuntar el MovieClip de la biblioteca, inicializando sus propiedades
    attachMovie("drop_symbol", "drop" + _counter + i, getNextHighestDepth(),{speed:rain_speed, init_x:cloud._x, final_x:cloud._x + cloud._width, init_y:cloud._y});
  }
  _counter += _factor;


  // ubicar siempre a la nube por encima de las gotas
  cloud.swapDepths(getNextHighestDepth());
}


// Permitir el arrastre de la nube por el escenario
cloud.onPress = function(){cloud.startDrag();}
cloud.onRelease = function(){cloud.stopDrag();} 

Finalmente, si se desea añadir elementos al fondo, quizás se logre crear un entorno más dinámico. En el siguiente número de la revista se explicará como, por cálculos trigonométricos, se puede crear un Sol casi perfecto. Mientras tanto usted podría dibujar una casa con una chimenea, para después programar el humo que se elevaría hacia el cielo. ¿Lo intentarás…?

Escrito por ZorphDark

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *