flash on 2010-8-10
...
@author Alex Lama
/**
* Copyright virtualex ( http://wonderfl.net/user/virtualex )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/1xvX
*/
package{
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.special.CompositeMaterial;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.view.BasicView;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.MovieMaterial;
/**
* ...
* @author Alex Lama
*/
public class Main extends BasicView {
protected var cube:Cube;
protected var mat1:ColorMaterial;
protected var interactiveMats:Array;
protected var interactiveColors:Array;
protected var cubeArray:Array;
protected var cubeRandArray:Array;
protected var materialsList:MaterialsList;
protected var rightBtn1:Sprite;
protected var leftBtn1:Sprite;
protected var rightBtn2:Sprite;
protected var leftBtn2:Sprite;
protected var rightBtn3:Sprite;
protected var leftBtn3:Sprite;
protected var time:Number;
public function Main():void {
//super();
super(640,480,true, false,"Free")
//super(640,480,true, false,"Free")
//this.parent.camera.cameraType = "Free";
//camera.cameraType = "Free";
camera.zoom = 3.5;
camera.focus = 160;
camera.z = -1000;
createButtons()
//camera
time = 0;
interactiveMats = ["front", "back", "left", "right", "bottom", "top"];
interactiveColors = [0x111111, 0x333333, 0x555555, 0x777777, 0x999999, 0xAAAAAA];
cubeArray = new Array(100);
cubeRandArray = new Array(100);
var arr:int = 0;
for (var i:int = -5; i <5; i++) {
for (var j:int = 0; j <10; j++) {
cube = makeCube(200, 200,20);
cube.y = -400;
cube.x = i *220;
cube.z = j *220;
cubeArray[arr] = cube;
cubeRandArray[arr] = Math.random() * 100;
scene.addChild(cube);
arr++;
}
}
startRendering();
}
public function makeCube(w:Number,h:Number,d:Number):Cube{
var materialsList:MaterialsList = new MaterialsList();
for (var i:int = 0; i <interactiveMats.length; i++) {
var colorM:ColorMaterial = new ColorMaterial(interactiveColors[i]);
materialsList.addMaterial(colorM,interactiveMats[i]);
}
var cube:Cube = new Cube(materialsList, w,h,d);
return cube;
}
protected function createButtons():void {
//Create Buttons
rightBtn1 = createButton();
leftBtn1 = createButton();
rightBtn2 = createButton();
leftBtn2 = createButton();
rightBtn3 = createButton();
leftBtn3 = createButton();
addChild(leftBtn1);
addChild(rightBtn1);
addChild(leftBtn2);
addChild(rightBtn2);
addChild(leftBtn3);
addChild(rightBtn3);
//Add button listeners
// RIGHT_MOUSE_DOWN :
rightBtn1.buttonMode = true;
leftBtn1.buttonMode = true;
rightBtn1.addEventListener(MouseEvent.MOUSE_OVER, buttonClick);
leftBtn1.addEventListener(MouseEvent.MOUSE_OVER, buttonClick);
rightBtn2.buttonMode = true;
leftBtn2.buttonMode = true;
rightBtn2.addEventListener(MouseEvent.MOUSE_OVER, buttonClick);
leftBtn2.addEventListener(MouseEvent.MOUSE_OVER, buttonClick);
rightBtn3.buttonMode = true;
leftBtn3.buttonMode = true;
rightBtn3.addEventListener(MouseEvent.MOUSE_OVER, buttonClick);
leftBtn3.addEventListener(MouseEvent.MOUSE_OVER, buttonClick);
//Place buttons on stage
rightBtn1.x = stage.stageWidth - 120;
leftBtn1.x = 100;
rightBtn1.y = stage.stageHeight / 2;
leftBtn1.y = (stage.stageHeight / 2) + 20;
leftBtn1.rotation = 180;
rightBtn2.x = stage.stageWidth - 120;
leftBtn2.x = 100;
rightBtn2.y = stage.stageHeight / 3;
leftBtn2.y = (stage.stageHeight / 3) + 20;
leftBtn2.rotation = 180;
rightBtn3.x = stage.stageWidth - 120;
leftBtn3.x = 100;
rightBtn3.y = (stage.stageHeight*2) / 3;
leftBtn3.y = ((stage.stageHeight*2) / 3) + 20;
leftBtn3.rotation = 180;
}
protected function createButton():Sprite{
var btn:Sprite = new Sprite();
btn.graphics.beginFill(0x333333);
btn.graphics.moveTo(0, 0);
btn.graphics.lineTo(0, 20);
btn.graphics.lineTo(10, 10);
btn.graphics.lineTo(0, 0);
btn.graphics.endFill();
return btn;
}
protected function buttonClick(evt:MouseEvent):void {
switch (evt.target) {
case rightBtn1:
camera.zoom --;
break;
case leftBtn1:
camera.zoom ++;
break;
case rightBtn2:
camera.z -=10;
break;
case leftBtn2:
camera.z +=10;
break;
case rightBtn3:
camera.focus --;
break;
case leftBtn3:
camera.focus ++;
break;
}
//rotate();
}
override protected function onRenderTick(event:Event = null):void {
super.onRenderTick(event);
for (var i:int = 0; i <100; i++) {
cubeArray[i].y = (Math.sin((time+cubeRandArray[i])/10)*5)-350 ;
}
time ++;
}
}
}