
Код AS3:
package
{
import flash.display.Bitmap;
import flash.events.Event;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.materials.shaders.PhongShader;
import org.papervision3d.materials.shaders.ShadedMaterial;
import org.papervision3d.materials.shaders.Shader;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.view.BasicView;
[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
public class CubeWithDifferentSides extends BasicView
{
[Embed(source="assets/back.jpg")]
private var backAsset:Class;
[Embed(source="assets/bottom.jpg")]
private var bottomAsset:Class;
[Embed(source="assets/front.jpg")]
private var frontAsset:Class;
[Embed(source="assets/left.jpg")]
private var leftAsset:Class;
[Embed(source="assets/right.jpg")]
private var rightAsset:Class;
[Embed(source="assets/top.jpg")]
private var topAsset:Class;
private var light:PointLight3D;
private var cube:Cube;
public function CubeWithDifferentSides()
{
var materialsList:MaterialsList = new MaterialsList();
light = new PointLight3D();
materialsList.addMaterial(new BitmapMaterial( new backAsset(), true ), "back");
materialsList.addMaterial(new BitmapMaterial( new bottomAsset(), true ), "bottom");
materialsList.addMaterial(new BitmapMaterial( new frontAsset(), true ), "front");
materialsList.addMaterial(new BitmapMaterial( new leftAsset(), true ), "left");
materialsList.addMaterial(new BitmapMaterial( new rightAsset(), true ), "right");
materialsList.addMaterial(new BitmapMaterial( new topAsset(), true ), "top");
cube = new Cube(materialsList, 500, 500, 500, 5, 5, 5);
scene.addChild(cube);
cube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onCubeClick);
startRendering();
}
override protected function onRenderTick(event:Event=null):void
{
cube.rotationY += (viewport.containerSprite.mouseX - cube.rotationY) * .1;
cube.rotationX += (viewport.containerSprite.mouseY - cube.rotationX) * .1;
renderer.renderScene(scene, camera, viewport);
}
private function onCubeClick(e:InteractiveScene3DEvent):void {
switch(e.face3d.material.name) {
case 'front':
navigateToURL(new URLRequest('http://mySite.com/1'));
break;
case 'back':
navigateToURL(new URLRequest('http://mySite.com/2'));
break;
case 'left':
navigateToURL(new URLRequest('http://mySite.com/3'));
break;
case 'right':
navigateToURL(new URLRequest('http://mySite.com/4'));
break;
}
}
}
}