examples/navigator/Navigator

From FANG

Jump to: navigation, search

01 package examples.navigator;
02 
03 import java.awt.geom.Point2D;
04 
05 import fang.*;
06 
07 
08 /**Demonstrates scrolling by moving the
09  * mouse in the direction desired from
10  * the center of the screen.
11  @author Jam Jenkins*/
12 public class Navigator extends GameLoop
13 {
14    /** tiles image reflected vertically and
15     * horizontally to make it seamless.*/
16    private ImageSprite background;
17 
18    /**the tracker used for the scrolling*/
19    private ScrollTracker tracker;
20 
21    /** makes and adds the sprites */
22    public void startGame()
23    {
24       makeSprites();
25       addSprites();
26       setHelp("resources/NavigatorHelp.txt");
27    }
28 
29    /** makes the image sprites for the background
30     * and sets a vertical scrolling tracker on them*/
31    private void makeSprites()
32    {
33       background=new ImageSprite("resources/road.jpg");
34       background.setScale(1);
35       tracker=new ScrollTracker(
36                   true,
37                   new Point2D.Double(),
38                   background,
39                   3);
40       background.setTracker(tracker);
41    }
42 
43    /**adds the sprites to the canvas*/
44    private void addSprites()
45    {
46       canvas.addSprite(background);
47    }
48 
49    /**uses the position of the mouse in relation
50     * to the center of the screen to move the
51     * background in the direction and speed
52     * indicated.  The angle from the center to the
53     * mouse if the direction the background moves
54     * and as the distance from the center of the
55     * screen increases, so too does the scroll speed*/
56    public void advanceFrame(double timeAdvanced)
57    {
58       Point2D.Double mouse=getPlayer().getMouse().getLocation();
59       Point2D.Double center=new Point2D.Double(0.50.5);
60       double distance=mouse.distance(center);
61       double maxDistance=center.distance(11);
62       /**only move if more than 10% the distance from
63        * the center to the corner*/
64       if(distance/maxDistance>0.1)
65       {
66          Point2D.Double v=new Point2D.Double(
67                               center.x-mouse.x,
68                               center.y-mouse.y);
69          tracker.setVelocity(v);
70       }
71       else
72          tracker.setVelocity(new Point2D.Double());
73    }
74 
75    public static void main(String[] argv)
76    {
77       Navigator navigator=new Navigator();
78       navigator.runAsApplication();
79    }
80 }

Download/View examples/navigator/Navigator.java




Views
Personal tools