sandy point click ... @author Darknet darknet forked:0favorite:0lines:75license : All rights reserved modified : 2009-06-20 04:01:08 Embed Tweet package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import sandy.core.data.Point3D; import sandy.core.Scene3D; import sandy.core.scenegraph.Camera3D; import sandy.core.scenegraph.Group; import sandy.events.Shape3DEvent; import sandy.materials.Appearance; import sandy.materials.attributes.LightAttributes; import sandy.materials.attributes.LineAttributes; import sandy.materials.attributes.MaterialAttributes; import sandy.materials.ColorMaterial; import sandy.materials.Material; import sandy.primitive.Box; import sandy.primitive.Plane3D; /** * ... * @author Darknet */ public class SandyPlaceObjects extends Sprite { public var scene:Scene3D; public var camera:Camera3D; public var group:Group = new Group('group'); //public var box:Box = new Box('player', 32, 32, 32); public var ground:Plane3D = new Plane3D('bottom', 150, 250, 10, 10, Plane3D.ZX_ALIGNED,'quad'); public var tmpbox:Box = new Box('tmpbox'); public function SandyPlaceObjects() { camera = new Camera3D(300, 300); camera.y = 100; camera.lookAt(0,0,0); var root:Group = group; scene = new Scene3D( "scene", this, camera, root ); addEventListener(Event.ENTER_FRAME, enterFrameHandler ); var materialAttr:MaterialAttributes = new MaterialAttributes( new LineAttributes( 0.5, 0x2111BB, 0.4 ), new LightAttributes( true, 0.1) ); var material:Material = new ColorMaterial( 0xFFCC33, 1, materialAttr ); var app:Appearance = new Appearance( material ); //box.appearance = app; //box.useSingleContainer = false; //box.enableBackFaceCulling = false; ground.appearance = app; ground.enableBackFaceCulling = false; ground.useSingleContainer = false; ground.enableEvents = true; ground.addEventListener(MouseEvent.CLICK, placeobject); ground.addEventListener(MouseEvent.MOUSE_OVER, updateobjectover); ground.addEventListener(MouseEvent.MOUSE_OUT, updateobjectout); //group.addChild(tmpbox); //group.addChild(box); group.addChild(ground); } public function placeobject(objectevent:Shape3DEvent):void { var placeobject:Box = new Box('boxplace'); var v:Point3D = objectevent.point; placeobject.x = v.x; placeobject.y = v.y; placeobject.z = v.z; group.addChild(placeobject); //trace('added...'+"x:"+v.x+"y:"+v.y+"z:"+v.z); } public function updateobjectover(objectevent:Shape3DEvent):void { ground.addEventListener(MouseEvent.MOUSE_MOVE, updateobjectposition); group.addChild(tmpbox); } public function updateobjectposition(objectevent:Shape3DEvent):void { //trace('over'); var v:Point3D = objectevent.point; tmpbox.x = v.x; tmpbox.y = v.y; tmpbox.z = v.z; //trace('added...'+"x:"+v.x+"y:"+v.y+"z:"+v.z); } public function updateobjectout(objectevent:Shape3DEvent):void { ground.removeEventListener(MouseEvent.MOUSE_MOVE, updateobjectposition); group.removeChildByName(tmpbox.name); } private function enterFrameHandler( event : Event ) : void { scene.render(); } } } Code Fullscreen Preview Fullscreen click point sandy Shape3DEvent scene point camera material root MaterialAttributes Point3D enableEvents enableBackFaceCulling appearance useSingleContainer MouseEvent.MOUSE_MOVE Material event MouseEvent.MOUSE_OUT MouseEvent.MOUSE_OVER addChild removeEventListener MouseEvent.ENTER_FRAME