How to Create flying hearts effect

January 7, 2010

Actionscript 3.0 Tutorial

Download the source here

  1. Launch Flash Designer and set movie dimensions 500 x 500 (or any desired).
  2. Change frame delay to “Stop”.
  3. Add new frame, change “Frame 1″ to “Master Frame (1)”
  4. Go to “Frame 1″, select “Master Frame (1)” as the background:

Create a heart

  1. Go to “Frame 1″
  2. Choose “Insert” > “Shape or Line” and select “Heart”
  3. Fill it with radial gradient (center color orange, outer color red), resize it to 52×37 pixels
  4. Convert it to sprite (“Edit” > “Convert to Sprite”)
  5. Rename it to “heart” and check “ActionScript Target” under “Item” > “Placement Properties”
  6. Move the sprite outside visible area

Create background

  1. Go to “Master Frame (1)”
  2. Choose “Insert” > “Shape or Line” and select “Heart”
  3. Fill it with vertical gradient, top color light red, bottom color dark red
  4. Duplicate, enlarge and position both hearts to create the background

Add ActionScript:

Go to “Frame 1″, choose “Frame” > “ActionScript” and paste the code:

maxhearts = 100;

var hearts = new Array();

for(i=0;i<maxhearts;i++)
{
hearts[i] = heart.duplicateMovieClip(“heart”+i,100+i);

// put it in random place
hearts[i]._x = Stage.width*Math.random();
hearts[i]._y = Stage.height*Math.random();
hearts[i]._xscale = 40+Math.random()*60;
hearts[i]._yscale = hearts[i]._xscale;

hearts[i].yspeed = Math.random()*4+ 1;
hearts[i].increment = -0.025+Math.random()*0.05;
hearts[i].onEnterFrame = function() {
this.radians = this.increment + this.radians;
this._y = this._y – this.yspeed;
this._x = Math.sin(this.radians) + this._x;
if (this._y<-20) {
this._y = Stage.height;
this._x = 0-10+Math.random()*Stage.width;
}
}
}

Hit F9 for preview.

INFO: to place an object in front of hearts, select it, choose “Item” > “Placement Properties” and change the layer to higher value, for example “Layer 3″:

, , , ,

No comments yet.

Leave a Reply