home *** CD-ROM | disk | FTP | other *** search
/ Internet 1996 World Exposition / park.org.s3.amazonaws.com.7z / park.org.s3.amazonaws.com / Japan / NTT / DM- / hotjava / classes / src / AnimationData.jpp < prev    next >
Encoding:
Text File  |  2017-09-21  |  3.9 KB  |  188 lines

  1. import browser.*;
  2. import browser.audio.*;
  3. import awt.*;
  4. import net.www.html.*;
  5. import java.io.*;
  6. import net.www.*;
  7. import java.util.*;
  8.  
  9. #include "anim.h";
  10.  
  11. class AnimationData {
  12.  
  13. AnimationPlayer        parent;
  14. int        id;
  15.  
  16. // Image data
  17. int        type;
  18. int        depth;
  19. Image        images[];
  20.  
  21. // Audio data
  22. AudioData    sound = null;
  23. int        soundFrame = -1;    // frame number of starting sound
  24.  
  25. // Frame data
  26. int        frames[];        // index for images
  27. int        xpos[], ypos[];
  28. int        frameTime[];
  29.  
  30. boolean        started = false;
  31. int        firstStartBase = -1;
  32. int        firstStartParameter = -1;
  33. int        autoStartBase = -1;
  34. int        autoStartParameter = -1;
  35. int        curFrame = -1;
  36.  
  37. boolean        reverse = false;
  38.  
  39.  
  40. public AnimationData() { // dummy or sentinel
  41.     depth = -1000;
  42. }
  43.  
  44. public AnimationData(AnimationPlayer op, int myid, int typ, int d, 
  45.             String imgfile, int n, int fr[], int x[], int y[]) {
  46.     parent = op;
  47.     id = myid;
  48.     type = typ;
  49.     depth = d;
  50.     frames = fr;
  51.     xpos = x;
  52.     ypos = y;
  53.  
  54.     images = new Image[n+2];
  55.     if (imgfile != null) {
  56.     int i;
  57.     for (i=0; i <= n; i++) {
  58.         images[i] = parent.getImage(imgfile + i + ".gif");
  59.     }
  60.     images[n+1] = parent.getImage(imgfile + "99.gif");
  61.     }
  62. }
  63.  
  64. public void setFrameTime(int ftime[], int fb, int fp, int ab, int ap) {
  65.     frameTime = ftime;
  66.     firstStartBase = fb;
  67.     firstStartParameter = fp;
  68.     autoStartBase = ab;
  69.     autoStartParameter = ap;
  70. }
  71.  
  72. public void setFrameTime(int ftime, int fb, int fp, int ab, int ap) {
  73.     firstStartBase = fb;
  74.     firstStartParameter = fp;
  75.     autoStartBase = ab;
  76.     autoStartParameter = ap;
  77.  
  78.     setFrameTime(ftime);
  79. }
  80.  
  81. public void setFrameTime(int ftime) {
  82.     frameTime = new int[frames.length];
  83.     int i;
  84.     for (i=0; i < frameTime.length; i++) {
  85.     frameTime[i] = ftime;
  86.     }
  87. }
  88.  
  89. public AnimationData(AnimationPlayer ap, int myid, int typ, int d,
  90.         int imgcount,int fr[], int x[], int y[]) {
  91.     parent = ap;
  92.     id = myid;
  93.     type = typ;
  94.     depth = d;
  95.     images = new Image[imgcount+2];
  96.     frames = fr;
  97.     xpos = x;
  98.     ypos = y;
  99. }
  100.  
  101. public void setImages(String imgfile, int from, int to, int idx) {
  102.     int i;
  103.     for (i=from; i <= to; i++, idx++) {
  104.     images[idx] = parent.getImage(imgfile + i + ".gif");
  105.     }
  106. }
  107.  
  108. public void setSound(String aufile, int frame) {
  109.     sound = parent.getAudioData(aufile);
  110.     soundFrame = frame;
  111. }
  112.  
  113. public void        setCurFrame(int f)    {curFrame = f;}
  114. public void        Reverse()    {reverse = !reverse;}
  115.  
  116. public int        getID()        {return id;}
  117. public int        getType()    {return type;}
  118. public int        getDepth()    {return depth;}
  119. public int        getCurFrame()    {return curFrame;}
  120. public int        getLastFrame()    {return frames.length-1;}
  121. public boolean        getReverse()    {return reverse;}
  122. public int        x()         {return xpos[curFrame];}
  123. public int        y()         {return ypos[curFrame];}
  124. public boolean         isSoundFrame()    {return curFrame != -1 && 
  125.                         curFrame == soundFrame;}
  126. public Image getCurrentImage() {
  127.     if (curFrame == -1 || frames[curFrame] == -1) {
  128.     return null;
  129.     } else {
  130.     return images[frames[curFrame]];
  131.     }
  132. }
  133.  
  134. public int getFrameTime() {
  135.     if (curFrame == 0) {
  136.     int base = started ? autoStartBase : firstStartBase;
  137.     int param = started ? autoStartParameter : firstStartParameter;
  138.     started = true;
  139.     if (base > 0) {
  140.         return base+(int)(Math.random()*param+0.5);
  141.     } else {
  142.         return frameTime[curFrame];
  143.     }
  144.     } else if (curFrame == -1 || frames[curFrame] == -1) {
  145.     return -1;
  146.     } else {
  147.     return frameTime[curFrame];
  148.     }
  149. }
  150.  
  151. public void nextFrame() {
  152.     if (type == TY_STATIC) {
  153.     curFrame = 0;
  154.     return;
  155.     }
  156.     if (type == TY_TOGGLE) {
  157.     if (reverse) {
  158.         --curFrame;
  159.     } else {
  160.         ++curFrame;
  161.     }
  162.     return;
  163.     }
  164.  
  165.     curFrame++;
  166.     if (type == TY_AUTO) {
  167.     if (curFrame >= getLastFrame()) {
  168.         curFrame = 0;
  169.     }
  170.     } else if (type == TY_CLICK) {            // click
  171.     if (curFrame >= getLastFrame()) {
  172.         curFrame = 0;
  173.     }
  174.     } else if (type == TY_ONCE) {
  175.     if (curFrame >= getLastFrame()) {
  176.         curFrame = getLastFrame();
  177.     }
  178.     }
  179. }
  180.  
  181. public void playSound() {
  182.     if (sound != null) {
  183.     AudioPlayer.player.start(new AudioDataStream(sound));
  184.     }
  185. }
  186.  
  187. }
  188.