用appletviewer 在目标板可以显示视频图片
而远程用IE打开 则总是只显示一幅图像
目标板 DM365 运行的服务器 是 BOA代码如下,求大神指导import java.awt.*;
import java.applet.*;
import java.net.*;public class HelloApplet extends Applet {
private Image myImage = null; private int startIndex = 1;
private int endIndex = 9;
private int currentIndex; private int sleepTime = 33; private String fileBase;
private String fileExtension; private Thread timerThread;
private volatile boolean noStopRequested;
private MediaTracker tracker; public void init() {
tracker = new MediaTracker(this);
//String strStartIndex = getParameter("STARTINDEX");
//String strEndIndex = getParameter("ENDINDEX");
//String strSleepTime = getParameter("MSDELAY");
fileBase = "image";//getParameter("FILEBASE");
fileExtension = ".jpg";//getParameter("FILEEXT"); /* if (strStartIndex != null)
startIndex = Integer.parseInt(strStartIndex);
if (strEndIndex != null)
endIndex = Integer.parseInt(strEndIndex);
if (strSleepTime != null)
sleepTime = Integer.parseInt(strSleepTime);*/ startThread();
} private void startThread() {
noStopRequested = true; Runnable r = new Runnable() {
public void run() {
runWork();
}
}; timerThread = new Thread(r, "Timer");
timerThread.start();
} private void stopThread() {
noStopRequested = false;
timerThread.interrupt();
} private void runWork() {
currentIndex = startIndex;
boolean imageload = false;
int numLossImgs;
long supposedTime;
int totalImages;
long currTime; supposedTime = System.currentTimeMillis()+33;
totalImages = endIndex - startIndex + 1;
try {
while ( noStopRequested ) {
if( imageload == true ) {
tracker.removeImage(myImage);
myImage.flush();
myImage = null;
}
myImage = getImage(getDocumentBase(), fileBase + Integer.toString(currentIndex) + fileExtension);
tracker.addImage(myImage, 0);
tracker.waitForAll();
imageload = true; repaint(); currTime = System.currentTimeMillis();
if ( currTime < supposedTime ) {
currentIndex = currentIndex + 1;
if( currentIndex > endIndex )
currentIndex = startIndex;
supposedTime += 33;
Thread.sleep( supposedTime - currTime );
} else {
numLossImgs = (int)((currTime-supposedTime)/33 + 1);
currentIndex += numLossImgs;
while ( currentIndex > endIndex )
currentIndex -= totalImages;
supposedTime += numLossImgs*33;
Thread.sleep( supposedTime - currTime );
}
}
} catch ( InterruptedException x ) {
Thread.currentThread().interrupt();
}
} public void paint(Graphics g) {
update(g);
} public void update(Graphics g) {
if( myImage != null ) {
g.drawImage(myImage, 0, 0, this);
}
} public void destroy() {
stopThread();
myImage.flush();
myImage = null;
}
}
而远程用IE打开 则总是只显示一幅图像
目标板 DM365 运行的服务器 是 BOA代码如下,求大神指导import java.awt.*;
import java.applet.*;
import java.net.*;public class HelloApplet extends Applet {
private Image myImage = null; private int startIndex = 1;
private int endIndex = 9;
private int currentIndex; private int sleepTime = 33; private String fileBase;
private String fileExtension; private Thread timerThread;
private volatile boolean noStopRequested;
private MediaTracker tracker; public void init() {
tracker = new MediaTracker(this);
//String strStartIndex = getParameter("STARTINDEX");
//String strEndIndex = getParameter("ENDINDEX");
//String strSleepTime = getParameter("MSDELAY");
fileBase = "image";//getParameter("FILEBASE");
fileExtension = ".jpg";//getParameter("FILEEXT"); /* if (strStartIndex != null)
startIndex = Integer.parseInt(strStartIndex);
if (strEndIndex != null)
endIndex = Integer.parseInt(strEndIndex);
if (strSleepTime != null)
sleepTime = Integer.parseInt(strSleepTime);*/ startThread();
} private void startThread() {
noStopRequested = true; Runnable r = new Runnable() {
public void run() {
runWork();
}
}; timerThread = new Thread(r, "Timer");
timerThread.start();
} private void stopThread() {
noStopRequested = false;
timerThread.interrupt();
} private void runWork() {
currentIndex = startIndex;
boolean imageload = false;
int numLossImgs;
long supposedTime;
int totalImages;
long currTime; supposedTime = System.currentTimeMillis()+33;
totalImages = endIndex - startIndex + 1;
try {
while ( noStopRequested ) {
if( imageload == true ) {
tracker.removeImage(myImage);
myImage.flush();
myImage = null;
}
myImage = getImage(getDocumentBase(), fileBase + Integer.toString(currentIndex) + fileExtension);
tracker.addImage(myImage, 0);
tracker.waitForAll();
imageload = true; repaint(); currTime = System.currentTimeMillis();
if ( currTime < supposedTime ) {
currentIndex = currentIndex + 1;
if( currentIndex > endIndex )
currentIndex = startIndex;
supposedTime += 33;
Thread.sleep( supposedTime - currTime );
} else {
numLossImgs = (int)((currTime-supposedTime)/33 + 1);
currentIndex += numLossImgs;
while ( currentIndex > endIndex )
currentIndex -= totalImages;
supposedTime += numLossImgs*33;
Thread.sleep( supposedTime - currTime );
}
}
} catch ( InterruptedException x ) {
Thread.currentThread().interrupt();
}
} public void paint(Graphics g) {
update(g);
} public void update(Graphics g) {
if( myImage != null ) {
g.drawImage(myImage, 0, 0, this);
}
} public void destroy() {
stopThread();
myImage.flush();
myImage = null;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货