package
{
import away3d.cameras.HoverCamera3D;
import away3d.containers.*;
import away3d.core.base.*;
import away3d.core.light.*;
import away3d.core.math.*;
import away3d.events.*;
import away3d.materials.*;
import away3d.primitives.*;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
[SWF(width="500", height="400", frameRate="30", backgroundColor="#EEEEEE")]
public class cmyk extends Sprite
{
private var View:View3D;
private var swfStage:Stage;
private var cover:Cover;
private var waitFourFrames:Number = 0;
private var camera:HoverCamera3D;
private var lastMouseX:Number;
private var lastMouseY:Number;
private var lastPanAngle:Number;
private var lastTiltAngle:Number;
private var move:Boolean = false;
[Embed (source="C.png")]
private var cTex:Class;
[Embed (source="M.png")]
private var mTex:Class;
[Embed (source="Y.png")]
private var yTex:Class;
[Embed (source="K.png")]
private var kTex:Class;
public function cmyk()
{
super();
swfStage = this.stage;
swfStage.scaleMode = StageScaleMode.NO_SCALE;
swfStage.align = StageAlign.TOP;
camera = new HoverCamera3D({zoom:18, focus:2000, distance:18000});
View = new View3D({camera:camera,x:250, y:200});
addChild(View);
camera.lookAt( new Number3D(0, 0, 0) );
camera.targetpanangle = camera.panangle = 0;
camera.targettiltangle = camera.tiltangle = 0;
var cPlane:Plane = new Plane({material:cTex,width:200,height:130,bothsides:true,z:0,ownCanvas:true});
cPlane.rotationX = 90;
cPlane.rotationY = 180;
cPlane.blendMode = BlendMode.MULTIPLY;
View.scene.addChild(cPlane);
var mPlane:Plane = new Plane({material:mTex,width:200,height:130,bothsides:true,z:-50,ownCanvas:true});
mPlane.rotationX = 90;
mPlane.rotationY = 180;
mPlane.blendMode = BlendMode.MULTIPLY;
View.scene.addChild(mPlane);
var yPlane:Plane = new Plane({material:yTex,width:200,height:130,bothsides:true,z:-100,ownCanvas:true});
yPlane.rotationX = 90;
yPlane.rotationY = 180;
yPlane.blendMode = BlendMode.MULTIPLY;
View.scene.addChild(yPlane);
var kPlane:Plane = new Plane({material:kTex,width:200,height:130,bothsides:true,z:-150,ownCanvas:true});
kPlane.rotationX = 90;
kPlane.rotationY = 180;
kPlane.blendMode = BlendMode.MULTIPLY;
View.scene.addChild(kPlane);
var wPlane:Plane = new Plane({material:"white#white",width:200,height:130,bothsides:true,z:-200});
wPlane.rotationX = 90;
View.scene.addChild(wPlane);
View.render();
camera.hover();
cover = new Cover(this,800,600,"At the roulette in Monte Carlo (1892), The Munch Museum, Oslo\nClick and drag to see the color separation");
addEventListener(Event.ENTER_FRAME, onEnterFrame);
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
this.stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
}
private function onEnterFrame(e:Event):void
{
if(!cover.visible || waitFourFrames < 4)
{
var cameraSpeed:Number = 0.3; if (move) {
camera.targetpanangle = cameraSpeed*(stage.mouseX - lastMouseX) + lastPanAngle;
camera.targettiltangle = cameraSpeed*(stage.mouseY - lastMouseY) + lastTiltAngle;
}
camera.hover();
View.render();
waitFourFrames++;
if(waitFourFrames == 4){
cover.refresh();
addChild(cover);
}
}
}
private function MouseDown(event:MouseEvent):void
{
lastPanAngle = camera.targetpanangle;
lastTiltAngle = camera.targettiltangle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
move = true;
}
private function MouseUp(event:MouseEvent):void
{
move = false;
}
}
}