# (AS3) liquify image migration

**URL:** <https://forum.kirupa.com/t/as3-liquify-image-migration/214005>\
**Category:** flash\
**Created:** [January 24, 2007, 10:16pm UTC](https://forum.kirupa.com/t/as3-liquify-image-migration/214005 "2007-01-24T22:16:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pi3rc3](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pi3rc3](https://forum.kirupa.com/u/pi3rc3)\
**Post date:** [January 24, 2007, 10:16pm UTC](https://forum.kirupa.com/t/as3-liquify-image-migration/214005/1 "2007-01-24T22:16:13Z")

</div>

im working on converting the liquify image tutorial on kirupa, [found here](http://www.kirupa.com/developer/mx2004/liquify.htm), over to AS3. its pretty painless but im having some trouble with converting functions that are in as2 and not in as3. heres what ive got so far…

```auto
	public class Ripple extends MovieClip{
		private var maxImages:Number = 20;
		public var game:As3Game;
		public var mask_mc:MovieClip;
		public var arrHolder:Object;
		
		public function Ripple(g:As3Game){
			game=g;
			arrHolder = new Object();
			arrHolder = dupeAndPlace(game.myBack.gameBg);
		}
		
		public function updateMe():void{
			makeWaves(arrHolder.masks_arr);
		}
		
		public function dupeAndPlace(image:MovieClip):void{
			var arrHolder:Object = new Object();
			arrHolder.pics_arr = new Array(0);
			arrHolder.masks_arr = new Array(0);
			
			for(var i=1; i< maxImages; i++){
			
				var dnm = "image" + i;
				var mnm = "mask" + i;
				
				var imgObj:Object = {x:image.x, y:image.y, xscale:100+(i*1.5), yscale:100+(i*1.5)};
				var maskObj:Object = {xscale:Math.floor(100/i+3), yscale:Math.floor(100/i+3)};
				
				/*
				var theDupedImage = image.duplicateMovieClip(dnm, this.getgetDepth()+i, imgObj);
				var theDupedMask = mask_mc.duplicateMovieClip(mnm, theRubberizer.getDepth()+ (i*50), maskObj);
				*/
				
				imgObj = game.duplicateMc(image,true);
				maskObj = game.duplicateMc(mask_mc,true);
				
				imgObj.setMask(maskObj);
				
				arrHolder.masks_arr.push(maskObj);
			}
		}
		
		public function makeWaves(masks_arr:Array):void{
			
			for (var i = masks_arr.length; i>0; i--) {
			
				masks_arr*.x += (game.myBack.mouseX-masks_arr*.x)/maxImages*i;
				masks_arr*.y += (game.myBack.mouseY-masks_arr*.y)/maxImages*i;
			
			}

		}
		
	}

```

the error i get is telling me

> TypeError: Error #1006: setMask is not a function.  
> at Ripple/dupeAndPlace()  
> at Ripple$iinit()

whats the best way to accomplish this effect in AS3?
