Пример ричмедиа банера. Если его не видно, то он в левом, верхнем углу (если что).

Рич медиа банер вставляется в html страницу в отдельный div с параметром 'wmode="transparent"'. И хоть меня прикалует печатать, но повторно впечатывать не люблю, мне просто не интересно, поэтому, на всякий случай сделаю яваскрипт файл (вдруг, мне захочется еще раз банер кому нибуть всунуть), который эту ф-ню добьет сам. Вот так отдельный файл с таким кодом, я его назвал swf-insert.js
function swfInsert(nameFileSwf,idFl,myX,myY)
{
	//nameFileSwf = "http://www.murmadillo.tut.su/js/8test.swf?my="+nameFileSwf;
	document.write(''+
	'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '+
	'id="id_flash_1" width="'+myX+'" height="'+myY+'" '+
	'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'+
	'<param name="'+idFl+'" value="'+
	nameFileSwf+
	'" />'+
	'<param name="quality" value="high" />'+
	//'<param name="bgcolor" value="#869ca7" />'+
	'<param name="allowScriptAccess" value="always" />'+
	'<param name="wmode" value="transparent">'+
	'<embed src="'+
	nameFileSwf+'"'+
	'quality="high" bgcolor="#FFFFFF" '+
	'width="'+myX+'" height="'+myY+'" name="'+idFl+'" align="middle" '+
	'play="true" loop="false" quality="high" allowScriptAccess="always" '+
	'type="application/x-shockwave-flash" '+
	'wmode="transparent" '+
	'pluginspage="http://www.macromedia.com/go/getflashplayer"> '+
	'</embed>'+
	'</object>'
);
}

Чем грозит режим transparent?: возможно иногда флешку не будет видно в браузерах мозила, опера, фаирфокс, можно сюда смело вписать хром, сафари и пр., (не будут вводится во флешке русские буквы, флешка может иногда мигать, флешка может стать не прозрачной, не будет работать экстернал интерфейс, глюки могут быть любые), зато будет хорошо работать в интернет эксплоере (только в нем будет fps заниженный). Див делаем с абсолютным позиционированием и тоже с прозрачностью так: в head добавляем наш файл
<script type="text/javascript" src="swf-insert.js"></script>

Теперь в body в любое место страницы, ведь див с абсолютным позиционированием
<! АБСОЛЮТНОЕ ПОЗИЦИОНИРОВАНИЕ>
<div id="my_menu_drag" style="position:absolute;top:0;left:0;  background:0; scroll: false;"> 

<!Флешка>
<script type="text/javascript" >swfInsert("trans.swf","movie","550","80");</script>
<!конец Флешка>

</div>
<!КОНЕЦ АБСОЛЮТНОЕ ПОЗИЦИОНИРОВАНИЕ>

Теперь, на зло банимекерам (их бедолаг, заставляют кодить под восьмой плеер, потому-что видители у некоторых бабушек и дедушек на компе установлен 8 плугин и они еще религиозные и им религия не позволяет обновить плуги, а кому позволяет, те не умеют), да ну их нафик, сделаем банер под 10. Итак чего бы такого придумать, ну что-бы 3Д было, епсель мопсель, ниче в голову не идет, пипец 3Д, а идей нету, ладно дефолт, вращающаяся карта, на заднике рекламка, впереди товар с тузом, не знаете как определить где задник, а где перед, ну вы блин даете... Уж я то в 3Д не шарю и то разобрался. Пишите демку, со спрайтом, спрайту ставите на смену кадра rotationY++ и смотрите как изменилась матрица трансформирования и трассируете rawData матрицы, это ее коэффицинты, в столбик по 4 рядка, ну хоть так:
var matC:Vector.<Number> = rSp.transform.matrix3D.rawData;
trace(matC);
trace();

Чувствуете, что у вас есть мозг, обычно люди его не замечают, думать много вредно и нецелесообразно, берем рядок в котором меняются числа.
0.9998477101325989, 0, -0.017452405765652657, 0, ---0123
0,1,0,0,                                         ---2456
0.017452405765652657,0,0.9998477101325989,0,     ---789a
400,100,0,1                                      ---bcde

Методом дотыка, метод тыка морально устарел, в общем на спрайте rSp лежат еще два спрайта, один из спрайтов sp, крутим rSp rotationY и меняем шилды задника и передка так
	var matC:Vector.<Number> = rSp.transform.matrix3D.rawData;
	n.x = matC[2];
	n.y = matC[1];//0
	n.z = matC[0];//0
	//n.normalize();
	var dot : Number = n.dotProduct(Vector3D.Z_AXIS/*camera.position*/);// +_partitionPlane.d;
	if (dot>0) rSp.setChildIndex(sp, 1); else 
	rSp.setChildIndex(sp, 0);

В общем dotProduct это во всем 3Д мире программирования умножение векторов, но компания Адобе умнее всех и унее это:
dotProduct(a:Vector3D):Number
Если текущий объект Vector3D и объект, заданный в качестве параметра, являются единичными вершинами, данный метод возвращает косинус угла между двумя вершинами.

