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 = 12; public var video:Array = [ "../assets/clips/tube/balloon.flv", "../assets/clips/tube/web20.flv", "../assets/clips/tube/about-content.flv", "../assets/clips/tube/china/calligraphy.flv", "../assets/clips/tube/hello-world.flv", "../assets/clips/blip/rgbxyz.flv", "../assets/clips/shout/strangest.flv", "../assets/clips/tube/design-coding.flv", //"../assets/clips/tube/baby-laugh.flv", "../assets/clips/tube/america.flv", "../assets/clips/tube/bowie-tibet.flv", "../assets/clips/tube/strings.flv", //"../assets/clips/tube/muto-wall.flv", //"../assets/clips/tube/starwars-struggle.flv", "../assets/clips/tube/climafutura.flv" //"../assets/im/08/clip/roundup.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 new_size_influence:Number = 0.5; private var mid_point_push:Number = .75; private var max_line_width:Number = (Math.random() * 10) + 10; //private var info.visible:Boolean = false; private var curves:Array; private var start_x:Number; private var start_y:Number; private var mid_x:Number; private var mid_y:Number; private var end_x:Number; private var end_y:Number; private var distance:Number; private var new_size:Number; private var parity:Boolean; private var size:Number = 0; private var splat:uint = 0xFF0000; private var aggression:Number = 8.4; // 12.4;//3.4; private var painting:Sprite; private var dopaint:int = 0; private function init() : void { avx = new Array(); avy = new Array(); arz = new Array(); myVid.source = 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; painting = new Sprite(); painting.blendMode = BlendMode.NORMAL; myVid.addChild(painting); start_x = mid_x = end_x = 250; //stage.stageWidth / 2; start_y = mid_y = end_y = 250; //stage.stageHeight / 2; //addEventListener(Event.ENTER_FRAME, paint); //addEventListener(MouseEvent.CLICK, change_color); 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 = 1; private var has_ball:uint = 0; [Bindable] private var _art:Object = "0"; private var blending:int = 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") { blending++; //painting.alpha = 1.0; //if (blending == 0) painting.alpha = 0.2; if (blending == 1) painting.blendMode = BlendMode.OVERLAY; else if (blending == 2) painting.blendMode = BlendMode.HARDLIGHT; else if (blending == 3) painting.blendMode = BlendMode.NORMAL; //blending++; if (blending >= 3) blending = 0; //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 function draw() : 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 var togsplat:int = 0; private function change_color(event:MouseEvent):void{ var h:Number = systemManager.stage.height; var w:Number = systemManager.stage.width; if (mouseY < h-50 && mouseY > 50 && mouseX < w-50 && mouseX > 50) { //color = Math.random() * 0xFFFFFF; //txt.text = "Color: 0x" + color.toString(); //if (togsplat == 1) { toggle_painting(); //} } } private function start_painting():void{ dopaint = 1; addEventListener(Event.ENTER_FRAME, paint); } private function stop_painting():void{ dopaint = 0; removeEventListener(Event.ENTER_FRAME, paint); } private function toggle_painting():void{ if (dopaint == 0) start_painting(); else stop_painting(); } public function paint(event:Event):void { //counter++; //txt.text = counter.toString(); //if (with_wii == 0) { //vpX = mouseX; //vpY = mouseY; //} splat = Math.random() * 0xFFFFFF; //AE //graphics.lineTo(mouseX, mouseY); /** * * The code for the paint function was ported and adapted from: * "Splatter", by Stamen Design * http://stamen.com/projects/splatter * **/ mid_x = ((end_x - start_x) * (1 + mid_point_push)) + start_x; mid_y = ((end_y - start_y) * (1 + mid_point_push)) + start_y; start_x = end_x; start_y = end_y; //end_x = vpX;// = mouseX; //end_y = vpY;// = mouseY; end_x = mouseX; end_y = mouseY; distance = Math.sqrt(Math.pow((end_x - start_x), 2) + Math.pow((end_y - start_y), 2)); new_size = max_line_width / distance; size = aggression*new_size;//(new_size_influence * new_size) + ((1 - new_size_influence) * size); splatter(painting.graphics, start_x, start_y, end_x, end_y, mid_x, mid_y, size); parity = false; /* _parent.new_size_influence += ((Math.random() * 0.1) - 0.05); _parent.mid_point_push += ((Math.random() * 0.1) - 0.05); _parent.max_line_width += ((Math.random() * 4) - 2); */ new_size_influence += ((Math.random() * 0.1) - 0.05); mid_point_push += ((Math.random() * 0.1) - 0.05); max_line_width += ((Math.random() * 4) - 2); } private function splatter(obj:Graphics, x1:Number, y1:Number, x2:Number, y2:Number, x3:Number, y3:Number, d:Number):void { //var obj:Graphics = painting.graphics; obj.lineStyle(d, splat, 100); //txt.text = d.toString(); obj.moveTo(x1, y1); obj.curveTo(x3, y3, x2, y2); //curves.push([x1, y1, x3, y3, x2, y2, d]); // splotch var dd:Number = Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2)); for (var i:uint = 0; i 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 { 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 { 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; removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); removeEventListener(Event.ENTER_FRAME, frame); addEventListener(MouseEvent.CLICK, change_color); //addEventListener(Event.ENTER_FRAME, paint); } else { peep = 0; myVid.addChild(slist); myVid.mask = slist; removeEventListener(MouseEvent.CLICK, change_color); //removeEventListener(Event.ENTER_FRAME, paint); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 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}