In order to make our Perlin noise image scroll, we're going to need an array of Point objects.  We will fill this array and then pass it in as the final parameter to the BitmapData's perlinNoise method.

var offsets:Array = new Array();

for(var i:int = 1; i < 5; i++)
{
    offsets.push(new Point(i * 10, i * 20));
}

bmpData = new BitmapData(427, 152);
bmpData.perlinNoise(427, 152, 4, 10, true, false,
          BitmapDataChannel.BLUE | BitmapDataChannel.GREEN, true, offsets);

bmp = new Bitmap(bmpData);
bmp.alpha = 0.2;
addChild(bmp);


You may have noticed that in this case I have switched the grayscale Boolean to true and have also set the Bitmap's alpha to 0.2.  Perlin noise is a fairly processor-intensive operation and using the grayscale mode helps to cut down the load a bit.

So now we have the Perlin noise image faintly overlaying the background image, but it's not yet scrolling; let's fix that now!  To get the image to scroll, we're going to set up an ENTER_FRAME event listener.  We will update our Perlin noise image inside that function like so:

function doUpdate(evt:Event):void
{
    for each(var p:Point in offsets)
    {
        p.y -= 2;
    }
   
    bmpData = new BitmapData(427, 152);
    bmpData.perlinNoise(427, 152, 4, 10, false, false,
              BitmapDataChannel.BLUE | BitmapDataChannel.GREEN, true, offsets);

    bmp.bitmapData = bmpData;
}

addEventListener(Event.ENTER_FRAME, doUpdate);


Now when you run the movie, you should see a nice, subtle scrolling "wave" effect over the water.  You can see this effect in action here.

Just a couple of notes here at the end; as mentioned, this technique hits the processor pretty hard so I wouldn't suggest going overboard with it.  However, when used properly it can create some nice aesthetic effects as shown.  Keeping the amount of octaves low and using grayscale mode will help with performance.  Notice that when scrolling the offset points, it is the opposite of what you typically expect in Flash; subtracting from the Y position moves the image down instead of up as one might expect.  Also, try playing around with the other parameters and see what kind of effects you can create!  That's all, I hope you found this useful or at the very least enjoy the effect! :o)