hw2 helper

side scrolling

by Rebecca Chen

HTML

<div id="info">Side-Scrolling Control
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="http://jyunming-chen.github.io/tutsplus/js/KeyboardState.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<div id="dataString"></div>

CSS

#info {
  position: absolute;
  top: 0px;
  width: 100%;
  padding: 10px;
  text-align: center;
  color: #ffff00
}
#dataString {
  position: absolute;
  bottom: 10%;
  width: 100%;
  padding: 10px;
  text-align: center;
  color: #ff0000
}

body {
  overflow: hidden;
}

JavaScript

var camera, scene, renderer;
var ballFrame;
var keyboard = new KeyboardState();
var ballX = -20;
var ball;

init();
animate();

function init() {
  renderer = new THREE.WebGLRenderer({
    antialias: true
  });

  renderer.setSize(window.innerWidth, window.innerHeight);
  //renderer.setClearColor(0x888888);
  document.body.appendChild(renderer.domElement);

  scene = new THREE.Scene();
  camera = new THREE.OrthographicCamera(-50, 50, 50, -50, -10, 100);
  camera.position.z = 10;
  scene.add(camera);
  window.addEventListener('resize', onWindowResize, false);

  ////////////////////////////////////////////////////////////////////////////////////////////
  var back = new THREE.Mesh(new THREE.PlaneGeometry(100, 100),
  	new THREE.MeshBasicMaterial({color:0xffffff*Math.random()}));

	for (var i = 0;i < 4;i++) {
		var backi = back.clone();
  	scene.add (backi);
    backi.position.x += 100*i;
    backi.material = new THREE.MeshBasicMaterial({color:0xffffff*Math.random()});
  }
  
  var floor = new THREE.Mesh (new THREE.PlaneGeometry(400,50), new THREE.MeshBasicMaterial());
  scene.add (floor);
  floor.position.y = -35;
  floor.position.x = 150;
  
  ball = new THREE.Mesh (new THREE.CircleGeometry (10,20), new THREE.MeshBasicMaterial({color:0x999900}));
  scene.add (ball);
  
}

function onWindowResize() {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
}


function myClamp (x, xlo, xhi) {
	if (x < xlo) return xlo;
  if (x > xhi) return xhi;
  return x;
}

function animate() {
  keyboard.update();
  if (keyboard.down("right")) {
  	ballX += 8;
	} else if (keyboard.down("left")) {
  	ballX -= 8;
	}
	ballX = myClamp (ballX, -50, 350);
	ball.position.x = ballX;
  camera.position.x = myClamp (ballX, 0, 300);
  
  requestAnimationFrame(animate);
  render();
  $("#dataString").text ("camera.x = " + camera.position.x);
}

function render() {
  renderer.render(scene,...