Но тк. я ж говорю, что не шарю, мне как-то пофигу, чего оно там делает, абы работало.
Вот такая прикольная флешка получилась: Размер картинок 300х430.
package  
{
	import flash.display.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import flash.geom.*;
	

	import flash.net.*;

	
	import lex.*;
	/**
	 * ...
	 * @author Alex Lexcuk http://www.murmadillo.tut.su
	 */
	public class DocDotProduct extends Sprite
	{
		[Embed(source = 'cart.jpg')]
		private var Pic:Class,
			bmd:BitmapData,
			bm:Bitmap;
		
		[Embed(source = 'cart-1.jpg')]
		private var Pic1:Class;
		
		private var worldSp:Sprite;

		private var rSp:Sprite = new Sprite();;

		private var worldPos:Vector3D = new Vector3D( -140, -280, 1000);
		private var worldPosFin:Vector3D = new Vector3D( 205, 20, 0);
		private var wAnim:Number = 0;
		private var wTr:Boolean = false;
		private var eFrTr:Boolean = false;
		private var outTr:Boolean = false;
		public function DocDotProduct() 
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;

			addChild(worldSp = new Sprite());
			//worldSp.transform.matrix3D = mat3D.clone();
			worldSp.transform.perspectiveProjection = new PerspectiveProjection();
			worldSp.x = 205;
			worldSp.y = 20;
			worldSp.graphics.beginFill(0, 0);
			worldSp.graphics.drawRect(-180, 0, 350, 480);
			
			worldSp.transform.perspectiveProjection.fieldOfView = 30;

			worldSp.z = worldPos.z;
			worldSp.x = worldPos.x;
			worldSp.y = worldPos.y;
			worldSp.buttonMode = true;
			
			worldSp.addEventListener(MouseEvent.MOUSE_OVER, worldSpMouseOverHandler);
			worldSp.addEventListener(MouseEvent.MOUSE_OUT, worldSpMouseOutHandler);
			worldSp.addEventListener(MouseEvent.CLICK, worldSpClickHandler);
			
			worldSp.addChild(rSp);
			
			var card:Sprite;
			rSp.addChild(card = createCard());
			card.z = 0;
			card.x = - card.width / 2;
			card.name = 'card0';
			
			rSp.addChild(card = createCard(true));
			card.z = 0;
			card.x = - card.width / 2;
			card.name = 'card1';
			
			rSp.x = 0;
			rSp.y = 30;
			
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}

		private function worldSpClickHandler(evt:MouseEvent):void {
			try {
				navigateToURL(new URLRequest('http://www.kongregate.com/games/Lexcuk/rat-rods-ralli'),"_self");
					}catch (e:Error) 
					{trace(e);}
		}

		private function worldSpMouseOverHandler(evt:MouseEvent):void {
			if (wAnim < 0.1 || wAnim > 0.9) {
				wTr = true;
				outTr = false;
			}
		}

		private function worldSpMouseOutHandler(evt:MouseEvent):void {
			if (wAnim < 0.1 || wAnim > 0.9) {
				outTr = true;
				wTr = false;
			}
			if (eFrTr == false) addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}

		private function createCard(_ind:Boolean = false):Sprite {
			var sp:Sprite = new Sprite();
			var bm:Bitmap = new Bitmap(new Pic().bitmapData);
			if (_ind == true) {
				bm = new Bitmap(new Pic1().bitmapData);
				bm.scaleX = -1;
				bm.x = bm.width;
			}
			
			sp.addChild(bm);
			return sp;
		}

		private function enterFrameHandler(evt:Event):void {
			eFrTr = true;
			rSp.rotationY += 4;
			if (rSp.rotationY > 360) rSp.rotationY = 0;
			var sp:Sprite = rSp.getChildByName('card0') as Sprite;
			
			var n:Vector3D = new Vector3D();
			var matC:Vector.<Number> = rSp.transform.matrix3D.rawData;
			n.x = matC[2];
			n.y = matC[1];
			n.z = matC[0];
			
			var dot : Number = n.dotProduct(new Vector3D(0.3,0,1));
			if (dot<=0) rSp.setChildIndex(sp, 0); else 
			rSp.setChildIndex(sp, 1);
			
			if (wTr) { if (wAnim < 1) 
				wAnim += 0.03;
				worldSp.z = worldPos.z - worldPos.z * wAnim +worldPosFin.z * wAnim;
				worldSp.x =  worldPos.x - worldPos.x*wAnim+worldPosFin.x * wAnim;
				worldSp.y =  worldPos.y - worldPos.y * wAnim + worldPosFin.y * wAnim;
				if (Math.abs(rSp.rotationY % 180) < 10&&wAnim>1) {
					rSp.rotationY = int(rSp.rotationY);
					eFrTr = false;
					removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
				}
			}
			
			if (outTr) { if (wAnim >0 ) 
				wAnim -= 0.03;
				worldSp.z = worldPos.z - worldPos.z * wAnim +worldPosFin.z * wAnim;
				worldSp.x =  worldPos.x - worldPos.x*wAnim+worldPosFin.x * wAnim;
				worldSp.y =  worldPos.y - worldPos.y * wAnim + worldPosFin.y * wAnim;
				if (wAnim<0) {
					outTr = false;
				}
			}
		}


	}

}