# Away 3d rotating cube

**URL:** <https://forum.kirupa.com/t/away-3d-rotating-cube/327177>\
**Category:** Uncategorized\
**Created:** [February 10, 2012, 10:25pm UTC](https://forum.kirupa.com/t/away-3d-rotating-cube/327177 "2012-02-10T22:25:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![bonassus](https://avatars.discourse-cdn.com/v4/letter/b/ea5d25/32.png) [@bonassus](https://forum.kirupa.com/u/bonassus)\
**Post date:** [February 10, 2012, 10:25pm UTC](https://forum.kirupa.com/t/away-3d-rotating-cube/327177/1 "2012-02-10T22:25:35Z")

</div>

Im trying to set up a 3d cube interface with away 3d but i don’t really know how to use away 3d. i have the cube and it rotates with the mouse drag. the problem is that when first clicked the cube jumps to a new rotation before the dragging starts. any ideas how i can stop it from doing that.

Thanks!!

```auto

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.display.Bitmap;
import com.greensock.*;
import com.greensock.easing.*;
import com.greensock.events.*;
import com.greensock.loading.*;
import com.greensock.plugins.*;

    import away3d.cameras.*;

    import away3d.containers.View3D;
    import away3d.primitives.Cube;
    import away3d.materials.BitmapMaterial;

    import away3d.core.utils.Cast;

import flash.events.MouseEvent;

public class CreateCube01 extends Sprite {
        private var viewport:View3D;
        private var cube:Cube;
        private var tray:Tray = new Tray;
        private var slider:SliderStill = new SliderStill;
    private var camera:HoverCamera3D;
        [Embed (source="metal.jpg")] private var myTexture:Class;
        private var myBitmap:Bitmap = new myTexture();

        public function CreateCube01() {

            camera = new HoverCamera3D({zoom:2, focus:100, distance:250});
            viewport = new View3D({x:400, y:400});
            addChild(viewport);
            addChild(tray);
            addChild(slider);
            tray.x = 65;
            tray.y = 569;
            slider.x = 630;
            slider.y = 240;

            var myMaterial:BitmapMaterial = new BitmapMaterial(Cast.bitmap(myBitmap));
            cube = new Cube({width:200, height:200, depth:200, material:myMaterial});

            viewport.scene.addChild(cube);
            render();
            viewport.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
            viewport.addEventListener(MouseEvent.MOUSE_UP, onUp);

        }

        private function onDown(e:MouseEvent):void {
            this.addEventListener(Event.ENTER_FRAME, renderThis);
        }

    private function onUp(e:MouseEvent):void {
        this.removeEventListener(Event.ENTER_FRAME, renderThis);
    }

        private function render(){
            cube.rotationX =1;
            cube.rotationY =15;
           cube.rotationZ =1;
          viewport.camera.moveTo(cube.x,cube.y,cube.z);
            viewport.camera.moveBackward(500);
            viewport.render();

        }

        private function renderThis(e:Event):void {
            viewport.camera.moveTo(cube.x,cube.y,cube.z);
            viewport.camera.rotationY=mouseX;
            viewport.camera.rotationX=mouseY;
            viewport.camera.moveBackward(500);
            viewport.render();
        }

    }

}

```
