Free ActionScript

Flash AS2 & AS3 Tutorials, Game Code, Effects, Source Files & Sample Downloads

Drag, Drop and Snap Inventory System

My latest AS3 Game Inventory System.


  • Drag, drop and snap
  • Create/destroy inventory containers
  • Create/destroy level containers
  • Move items between different movieclip containers
  • Create/destroy items in level
  • Create/destory items in inventory – new
  • Find empty inventory slot – new
  • Added item selected/diselected state – new
  • Added slot full/empty state – new
  • Code optimization and more comments – new

Preview – v1.1.2

Download Fla Sample

Download Fla Sample


  • Stackable Items – items of the same type can be placed in the same slot
  • Auto-pickup item – items placed in bag automatically, if bag has space
  • Multiple Level containers – different game levels
  • Multiple Inventory containers – bag, bank, store
  • Destroy items
  • Sell items
  • Show Item Tooltips

Bug Fixes

  • Fixed bug when releasing mouse over item, while holding nothing – Thanks 19greg96!


  • Fixed “slot full” bug after removing item from slot – Thanks 19greg96!
  • Fixed publishing issue for Flash Player 10

Older AS2 version is available here:



Scroller – Dynamic Scrollbar v2

A newer, better version of my scrollbar class. This one does not have any classes attached to movieclips. Instead you pass it a content clip, mask clip, track clip and slider clip like so:

_scrollbar = new Scrollbar();
_scrollbar.init(content, contentMask, track, slider);

This version also supports mouse wheel scrolling.

Download Fla Sample

Download Fla Sample

Draw Box Class

By request, here is a simple box drawing class. Click and drag to draw box based on mouse position.

This can be used as an object selecting mechanism in games to select multiple objects at the same time.

Click and drag to draw box

 * Draw Box class
 * ---------------------
 * VERSION: 1.0
 * DATE: 11/14/2010
 * AS3
package com.freeactionscript
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	public class Box extends Sprite
		private var _canvas:DisplayObjectContainer;
		private var _startX:Number;
		private var _startY:Number;
		private var _endX:Number;
		private var _endY:Number;
		public function Box($canvas:DisplayObjectContainer, $startX:Number, $startY:Number)
			_canvas = $canvas;
			_startX = $startX;
			_startY = $startY;
			_endX = _canvas.mouseX;
			_endY = _canvas.mouseY;
			_canvas.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);
			_canvas.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
			_canvas.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		private function onMouseMoveHandler(event:MouseEvent):void
			_endX = _canvas.mouseX;
			_endY = _canvas.mouseY;
		private function onMouseUpHandler(event:MouseEvent):void 
			_canvas.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);			
			_canvas.removeEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
			_canvas.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		private function onEnterFrameHandler(event:Event):void 
			graphics.lineStyle(2, 0x88B1CC);
			graphics.moveTo(_startX, _startY);
			graphics.beginFill(0x88B1CC, .25);
			graphics.lineTo(_endX, _startY);
			graphics.lineTo(_endX, _endY);
			graphics.lineTo(_startX, _endY);
			graphics.lineTo(_startX, _startY);
Download Fla Sample

Download Fla Sample