Hi I have written a small code to ResetmyImage on the screen when a button
is pressed, I used the same steps as suggested, but I want to know how i
can activate this event from my application so that my application
listens to this event.I have created a constructor for the program given
below and have passed my transform group.
Assume I have created my Object
ResetkeyBehavior rkb = new ResetKeyBehavior(sceneTransformGroup);
rkb.initilize(); // gives an error
Please help.
> From: Gautam Jindal <[EMAIL PROTECTED]>
>
> 1> How can I stop an object from getting lost from the screen?ie.
whenever
> I translate,rotate sometimes the object gets lost and it becomes very
> difficult to track it down.Is there a way to make the object stay put on
> the screen.Please let me know how can I do this.
You can turn down the sensisitivity of the mouse behaviors so that the
object
doesn't "fly off" so quickly (see the answer to 3> below).
You can also setup a KeyBehavior which resets the transform to identity
when the
user hits a key. See ExitKeyBehavior.java attached below for an example
of a
KeyBehavior. What you need to do is:
Make a new class ResetKeyBehavior, using ExitKeyBehavior as a
guide
Make the constructor for this behavior take the TransformGroup
that
the MouseBehaviors are acting on, save this in a field.
Modify the WakeupCriterion to look only for KEY_PRESS events
Modify processKeyEvent to look for your "reset" key, for example,
to
make the "r" key reset the transform, use KeyEvent.VK_R.
When the key is pressed, call ;
TransformGroup.setTransform(new Transform3D())
To reset the transform.
> 2> Every time I run my application ,the object..which is a surface
appears
> from the center of the screen ,I am interested in starting it from left
> bottom of my screen ,any ideas?
Set up a TransformGroup above your object to hold the translation. Set up
a
Trasnform3D with the desired translation (you probably want (-0.8, -0.8,
0.0))
and call setTransform on the TransformGroup to set the transform.
> 3> I am using mouse behaviour class provided my java 3.Anyway that I can
> change the translation steps and rotational angle.
Decrease the sensitivity of the mouse behaviors by calling setFactor(). I
find
that setting the factor to 0.007 works well for a MouseRotate behavior.
Doug Gehringer
Sun Microsystems
/*
* @(#)ExitKeyBehavior.java 1.1 98/12/04 14:43:14
*
* Copyright (c) 1996-1998 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to
use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies
of
* the software; and ii) Licensee does not utilize the software in a
manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE
USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications;
or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
import javax.media.j3d.*;
import java.util.*;
import java.awt.Event;
import java.awt.Point;
import java.awt.AWTEvent;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.WindowEvent;
import javax.vecmath.*;
/**
* A KeyBehavior which called exit when the ESC key is pressed
*/
public class ExitKeyBehavior extends Behavior {
// look for released events since sometimes ESCAPE only generates a
// RELEASE event
WakeupCriterion criterion[] = {
new WakeupOnAWTEvent( Event.KEY_PRESS ),
new WakeupOnAWTEvent( Event.KEY_RELEASE ),
};
WakeupCondition conditions = new WakeupOr( criterion );
public void initialize() {
wakeupOn(conditions);
}
public void processStimulus( Enumeration criteria ) {
WakeupCriterion wakeup;
AWTEvent[] evt=null;
while( criteria.hasMoreElements() ) {
wakeup = (WakeupCriterion)criteria.nextElement();
if (wakeup instanceof WakeupOnAWTEvent) {
evt=((WakeupOnAWTEvent)wakeup).getAWTEvent();
}
if (evt!=null) {
for(int i=0; i<evt.length; i++) {
if (evt[i] instanceof KeyEvent) {
processKeyEvent( (KeyEvent)evt[i] );
}
}
}
}
wakeupOn( conditions );
}
private void processKeyEvent( KeyEvent evt ) {
int key = evt.getKeyCode();
switch (key) {
case KeyEvent.VK_ESCAPE:
System.exit(0);
break;
}
}
}
Gautam Jindal
CSE Department
University of Nebraska,Lincoln.
=====================================================================
To subscribe/unsubscribe, send mail to [EMAIL PROTECTED]
Java 3D Home Page: http://java.sun.com/products/java-media/3D/