home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-11-13 | 4.2 KB | 110 lines |
- // <Tutorial Section=1.0 Title="Extended Applet">
- /**
- This applet illustrates the construction of a DxM model including: <BR>
- 1) importing an image and a sound <BR>
- 2) using the height and width of the applet for scaling the image to fit
- properly <BR>
- 3) animating the image and looping the sound <BR>
- 4) setting the resulting image and sound to be presented <BR>
- 5) constructing a DxM applet including the proper steps for initialization
- <BR>
- **/
- // </Tutorial>
-
-
- // <Tutorial Section=1.1>
- import com.ms.dxmedia.*; // direct animation libraries
- import java.awt.*; // for getting the applet dimension
- import java.net.*; // for URLs
-
- // This class extends the DXMApplet class. The model you set in this class,
- // by calling the setModel() method, is the model that will be displayed.
- public class ExtendedApplet extends DXMApplet {
-
- // The start() and stop() methods of DXMApplet restart and stop the
- // DirectX Media animation loop already, so you don't need to implement
- // these methods if you don't have other activities you need to stop and
- // restart.
-
- // Set the model in the init() method.
- public void init() {
-
- // Always call the super classes init first to ensure codeBase is set.
- super.init() ;
-
- // Now set the model.
- setModel(new ExtendedModel(this));
- }
- }
-
- // This class extends the Model class. The createModel method in this class
- // is where you construct your animation. This example will make use of
- // two of the primary media types supported by DirectAnimation: image and sound.
- class ExtendedModel extends Model {
-
- // Get the size of the applet in the constructor, and store it in the
- // member variables.
- ExtendedModel(DXMApplet dxma) {
-
- // Get the size of the applet.
- Dimension dim = dxma.getSize();
-
- // The base unit of measure for DirectAnimation is the meter.
- // Convert the size into meters by multiplying it with the pixelBvr.
- _halfWidthNum = mul(toBvr(dim.width*0.5),pixelBvr);
- _halfHeightNum = mul(toBvr(dim.height*0.5),pixelBvr);
-
- // Notice the use of the toBvr() call. This helper function is used
- // extensively in DirectAnimation to convert Java primitive data types to
- // DxM behaviors. As you learn more about the system you will begin to appreciate the
- // appreciate the power of behaviors, which can be time-varying values.
- }
-
- // Create the animation in the createModel method.
- public void createModel(BvrsToRun blist)
- {
- // Build up a URL to import relative to.
- URL mediaBase = getImportBase();
- URL imgBase = buildURL(mediaBase, "image/");
- URL sndBase = buildURL(mediaBase, "sound/");
-
- // Create an image behavior by importing a bitmap.
- ImageBvr img = importImage(buildURL(imgBase, "phantom.jpg"));
-
- // Create a sound behavior by importing a wave file.
- SoundBvr snd = importSound(buildURL(sndBase, "earth.mp2"), null);
-
- // Find the length of the diagonal of the imported image, we'll use
- // it later to scale the image to fit in the viewport.
- // halfDiagonalNum = sqrt(xNum * xNum + yNum * yNum);
- Point2Bvr maxPt2 = img.boundingBox().getMax();
- NumberBvr xNum = maxPt2.getX();
- NumberBvr yNum = maxPt2.getY();
- NumberBvr halfDiagonalNum = sqrt(add(mul(xNum, xNum), mul(yNum, yNum)));
-
- // Find the smaller of the width and height.
- NumberBvr minHalfExtNum = (NumberBvr)cond(lt(_halfWidthNum, _halfHeightNum),
- _halfWidthNum, _halfHeightNum);
-
- // Create an image that fits in the viewport.
- ImageBvr scaledImg = img.transform(scale2(div(minHalfExtNum,
- halfDiagonalNum)));
-
- // Create a rotating image
- ImageBvr rotatingImg = scaledImg.transform(rotate(localTime));
-
- // Set the image that actually gets displayed using setImage()
- setImage(overlay(rotatingImg, solidColorImage(black)));
-
- // Create a sound that loops continuously.
- SoundBvr loopingSnd = snd.loop();
-
- // And set the sound that gets played using setSound()
- setSound(loopingSnd);
- }
-
- private NumberBvr _halfWidthNum, _halfHeightNum;
- }
-
- // </Tutorial>
-