Auf Thema antworten

Hab' mal geguckt - das mit dem "firstTime" ist noch ziemlich hakelig, aber kannst ja mal sehen, wie man das noch verbessern kann

[code=Java]

import java.applet.Applet;

import java.awt.BorderLayout;

import java.awt.*;

import com.sun.j3d.utils.applet.MainFrame;

import com.sun.j3d.utils.geometry.ColorCube;

import com.sun.j3d.utils.universe.*;

import javax.media.j3d.*;

import javax.vecmath.*;

import java.awt.event.*;

import java.util.Enumeration;

import java.awt.Robot;

import javax.swing.*;


public class MouseMovedBehavior extends Behavior {

    private TransformGroup targetTG;

    private Transform3D rotation = new Transform3D();

    WindowOutput windowOutput;

        Robot zen;

    int posX=0,posY=0;

    boolean firstTime = true;

    boolean stop = false;


    MouseMovedBehavior(TransformGroup targetTG, WindowOutput windowOutputx) {

        this.targetTG = targetTG;

        windowOutput = windowOutputx;

    }


    public void initialize() {

        this.wakeupOn(new WakeupOnAWTEvent(MouseEvent.MOUSE_MOVED));

        try{

            zen = new Robot();


        }catch(Exception e){}

    }


    public void processStimulus(Enumeration criteria)

    {

        Object object = criteria.nextElement();

        WakeupOnAWTEvent w = (WakeupOnAWTEvent)object;

        AWTEvent ev = w.getAWTEvent()[0];

        MouseEvent event = (MouseEvent)ev;


        if(firstTime)

        {

            repositionMouse(event);

            firstTime = false;

        }

        else

        {

            windowOutput.schauX(-(event.getY()-posY)/10.0f);

            windowOutput.schauY(-(event.getX()-posX)/10.0f);

            repositionMouse(event);

        }

        this.wakeupOn(new WakeupOnAWTEvent(MouseEvent.MOUSE_MOVED));

    }



    private void repositionMouse(MouseEvent event)

    {

        int cx = event.getComponent().getWidth()/2;

        int cy = event.getComponent().getHeight()/2;

        Point p = new Point(cx,cy);

        SwingUtilities.convertPointToScreen(p, event.getComponent());

        zen.mousePress(InputEvent.BUTTON1_MASK);

        zen.mouseMove(p.x, p.y);

        zen.mouseRelease(InputEvent.BUTTON1_MASK);

        posX = cx;

        posY = cy;

    }


}

[/code]



Oben