home *** CD-ROM | disk | FTP | other *** search
- import browser.*;
- import browser.audio.*;
- import awt.*;
- import net.www.html.*;
- import java.io.*;
- import net.www.*;
- import java.util.*;
-
- #include "anim.h";
-
- class AnimationData {
-
- AnimationPlayer parent;
- int id;
-
- // Image data
- int type;
- int depth;
- Image images[];
-
- // Audio data
- AudioData sound = null;
- int soundFrame = -1; // frame number of starting sound
-
- // Frame data
- int frames[]; // index for images
- int xpos[], ypos[];
- int frameTime[];
-
- boolean started = false;
- int firstStartBase = -1;
- int firstStartParameter = -1;
- int autoStartBase = -1;
- int autoStartParameter = -1;
- int curFrame = -1;
-
- boolean reverse = false;
-
-
- public AnimationData() { // dummy or sentinel
- depth = -1000;
- }
-
- public AnimationData(AnimationPlayer op, int myid, int typ, int d,
- String imgfile, int n, int fr[], int x[], int y[]) {
- parent = op;
- id = myid;
- type = typ;
- depth = d;
- frames = fr;
- xpos = x;
- ypos = y;
-
- images = new Image[n+2];
- if (imgfile != null) {
- int i;
- for (i=0; i <= n; i++) {
- images[i] = parent.getImage(imgfile + i + ".gif");
- }
- images[n+1] = parent.getImage(imgfile + "99.gif");
- }
- }
-
- public void setFrameTime(int ftime[], int fb, int fp, int ab, int ap) {
- frameTime = ftime;
- firstStartBase = fb;
- firstStartParameter = fp;
- autoStartBase = ab;
- autoStartParameter = ap;
- }
-
- public void setFrameTime(int ftime, int fb, int fp, int ab, int ap) {
- firstStartBase = fb;
- firstStartParameter = fp;
- autoStartBase = ab;
- autoStartParameter = ap;
-
- setFrameTime(ftime);
- }
-
- public void setFrameTime(int ftime) {
- frameTime = new int[frames.length];
- int i;
- for (i=0; i < frameTime.length; i++) {
- frameTime[i] = ftime;
- }
- }
-
- public AnimationData(AnimationPlayer ap, int myid, int typ, int d,
- int imgcount,int fr[], int x[], int y[]) {
- parent = ap;
- id = myid;
- type = typ;
- depth = d;
- images = new Image[imgcount+2];
- frames = fr;
- xpos = x;
- ypos = y;
- }
-
- public void setImages(String imgfile, int from, int to, int idx) {
- int i;
- for (i=from; i <= to; i++, idx++) {
- images[idx] = parent.getImage(imgfile + i + ".gif");
- }
- }
-
- public void setSound(String aufile, int frame) {
- sound = parent.getAudioData(aufile);
- soundFrame = frame;
- }
-
- public void setCurFrame(int f) {curFrame = f;}
- public void Reverse() {reverse = !reverse;}
-
- public int getID() {return id;}
- public int getType() {return type;}
- public int getDepth() {return depth;}
- public int getCurFrame() {return curFrame;}
- public int getLastFrame() {return frames.length-1;}
- public boolean getReverse() {return reverse;}
- public int x() {return xpos[curFrame];}
- public int y() {return ypos[curFrame];}
- public boolean isSoundFrame() {return curFrame != -1 &&
- curFrame == soundFrame;}
- public Image getCurrentImage() {
- if (curFrame == -1 || frames[curFrame] == -1) {
- return null;
- } else {
- return images[frames[curFrame]];
- }
- }
-
- public int getFrameTime() {
- if (curFrame == 0) {
- int base = started ? autoStartBase : firstStartBase;
- int param = started ? autoStartParameter : firstStartParameter;
- started = true;
- if (base > 0) {
- return base+(int)(Math.random()*param+0.5);
- } else {
- return frameTime[curFrame];
- }
- } else if (curFrame == -1 || frames[curFrame] == -1) {
- return -1;
- } else {
- return frameTime[curFrame];
- }
- }
-
- public void nextFrame() {
- if (type == TY_STATIC) {
- curFrame = 0;
- return;
- }
- if (type == TY_TOGGLE) {
- if (reverse) {
- --curFrame;
- } else {
- ++curFrame;
- }
- return;
- }
-
- curFrame++;
- if (type == TY_AUTO) {
- if (curFrame >= getLastFrame()) {
- curFrame = 0;
- }
- } else if (type == TY_CLICK) { // click
- if (curFrame >= getLastFrame()) {
- curFrame = 0;
- }
- } else if (type == TY_ONCE) {
- if (curFrame >= getLastFrame()) {
- curFrame = getLastFrame();
- }
- }
- }
-
- public void playSound() {
- if (sound != null) {
- AudioPlayer.player.start(new AudioDataStream(sound));
- }
- }
-
- }
-