 		 * into the dynamic texture. Default value is 'null'.
 		 * 
 		 */
-		public function DynamicTextureController(source					: DisplayObject,
-												 width					: Number,
-												 height					: Number,
+		public function DynamicTextureController(source					: Object,
 												 mipMapping				: Boolean	= true,
 												 framerate				: Number	= 30.,
 												 propertyName			: String	= 'diffuseMap',

		/**
		 * Create a new DynamicTextureController.
		 * 
		 * @param source The source DisplayObject to use as a dynamic texture.
		 * @param width The width of the dynamic texture.
		 * @param height The height of the dynamic texture.
		 * @param mipMapping Whether mip-mapping should be enabled or not. Default value is 'true'.
		 * @param framerate The frame rate of the dynamic texture. Default value is '30'.
		 * @param propertyName The name of the bindings property that should be set with the

			{
				_lastDraw = time;
				
				if (_source is DisplayObject)
				    updateFromDisplayObject();
				else
					updateFromBitmapData();
			}
		}

		private function updateFromDisplayObject() : void
		{
			var sourceDisplayObject : DisplayObject = _source as DisplayObject;

			refreshTempBitmapData();

			_tmpBitmapData.draw(sourceDisplayObject, _matrix);
			_texture.setContentFromBitmapData(_tmpBitmapData, _mipMapping);
		}

		private function updateFromBitmapData() : void
		{
			if (_matrix)
			{
				refreshTempBitmapData();

				_tmpBitmapData.draw(_source as BitmapData, _matrix);
				_texture.setContentFromBitmapData(_tmpBitmapData, _mipMapping);
			}

			_texture.setContentFromBitmapData(_source as BitmapData, _mipMapping);
		}

		private function refreshTempBitmapData() : void
		{
			if (!_tmpBitmapData)
				_tmpBitmapData = new BitmapData(_source.width, _source.height);
			else if (_forceBitmapDataClear)
				_tmpBitmapData.fillRect(
					new Rectangle(0, 0, _tmpBitmapData.width, _tmpBitmapData.height),
					0
				);
		}
	}
}