package { import flash.display.*; import flash.events.*; import flash.media.*; [SWF(width = "450", height = "300", frameRate = "60", backgroundColor = "#000000")] public class Main extends Sprite { static private const VIDEO_WIDTH :int = 320; static private const VIDEO_HEIGHT :int = 240; static private const DECLARATION :Number = .025; private var wrap :Sprite; private var video :Video; public function Main():void { // ステージの設定 stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; // コンテナーの作成 wrap = new Sprite(); addChild(wrap); // ウェブカメラの作成 var webCamera:Camera = Camera.getCamera(); video = new Video(VIDEO_WIDTH, VIDEO_HEIGHT); video.x = - VIDEO_WIDTH / 2; video.y = - VIDEO_HEIGHT / 2; video.attachCamera(webCamera); wrap.addChild(video); // 毎フレームのレンダリング this.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(event:Event):void { // マウス位置に応じて回転 wrap.rotationX += (mouseY/stage.stageHeight * 720 - wrap.rotationX) * DECLARATION; wrap.rotationY += (mouseX/stage.stageWidth * 720 - wrap.rotationY) * DECLARATION; // ステージサイズに応じて中央に移動 // (ホントはresizeイベントで拾うのですが、ラクしました。。) wrap.x = stage.stageWidth / 2; wrap.y = stage.stageHeight / 2; } } }