# Fill irregular shape once drawn

**URL:** <https://forum.kirupa.com/t/fill-irregular-shape-once-drawn/270947>\
**Category:** flash\
**Created:** [September 16, 2008, 3:21pm UTC](https://forum.kirupa.com/t/fill-irregular-shape-once-drawn/270947 "2008-09-16T15:21:07Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![benkyma](https://avatars.discourse-cdn.com/v4/letter/b/f08c70/32.png) [@benkyma](https://forum.kirupa.com/u/benkyma)\
**Post date:** [September 16, 2008, 3:21pm UTC](https://forum.kirupa.com/t/fill-irregular-shape-once-drawn/270947/1 "2008-09-16T15:21:07Z")

</div>

I’ve used the drawing API to allow the user to draw with the mouse. When they release the mouse button, the shape is automatically completed using lineTo(startX,startY) which were defined when the line was begun. Is it possible, once the shape is complete to automatically fill it, or even better, fade in a fill color from alpha 0?

```auto

package {

	
	import coreyoneil.collision.CollisionList;
	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;

	public class lasso extends Sprite{
		public var _sprite:Sprite = new Sprite();	
		public static var animalList:CollisionList;
		private var shapeStartX:Number;
		private var shapeStartY:Number;	
		private var myHitTest:HitTest = new HitTest();
		private var startX:Number;
		private var startY:Number;
		
						
		public function lasso(){
			
			this.addChild(_sprite);
			_sprite.addEventListener(Event.ADDED_TO_STAGE, listMaker);
			
			_sprite.graphics.beginFill(0xFFFFFF);
			_sprite.graphics.drawRect(0, 0, 800, 600);
			_sprite.graphics.endFill();	
			
					
			_sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			_sprite.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		
		}

		
		//mouse functions for drawing
		private function onMouseDown(event:MouseEvent):void{
			
			for(var x:uint=0;x<level.aniArray.length;x++) {
				animalList.addItem(level.aniArray[x]);
				
			}
			
				
			startX = mouseX;
			startY = mouseY;
			_sprite.addEventListener(Event.ENTER_FRAME,myHitTest.lassoCrash);		
			_sprite.graphics.lineStyle(10, 0xcccccc, 1);
			_sprite.graphics.moveTo(mouseX, mouseY);
			_sprite.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			trace("startX is "+startX);
			trace("startY is "+startY);
			
		}
		
		
		private function onMouseUp(event:MouseEvent):void{
			var endX:Number = mouseX;
			var endY:Number = mouseY;
			_sprite.graphics.lineTo(startX, startY);
			
			_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			_sprite.removeEventListener(Event.MOUSE_LEAVE,mouseExit);
			_sprite.removeEventListener(Event.ENTER_FRAME,myHitTest.lassoCrash);
						
		}
		
		
		private function onMouseMove(event:MouseEvent):void{
			
			_sprite.graphics.lineTo(mouseX, mouseY);
			_sprite.addEventListener(Event.MOUSE_LEAVE,mouseExit);

		}
		
		private function listMaker(event:Event):void {
			animalList=new CollisionList(_sprite);
			animalList.excludeColor(0xFFFFFF);
		}
		
		private function mouseExit():void {
			_sprite.graphics.lineTo(startX,startY);
		}

	}
}

```
