robinthehood
%Europe/Berlin %632 %2009, 16:10
Misschien is het wel een hele basic vraag maar ik heb nog niet zoveel met pv3d gedaan, vandaar.
Ik heb een gallery gemaakt met cubes, de bedoeling is nu dat je op deze cubes kan klikken.
Maar als je dat doet gebeurt er niks, terwijl die toch echt "JA" zou moeten tracen :S
Dit is mijn code:
package com.vettigheid.pv3d
{
import com.vettigheid.grid.Points;
import flash.display.Sprite;
import flash.events.Event;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
public class Gallery extends Sprite
{
private var camera:Camera3D;
private var render:BasicRenderEngine;
private var scene:Scene3D;
private var viewport:Viewport3D;
private var cubes:Array = new Array();
private var cubesContainer:DisplayObject3D;
// Cube Properties
private var cubeDepth:Number = 40;
private var cubeHeight:Number = 500;
private var cubeWidth:Number = 500;
// Grid Properties
private var gridAngle:Number = 45 / 800;
private var gridCols:int = 6;
private var gridRows:int = 6;
private var gridTotal:int;
public function Gallery(_stageRef:Sprite)
{
viewport = new Viewport3D(800, 600);
_stageRef.addChild(viewport);
scene = new Scene3D();
camera = new Camera3D();
render = new BasicRenderEngine();
camera.zoom = -1;
camera.focus = 200;
camera.z = -2000;
initCubes();
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function initCubes():void
{
var materialList:MaterialsList = new MaterialsList();
var frontMaterial: ColorMaterial = new ColorMaterial(0xcecece);
frontMaterial.interactive = true;
frontMaterial.addEventListener(InteractiveScene3DE vent.OBJECT_CLICK, onCubeMouseClick);
materialList.addMaterial(frontMaterial, "all");
gridTotal = gridRows * gridCols;
var points:Array = Points.createPoints(gridRows, gridCols, 600, 600, -cubeWidth * (gridCols / 2), -cubeHeight * (gridRows / 2));
cubesContainer = new DisplayObject3D();
scene.addChild(cubesContainer);
for(var i:int = 0; i < gridTotal; i++)
{
var cube:Cube = new Cube(materialList, cubeWidth, cubeDepth, cubeHeight, 1, 1, 1, 0, 0);
cube.x = points[i].x;
cube.y = points[i].y;
cubesContainer.addChild(cube);
cubes[cubes.length] = cube;
}
}
private function onCubeMouseClick(e:InteractiveScene3DEvent):void
{
trace("JA");
}
private function onEnterFrame(e:Event):void
{
cubesContainer.rotationX = (this.mouseY - 300) * -gridAngle;
cubesContainer.rotationY = (this.mouseX - 400) * -gridAngle;
render.renderScene(scene, camera, viewport);
}
}
}
Misschien wil iemand even kijken wat ik fout heb gedaan?
Ik heb een gallery gemaakt met cubes, de bedoeling is nu dat je op deze cubes kan klikken.
Maar als je dat doet gebeurt er niks, terwijl die toch echt "JA" zou moeten tracen :S
Dit is mijn code:
package com.vettigheid.pv3d
{
import com.vettigheid.grid.Points;
import flash.display.Sprite;
import flash.events.Event;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
public class Gallery extends Sprite
{
private var camera:Camera3D;
private var render:BasicRenderEngine;
private var scene:Scene3D;
private var viewport:Viewport3D;
private var cubes:Array = new Array();
private var cubesContainer:DisplayObject3D;
// Cube Properties
private var cubeDepth:Number = 40;
private var cubeHeight:Number = 500;
private var cubeWidth:Number = 500;
// Grid Properties
private var gridAngle:Number = 45 / 800;
private var gridCols:int = 6;
private var gridRows:int = 6;
private var gridTotal:int;
public function Gallery(_stageRef:Sprite)
{
viewport = new Viewport3D(800, 600);
_stageRef.addChild(viewport);
scene = new Scene3D();
camera = new Camera3D();
render = new BasicRenderEngine();
camera.zoom = -1;
camera.focus = 200;
camera.z = -2000;
initCubes();
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function initCubes():void
{
var materialList:MaterialsList = new MaterialsList();
var frontMaterial: ColorMaterial = new ColorMaterial(0xcecece);
frontMaterial.interactive = true;
frontMaterial.addEventListener(InteractiveScene3DE vent.OBJECT_CLICK, onCubeMouseClick);
materialList.addMaterial(frontMaterial, "all");
gridTotal = gridRows * gridCols;
var points:Array = Points.createPoints(gridRows, gridCols, 600, 600, -cubeWidth * (gridCols / 2), -cubeHeight * (gridRows / 2));
cubesContainer = new DisplayObject3D();
scene.addChild(cubesContainer);
for(var i:int = 0; i < gridTotal; i++)
{
var cube:Cube = new Cube(materialList, cubeWidth, cubeDepth, cubeHeight, 1, 1, 1, 0, 0);
cube.x = points[i].x;
cube.y = points[i].y;
cubesContainer.addChild(cube);
cubes[cubes.length] = cube;
}
}
private function onCubeMouseClick(e:InteractiveScene3DEvent):void
{
trace("JA");
}
private function onEnterFrame(e:Event):void
{
cubesContainer.rotationX = (this.mouseY - 300) * -gridAngle;
cubesContainer.rotationY = (this.mouseX - 400) * -gridAngle;
render.renderScene(scene, camera, viewport);
}
}
}
Misschien wil iemand even kijken wat ik fout heb gedaan?