bounce [Bindable] private var radius:uint = 100; [Bindable] private var ball:Sprite = new Sprite(); [Bindable] private var square:Sprite = new Sprite(); [Bindable] private var slist:Sprite = new Sprite(); [Bindable] private var vx:Number; [Bindable] private var vy:Number; [Bindable] private var bounce:Number = -1.0; //-0.9; [Bindable] private var gravity:Number = 0; //-0.001; private var oval:object_ax_oval; private var cloud:object_ax_cloud; private var obounce:object_ax_bounce; private var oldX:Number; private var oldY:Number; private var sprites:Array; private var smax:uint = 1; private var avx:Array; private var avy:Array; private var arz:Array; [Bindable] private var index:int = 0; private var max:uint = 3; public var video:Array = [ "../assets/clips/tube/balloon.flv", "../assets/im/09/clip/00.flv", "../assets/clips/tube/123-color.flv" ]; [Bindable] public var source:String = video[index]; private function plus( event:MouseEvent ):void { clear(myVid); state = 0; off = 0; index += 1; if (index > (max-1)) index = 0; myVid.stop(); movie = video[index]; // bindable myVid.play(); } private function minus( event:MouseEvent ):void { clear(myVid); state = 0; off = 0; index = index - 1; if (index < 0) index = max-1; myVid.stop(); movie = video[index]; // bindable myVid.play(); } private var startmode:uint = 0; private var start_text:String = "click to start"; private function init() : void { avx = new Array(); avy = new Array(); arz = new Array(); story.text = start_text; sub.text = movie; myVid.source = movie; //"../assets/im/dichterbijkijken_wegrennen.flv"; // movie; off = 1; var h:Number = systemManager.stage.stageHeight; var w:Number = systemManager.stage.stageWidth; ball.graphics.beginFill(0xff0000); ball.graphics.drawCircle(0, 0, radius); ball.x = 200; ball.y = 200; //avx.push(Math.random() * 30 - 5); //avy.push(-20); //slist.addChild(ball); sprites = new Array(); //sprites.push(ball); oval = new object_ax_oval(); //slist.addChild(bill); // var bx:Sprite = new animation_ch03_Oval(); // var bx:Sprite = new animation_ch11_Billiard3(); cloud = new object_ax_cloud(myVid); obounce = new object_ax_bounce(myVid); //slist.addChild(obounce); //slist.addChild(oval); sprites.push(oval); myVid.addChild(slist); //myVid.mask = slist; addEventListener(Event.ENTER_FRAME, frame); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } import flash.media.Camera; private var camera:Camera; // = Camera.getCamera(); private function attach(v:Object) : void { camera = Camera.getCamera(); myVid.attachCamera(camera); } [Bindable] private var _mode:Object = "0"; private var has_cloud:uint = 0; private var has_oval:uint = 0; private var has_collide:uint = 0; private var has_bounce:uint = 0; private var has_ball:uint = 0; [Bindable] private var _art:Object = "0"; private function art(event:Event):void { _art = event.target.text; //story.text = "art: " + event.target.text; if (_art == "O") { } else if (_art == "A") { glow(); } else if (_art == "R") { color(); } else if (_art == "T") { stop(); } else { } } private function mode(event:Event):void { _mode = event.target.text; //story.text = "mode: " + event.target.text; if (_mode == "1") { } else if (_mode == "3") { stop(); } else if (_mode == "4") { color(); } else if (_mode == "5") { glow(); } else if (_mode == "6") { if (has_collide == 1) { has_collide = 0; } else { has_collide = 1; } } else if (_mode == "7") { if (has_bounce == 1) { slist.removeChild(obounce); has_bounce = 0; } else { has_bounce = 1; slist.addChild(obounce); } } else if (_mode == "8") { if (has_oval == 1) { slist.removeChild(oval); has_oval = 0; } else { has_oval = 1; slist.addChild(oval); } } else if (_mode == "9") { if (has_cloud == 1) { slist.removeChild(cloud); has_cloud = 0; } else { has_cloud = 1; slist.addChild(cloud); } } else { _mode="0"; } } private function stop() : void { myVid.filters = []; } private var conv:uint = 0; private function glow() : void { //myVid.filters = [new GlowFilter(0xff1122)]; var matrix:Array = [ 0,1,0, 1,5,1, 0,1,0 ]; switch (conv) { case 0: matrix = [ 0,0,0, 0,2,0, 0,0,0 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; break; case 1: matrix = [ -1,-1,-1, -1,8,-1, -1,-1,-1 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; break; case 2: matrix = [ -1,-1,-1, -1,5,-1, 1,-1,1 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; break; case 3: matrix = [ 1,1,1, 1,8,1, 1,1,1 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; break; case 4: matrix = [ -1,-1,-1, -1,4,0, 0,0,0 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; break; case 5: matrix = [ 0,0,0, 1,5,-1, -1,-1,-1 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; break; default: matrix = [ -2,-1,0, -1,4,1, 0,1,2 ]; myVid.filters = [new ConvolutionFilter(3,3,matrix)]; conv = 0; break; } conv += 1; } private var on:uint = 0; private function color() : void { var red:Number = Math.random() * 255; var green:Number = Math.random() * 255; var blue:Number = Math.random() * 255; if (on == 0) { on = 1; myVid.transform.colorTransform = new ColorTransform(-1, -1, -1, 1, red, green, blue, 0); } else { on = 0; myVid.transform.colorTransform = new ColorTransform(); } } private function frame(event:Event):void { var h:Number = systemManager.stage.height; var w:Number = systemManager.stage.width; for(var i:uint = 0; i < smax; i++) { vx = avx[i]; vy = avy[i]; var dx:Number = 0; //Math.random() * 2 - 1; var dy:Number = 0; //Math.random() * 2 - 1 ; vx += dx; vy += dy + gravity; var s:Number = w/800; var left:Number = 0; var right:Number = myVid.width; var top:Number = 0; var bottom:Number = myVid.height; oval.centerX = right/2; oval.centerY = bottom/2; oval.radiusX = right/3; oval.radiusY = bottom/4; oval.adjust(s); //cloud.x = right / 2; //cloud.centerX = right/2; //cloud.centerY = bottom/2; //cloud.radiusX = right/3; //cloud.radiusY = bottom/4; //cloud.size = s; // for(var i:uint = 0; i < 2; i++) { var ball:Sprite = sprites[i]; var bounds:Rectangle = ball.getBounds(myVid); ball.x += vx; ball.y += vy; var cx:Number = bounds.x + bounds.width/2; var cy:Number = bounds.y + bounds.height/2; if (has_collide == 1) { for(var j:uint = i; j < smax; j++) { var other:Rectangle = sprites[j].getBounds(myVid); var ocx:Number = other.x + other.width/2; var ocy:Number = other.y + other.height/2; if (((bounds.right > other.left && cx < other.left) && ((bounds.bottom > other.top && cy < other.top) || (bounds.top < other.bottom && cy > other.bottom)) ) || ((bounds.left < other.right && cx > other.right) && ((bounds.bottom > other.top && cy < other.top) || (bounds.top < other.bottom && cy > other.bottom))) ) { var ddx:Number = cx - ocx; var ddy:Number = cy - ocy; if (ddx*ddx < ddy*ddy) { vx *= bounce; avx[j] *= bounce; ball.x += 3 * vx; } else { vy *= bounce; avy[j] *= bounce; ball.y += 3 * vy; } } } } if((bounds.right > right) || (bounds.left < left)) { vx *= bounce; ball.x += 5 * vx; } if((bounds.bottom > bottom) || (bounds.top < top)) { vy *= bounce; ball.y += 5 * vy; } avx[i] = vx; avy[i] = vy; } } private var drawing:uint = 0; private function onMouseDown(event:MouseEvent):void { if (startmode == 0) { story.text = ""; sub.text = ""; myVid.play(); startmode = 1; } else { var h:Number = systemManager.stage.height; var w:Number = systemManager.stage.width; if (mouseY < h-50 && mouseY > 50 && mouseX < w-50 && mouseX > 50) { drawing = 1; // myVid.mask = null; // story.text = "m:" + mouseX + " " + mouseY; oldX = mouseX; oldY = mouseY; ball = new Sprite(); myVid.addChild(ball); //panel.addChild(ball); square = new Sprite(); slist.addChild(square); ball.graphics.moveTo(mouseX, mouseY); ball.graphics.lineStyle(4,0xff0000); //ball.graphics.beginFill(0xff0000); square.graphics.moveTo(mouseX, mouseY); square.graphics.beginFill(0xff0000); addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); addEventListener(MouseEvent.MOUSE_UP, onMouseUp); //story.text = "m:" + mouseX + " " + mouseY; } } } private function onMouseUp(event:MouseEvent):void { if (startmode == 0) { startmode = 1; } else { smax += 1; story.text = ""; square.graphics.endFill(); slist.addChild(square); myVid.removeChild(ball); avx.push(Math.random() * 20 - 5); avy.push(-5); arz.push(Math.random() * 0.2 - 0.1); sprites.push(square); myVid.mask = slist; removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); var bounds:Rectangle = square.getBounds(myVid); // story.text = "s: " + square.x + "/" + square.y + "(" + bounds.left + "," + bounds.top + "," + bounds.width + "," + bounds.height + ")"; } } private function onMouseMove(event:MouseEvent):void { if (drawing == 1) { square.graphics.lineTo(mouseX, mouseY); ball.graphics.lineTo(mouseX, mouseY); // square.graphics.drawCircle(mouseX, mouseY, 10); // story.text = "m:" + mouseX + " " + mouseY; } else { story.text = "???"; } } private var peep:uint = 0; private function hide(video:Object):void { if (peep == 0) { myVid.removeChild(slist); myVid.mask = null; peep = 1; } else { peep = 0; myVid.addChild(slist); myVid.mask = slist; addEventListener(Event.ENTER_FRAME, frame); } } [Bindable] private var cuepoints:Array = [ {name:'cue 0', time:1.00}, {name:'cue 1', time:2.00}, {name:'cue 2', time:3.00}, {name:'cue 3', time:4.00}, ]; [Bindable] private var info:String = "cue -"; [Bindable] private var show:uint = 0; private function clear(video:Object):void { // stop(); story.text = ""; sub.text = ""; if (show == 0) { show = 1; tileList.visible = false; arrColl.removeAll(); tileList.invalidateList(); } else { show = 0; tileList.visible = true; } } private function select(event:Event):void { myVid.close(); tileList.visible = false; arrColl.removeAll(); tileList.invalidateList(); tileList.visible = true; show = 0; // movie = input.text; myVid.source = movie; myVid.cuePoints = cuepoints; story.text = movie; myVid.play(); off = 0; state = 0; } private function cue(evt:Object):void { if (show == 1) { show = 0; tileList.visible = true; } var pad:String = " "; var bm:Bitmap = copy(myVid as DisplayObject); var time:String = format(myVid.playheadTime); if (state < 3) info = cuepoints[state].name; if (state == 0) { story.text = "click ! to annotate ..."; } else if (state == 1) { story.text = "creative technolog "; } else if (state == 2) { story.text = "new media "; } else { off = 1; story.text = ""; info="cue " + state; } arrColl.addItem({pad:pad, bitmap:bm, info:info, time:time}); state += 1; if (off == 1) story.text = ""; } private function copy(source:DisplayObject):Bitmap { var bmd:BitmapData = new BitmapData(source.width, source.height); bmd.draw(source); return new Bitmap(bmd); } private function format(value:Number):String{ var sec:int = (value * 60) / 60; var mil:int = (value - sec) * 100; var result:String = sec.toString() + "." + mil.toString(); return result; } ]]> <br;\ > name: {data.info} time: {data.time}