Example #1
0
File: shot.js Project: NHQ/uxer
module.exports = function(el, gate, cb){

  if(typeof gate === 'function'){
    cb = gate
    gate = false
  }

  gate = gate || false

  touch.start(el);

  el.addEventListener('touchdown', Switch);
  el.addEventListener('liftoff', Switch);

  function Switch(e){

    gate = !gate

    if(cb) cb(gate)

    else{
      var evt = new CustomEvent('switch', {bubbles: true, cancelable: true, detail : gate });

      this.dispatchEvent(evt);
    }
  };

  return el

}
Example #2
0
File: xygrid.js Project: NHQ/uxer
module.exports = function(el, cb, point){

  cb = cb || function(){}

  var w = parseFloat(el.style.width)
  var h = parseFloat(el.style.height)
  var pos = findPos(el)
  var center = [pos[0] + w / 2, pos[1] + h / 2]
  var r = w  / h
  var last = []

  touchdown.start(el)
 
  el.addEventListener('touchdown', handler) 
  el.addEventListener('deltavector', handler) 
  el.addEventListener('liftoff', handlerOff) 

  function handlerOff(evt){
    cb(xy(evt), [evt.detail.offsetX, evt.detail.offsetY], true)
  }

  function handler(evt){
    cb(xy(evt), [evt.detail.offsetX, evt.detail.offsetY], false)
  }

  function xy(evt){
    if(!(evt.detail.target == el)) return last
    last = [evt.detail.offsetX / w, (h - evt.detail.offsetY) / h]
    return last 
  }

  //if(point) cb(point, [point[0] * w, (h - point[1]) * h])

  return el

}
Example #3
0
File: spin.js Project: NHQ/uxer
module.exports = function(el){

    el.touchdown = [];

    var clockswise = [];
    var quadrants = [];
    var points = [];
    var w = parseInt(getCSS(el, 'width'));
    var h = w// parseInt(el, 'height');	

    var p = findPos(el)
    ,   SWITCH = false
    ,   LEFT = false, TOP = false
    ,   clockwise = undefined
    ,   quad = undefined
    ,   degree = 0
    ,   pad = 25
    ,   lastPoint = [];
    ;

    el.center = [p[0] + (w/2), p[1] + (h/2)]
console.log(el.center)
    el.zero = [el.center[0] + w / 2, el.center[1]]
    el._b = el.center[1] - ( h / 2 ) ;
    events.start(el);

    el.addEventListener('touchdown', touchdown)
    el.addEventListener('deltavector', vectorChange)
    el.addEventListener('liftoff', vectorChange)

    function touchdown(e){
	var event = e.detail;
	var el = this;

	var point = [e.detail.x, e.detail.y]
        lastPoint = point.slice(0);
	var a = distance(el.zero, point);
	var b = distance(el.zero, el.center);
	var c = distance(point, el.center);
	var angle = 360 - getAngle(a,b,c);
        el.lastAngle = angle;
	el.touchdown = [e.detail.x, e.detail.y];
	var evt = new CustomEvent('spinstart', { cancelable: true, bubbles: true, detail : event});
	evt.dxcenter = distance(el.center, point);
	this.dispatchEvent(evt);
	quad = getQuadrant(point, el.center)
    }
    
    function vectorChange(e){
	
	var event = e.detail;
	var el = this;

	var point = [e.detail.x, e.detail.y]
	var lq = quad;
        if(distance(point, el.center)<5) return;

        quad = getQuadrant(point, el.center);
console.log(el.center)
	var a = distance(el.zero, point);
	var b = distance(el.zero, el.center);
	var c = distance(point, el.center);
	var angle = (quad==1||quad==2) ?  360 - getAngle(a,b,c) : getAngle(a,b,c);

        var la = el.lastAngle;

        el.clockwise = (angle - el.lastAngle > 0) ? 1 : -1;

        if(!(quad==lq)){// new quadrant
	    if((lq==1&&quad==3)||(lq==3&&quad==1)){ // crossed the zero line

		var r = clockswise.slice(0,5).reduce(function(acc,i){
		    return acc+=i;
		},0)
		if(r<0) el.clockwise = -1
		else if(r>0) el.clockwise = 1;
		else el.clockwise = clockswise[0];
	    };
	};

	clockswise.unshift(el.clockwise);

	var a = distance(lastPoint, point);
	var b = distance(lastPoint, el.center);
	var c = distance(point, el.center);

	degree += getAngle(a,b,c) * el.clockwise;
	
	var evt = new CustomEvent('spin', { cancelable: true, bubbles: true, detail : event});
	el.lastAngle = angle;
	evt.detail.degree = degree;
	evt.detail.clockwise = el.clockwise;
	evt.detail.lastPoint = lastPoint.slice(0);
	lastPoint = point.slice(0);	
	evt.detail.dxcenter = distance(el.center, point);
	evt.detail.delta = getAngle(a,b,c) * el.clockwise

        this.dispatchEvent(evt);

    }
    
}
Example #4
0
File: browser.js Project: NHQ/demos
var touchdown = require('touchdown')
var envelope = require('./deCasteljau');
var Context = document.getElementById('context');
var context = window.context = Context.getContext('2d');

var w = Context.width = window.innerWidth
var h = Context.height = window.innerHeight
touchdown.start(Context)

Context.addEventListener('deltavector', function(evt){
    drawCurve(evt.detail.x, evt.detail.y)
})

drawCurve(w/2, h/3+100)

function drawCurve(x,y){
    var r = Math.round(Math.abs((w/2) - x))
    var g = Math.round(Math.abs(255 - distance([w/2,h/2],[x,y])))
    var b = Math.round(Math.abs((h/2) - y))
    context.fillStyle = 'rgba(100,66,100,255)'
//    context.strokeRect(w/2 -100,h/3,200,200)
    context.beginPath();
    context.lineWidth = 3
    context.moveTo(w/2-100, h/3 + 200)
    context.quadraticCurveTo(x,y,w/2 + 100,h/3)
    context.strokeStyle = ['rgba(',r,',',g,',',b,',',157,')'].join('')
    context.stroke()
    console.log(['rgba(',r,',',g,',',b,',',255,')'].join(''))
}

function distance(p1, p2){