Tuio Kinect with Rippler

Tuio是一個十分好的一個工具,有很多方法可以與它溝通,之前試用以iOS, Android 方式輸入gesture,今次便玩玩Kinect吧!

Estee Lauder - Cyber White 2011

我對這 Project 可說是又愛又恨...

Flash Scrollbar v1



import gs.TweenMax;

var displayAreaWidth: int = 700;
var displayAreaHeight: int = 400;

var ui:MovieClip = ui;
var maskMc:MovieClip = ui.maskMc;
var contentMc:MovieClip = ui.contentMc;
var tracker:MovieClip = ui.scrollbarMc.scrollTrackerMc;
var track:MovieClip = ui.scrollbarMc.scrollTrackMc;
var scrollbarMc:MovieClip = ui.scrollbarMc;
var contentBg:MovieClip = ui.contentBg;

track.height = displayAreaHeight;
contentBg.width = displayAreaWidth;
contentBg.height = displayAreaHeight;
maskMc.x = maskMc.y =0;
maskMc.width = displayAreaWidth;
maskMc.height = displayAreaHeight;
scrollbarMc.x = displayAreaWidth;
scrollbarMc.y = 0;
scrollbarMc.width = 15;

var rect:Rectangle = new Rectangle(track.x,track.y,track.x,track.height - tracker.height);
var speed:Number = 20;
var rate:Number =( contentMc.height - maskMc.height) / (track.height - tracker.height);

if(contentMc.height > displayAreaHeight ) init();
else maskMc.visible = false, scrollbarMc.visible = false;

function init ():void
{
tracker.buttonMode = true;
contentMc.mask = maskMc;

tracker.addEventListener (MouseEvent.MOUSE_DOWN,onMouseDownTracker);
stage.addEventListener (MouseEvent.MOUSE_UP,onMouseUpTracker);
track.addEventListener ( MouseEvent.MOUSE_DOWN,onMouseDownTrack);
contentMc.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheelHandle);
}

function moveContent (e:Event):void
{
TweenMax.to (contentMc, 1 ,{y:tracker.y * -rate});
}

function onMouseDownTracker (e:MouseEvent):void
{
e.target.startDrag (false,rect);
stage.addEventListener (Event.ENTER_FRAME,moveContent);
}

function onMouseUpTracker (e:MouseEvent):void
{
stopDrag ();
stage.removeEventListener (Event.ENTER_FRAME,moveContent);
}

function onMouseDownTrack (e:MouseEvent):void
{
var dy:Number = mouseY - ui.y - tracker.height;
if (dy > rect.height - tracker.height) dy = rect.height;
if (dy < tracker.height ) dy = rect.y;
//trace([dy, rect.height]);
TweenMax.to (tracker,1,{y:dy});
TweenMax.to (contentMc, 1 ,{y:dy * -rate});
}

function onMouseWheelHandle (e:MouseEvent):void
{
var upDown :int = Math.abs(e.delta)/e.delta;
var step = speed * upDown;
if(tracker.y > rect.height + step) tracker.y = rect.height + step;
else if (tracker.y < step ) tracker.y = step;
tracker.y -=step;
TweenMax.to (contentMc, 1 ,{y:tracker.y * -rate});
}

ThrowBall



package
{
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.events.MouseEvent;
import flash.events.Event;

public class ThrowBall extends Sprite
{
private var radius : int = 15;
private var rect : Rectangle = new Rectangle(0+radius, 0+radius, 800-radius, 500-radius);
private var ball : Sprite;
private var currentX:Number;
private var currentY:Number;
private var lastX:Number;
private var lastY:Number;
private var drag :Boolean = false;
private var vx : Number = 0;
private var vy : Number = 0;
private var tempWall : Sprite;

public function ThrowBall()
{
createBall();
createWall();
stage.addEventListener(Event.ENTER_FRAME, onenterframe);
stage.addEventListener(MouseEvent.MOUSE_UP, onmouseup);
}
private function createBall() :void {
ball = new Sprite();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, radius);
ball.graphics.endFill();
ball.buttonMode = true;
ball.x = rect.width / 2 + radius/2;
ball.y = rect.height / 2 + radius/2;
ball.addEventListener(MouseEvent.MOUSE_DOWN, onmousedown);
addChild(ball);
}
private function onmousedown (e:MouseEvent):void {
ball.startDrag(false, rect);
drag = true;
}
private function onmouseup(e:MouseEvent):void {
ball.stopDrag();
drag = false;
}
private function onenterframe(e:Event):void {
if (drag) {
lastX = currentX;
lastY = currentY;
currentX = mouseX;
currentY = mouseY;
vx = currentX - lastX;
vy = currentY - lastY;
}
else {
ball.x += vx;
ball.y += vy;
}
if (ball.x <= rect.x+radius)
{
ball.x = rect.x+radius;
vx *= -1;
}
else if (ball.x >= rect.width-radius)
{
ball.x = rect.width-radius;
vx *= -1;
}
else if (ball.y >= rect.height-radius)
{
ball.y = rect.height - radius;
vy *= -1;
}
else if (ball.y <=rect.y+radius)
{
ball.y = rect.y+radius;
vy *= -1;
}
vx *= 0.95;
vy *= 0.95;
}
private function createWall():void {
for (var i = 0; i < 2; i++)
{
var wall :Sprite = new Sprite ();
wall.graphics.beginFill(0xFF0000);
wall.graphics.drawRect(0, 0, 800, radius);
wall.graphics.endFill();
if ( i == 1 ) wall.y = 500 - radius;
addChild(wall);
}
for (var j = 0; j < 2; j++)
{
var sideWall :Sprite = new Sprite();
sideWall.graphics.beginFill(0xFF0000);
sideWall.graphics.drawRect(0, 0, radius, 500);
sideWall.graphics.endFill();
if ( j == 1 ) sideWall.x = 800 - radius;
addChild(sideWall);
}
}
}
}

TimeEvent with drawRect



import gs.TweenMax;
var col:int = 32;
var i:int = 0;
var total:uint=50;
var time:Timer = new Timer(100);
time.addEventListener(TimerEvent.TIMER,createBox);
time.start();

function createBox(e:TimerEvent) {
var mc:Sprite= new Sprite();
var color:Number = Math.random()*0xFFFFFF;
var size :int= 20;
with (mc) {
graphics.beginFill(color);
graphics.lineStyle(0, 0xFFFFFF);
graphics.drawRect(0, 0, size, size);
graphics.endFill();
x = 0;
y = 0;
rotation=-270;
}
addChild(mc);
var dx:int=(i%col)*25;
var dy:int=((i-i%col)/col)*25;
TweenMax.to(mc,1,{x:dx,y:dy,rotation:0});
if (dy>=500) {
time.stop();
removeEventListener(TimerEvent.TIMER,createBox);
} else {
i++;
}
}

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More