<< Chapter < Page | Chapter >> Page > |
These three accessor methods are straightforward and shouldn't require further explanation.
Humans usually find it easier to think in terms of speed such as miles per hour while it is sometimes easier to write computer programs that deal with the reciprocal of speed such as hours per mile .
The property accessor method for the property named Speed is shown in Listing 3 .
Listing 3 . The property accessor method for Speed.
//Speed property accessor. The set side should be
// called with speed in moves/msec. The get side// returns speed moves/msec.
public double Speed {get {
//Convert from elapsed time in msec/move to// speed in moves/msec.
return elapsedTimeTarget/1000;}
set {//Convert from speed in moves/msec to
// elapsed time in milliseconds/move.elapsedTimeTarget = 1000/value;
}//end set}//end Speed property accessor
The set side of the property accessor method for the Speed property receives the incoming value as moves per millisecond . The code converts this value to milliseconds per move and saves it in the instance variable named elapsedTimeTarget mentioned earlier.
This is the target for the elapsed time in milliseconds from one movement to the next movement of the sprite in the game window. Every time a sprite moves,it moves the same distance. Therefore, the apparent speed of sprite movement as seen by the viewer can be controlled by controlling the elapsed time betweenmovements.
The get side of the property accessor method for the Speed property converts the returned value from milliseconds per move back to moves per millisecond .
The constructor for the Sprite class is shown in Listing 4 .
Listing 4 . The constructor for the Sprite class.
public Sprite(String assetName,
ContentManager contentManager,Random random) {
image = contentManager.Load<Texture2D>(assetName);
this.random = random;}//end constructor
The constructor loads an image for the sprite when it is instantiated. Therefore, it requires an Asset Name for the image and a reference to a ContentManager object.
The constructor also requires a reference to a Random object capable of generating a sequence of pseudo random values of type double .
The program should use the same Random object for all sprites to avoid getting the same sequence of values for different sprites whentwo or more sprites are instantiated in a very short period of time.
The SetImage method is shown in Listing 5 .
Listing 5 . The SetImage method.
public void SetImage(String assetName,
ContentManager contentManager) {image = contentManager.Load<Texture2D>(assetName);
}//end SetImage
This method can be called to load a new image for an existing sprite. The method is essentially the same as a method having the same name that Iexplained in an earlier module, so no further explanation should be required.
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?