翻译翻译这360度环景的javaapplet 效果:http://www.chinavr.net/car/sharan/300.htm 谢谢 (100分)

  • 主题发起人 thomashukaidi
  • 开始时间
T

thomashukaidi

Unregistered / Unconfirmed
GUEST, unregistred user!

// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: objplay.java
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;
import java.awt.*;
import java.awt.image.RGBImageFilter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Hashtable;
import java.util.StringTokenizer;

public class objplay extends Applet
implements Runnable
{
private static final boolean kbool_Branded = true;
private static final String kstr_NameVers = "ObjPlay v1.06";
private static final String kstr_BrandNAME = '/251' + " " + "chinavr.net";
private static final String kstr_BrandURL = "www.myearth.com.cn";
private static final String kstr_BrandNAME_default = '/251' + " nemeng";
private static final String kstr_BrandURL_default = "www.nemeng.com/java/";
private static final String kstr_CopyR = "Applet (c) Andrew Nemeth Australia 2000 - nemeng.com";
private static final String kstr_LoadingImg = "Loading images";
private static final String kstr_LoadingHS = "Assembling Hotspots...";
private static final String kstr_startupHelp = "Click &
drag L or R to pan";
private static final String kstr_runtimeHelp = "[Spacebar] to show/hide hotspot guides...";
private static final String kstr_StartBlurb = "===== STARTED ObjPlay v1.06 =====";
private static final String kstr_EndBlurb = "===== ObjPlay v1.06 STOPPED =====";
private static final int kint_Drag_Slack = 1;
private static final int kint_BorderMargin = 5;
private static final int kint_ThinBorder = 3;
private static final int kint_FontSize = 10;
private static final int kint_MaxHotspots = 1000;
private static final int kint_NoHS = -1;
private static final int kint_InBrandBox = -2;
private static final int kcurs_DEFAULT = 0;
private static final int kcurs_WAIT = 3;
private static final int kcurs_HAND = 13;
private static final int kcurs_PAN_L = 10;
private static final int kcurs_PAN_R = 11;
private static final int kcurs_POINT = 12;
private static final Color kcol_BordFill;
private static final Color kcol_Hilite;
private static final Color kcol_Shadow;
private static final Color kcol_BlurbTxt;
private Thread f_threadThisApplet;
public Graphics f_graphOffscrn;
private Image f_imgOffscrn;
private Image f_imgSTRIP;
private Vector f_vectFrameOffsets;
private Vector f_vectHS;
private int f_intHSpotNdx;
private int f_intNumFrames;
private int f_intCurrentFrame;
private int f_intCURSOR;
private int f_intPaintFail;
private int f_intBorderMargin;
private boolean f_boolFirstTime;
private boolean f_boolOldJDK;
private boolean f_boolMSJDK;
private boolean f_boolShowAllHS;
private boolean f_boolAppletDie;
private boolean f_boolFirstMUp;
private boolean f_boolHSFrame;
private boolean f_boolLoop;
private boolean f_boolCWise;
private boolean f_boolInitDone;
private boolean f_boolFlushRAM;
private boolean f_boolStartAnimate;
private boolean f_boolAnimDirection;
private boolean f_boolCParamOK;
private boolean f_boolMUpDone;
private String f_strSTRIPfilename;
private String f_strLoadPrompt;
private String f_strUserPrompt;
private String f_strBrandPrompt;
private String f_strBrandURL;
private Font f_font_Blurb;
private FontMetrics f_fmetrics_Blurb;
private Rectangle f_rectBrandBox;
private Point f_pointDrawOffset;
private Point f_pointMDown;
private Point f_pointDragPos;
public String getAppletInfo()
{
return "Applet (c) Andrew Nemeth Australia 2000 - nemeng.com";
}
public String[][] getParameterInfo()
{
String as[][] = {
{
"author_copyright", "String", "Copyright code - MUST be as provided else
applet is crippled!"
}, {
"filmstrip_file", "FILE", "Directory/name of filmstrip (GIF/JPEG) image"
}, {
"num_frames", "int", "Number of frames in filstrip image"
}, {
"loop", "boolean", "Allow continuous panning? (yes or no - optional)"
}, {
"clockwise", "boolean", "Pan left or right? (yes or no - optional)"
}, {
"start_frame", "int", "Frame # to display at start up (optional)"
}, {
"start_showHS", "boolean", "Show all HSpots at start up? (no,thin,std - optional)"
}, {
"cache_img", "boolean", "Flush images from RAM when new browser page is loaded? (yes or no - optional)"
}, {
"draw_border", "string", "Draw border around player? (yes or no - optional)"
}, {
"hs_solid_panel", "boolean", "Display HSpot as solid colour or just put a border around it? (yes or no - optional)"
}, {
"hotspot_XX", "String", "_XX is the frame hspot is in;
x1, y1, x2, y2 , colour, Target URL, Target frame, MsOver blurb"
}
};
return as;
}
public void init()
{
int i = size().width;
int j = size().height;
System.err.println(" ");
System.err.println("===== STARTED ObjPlay v1.06 =====");
System.err.println(" ");
System.err.println(" Applet (c) Andrew Nemeth Australia 2000 - nemeng.com");
String s1 = System.getProperty("java.version");
String s2 = System.getProperty("java.vendor");
String s3 = System.getProperty("os.name");
String s4 = System.getProperty("os.arch");
System.err.println(" ");
System.err.println(" java.version ==> " + s1);
System.err.println(" java.vendor ==> " + s2);
System.err.println(" os.name ==> " + s3);
System.err.println(" os.arch ==> " + s4);
System.err.println(" ");
f_boolOldJDK = s1.startsWith("1.0");
f_boolMSJDK = s2.startsWith("Microsoft") &&
s3.startsWith("Win");
f_vectHS = f_vectFrameOffsets = null;
f_pointDrawOffset = null;
f_intHSpotNdx = -1;
f_intCurrentFrame = 1;
f_boolInitDone = f_boolAppletDie = false;
f_strUserPrompt = null;
f_intPaintFail = 0;
f_intCURSOR = 0;
f_rectBrandBox = new Rectangle();
f_boolFirstMUp = f_boolStartAnimate = f_boolAnimDirection = true;
f_strLoadPrompt = "Loading images";
String s5 = "Courier";
int k = 10;
if(s3.startsWith("Mac"))
s5 = "Geneva";
else
if(s3.startsWith("Win"))
s5 = "Arial";
do
{
try
{
f_font_Blurb = new Font(s5, 0, k);
f_fmetrics_Blurb = getFontMetrics(f_font_Blurb);
}
catch(Exception exception)
{
myFail("Font &
FMetrics alloc failure", exception);
return;
}
if(f_fmetrics_Blurb.getHeight() >= 10)
break;
k += 2;
f_font_Blurb = null;
f_fmetrics_Blurb = null;
} while(true);
try
{
f_imgOffscrn = createImage(i, j);
f_graphOffscrn = f_imgOffscrn.getGraphics();
f_strSTRIPfilename = getParameter("filmstrip_file");
if(f_strSTRIPfilename == null)
throw new Exception();
f_imgSTRIP = getImage(getDocumentBase(), f_strSTRIPfilename);
f_intNumFrames = 1;
String s = getParameter("num_frames");
if(s != null)
f_intNumFrames = Integer.valueOf(s).intValue();
if(f_intNumFrames <= 0)
f_intNumFrames = 1;
f_boolLoop = true;
s = getParameter("loop");
if(s != null)
f_boolLoop = !s.equalsIgnoreCase("no") &amp;&amp;
!s.equalsIgnoreCase("false");
f_boolCWise = true;
s = getParameter("clockwise");
if(s != null)
f_boolCWise = s.equalsIgnoreCase("yes") || s.equalsIgnoreCase("true");
f_boolFlushRAM = true;
s = getParameter("cache_img");
if(s != null)
f_boolFlushRAM = !s.equalsIgnoreCase("yes") &amp;&amp;
!s.equalsIgnoreCase("true");
f_intBorderMargin = 5;
s = getParameter("draw_border");
if(s != null)
if(s.equalsIgnoreCase("no") || s.equalsIgnoreCase("false"))
f_intBorderMargin = 0;
else
if(s.equalsIgnoreCase("thin"))
f_intBorderMargin = 3;
f_boolHSFrame = true;
s = getParameter("hs_solid_panel");
if(s != null)
f_boolHSFrame = !s.equalsIgnoreCase("yes") &amp;&amp;
!s.equalsIgnoreCase("true");
f_boolShowAllHS = true;
s = getParameter("start_showHS");
if(s != null)
f_boolShowAllHS = !s.equalsIgnoreCase("no") &amp;&amp;
!s.equalsIgnoreCase("false");
f_boolCParamOK = false;
f_strBrandPrompt = '/251' + " nemeng";
f_strBrandURL = "www.nemeng.com/java/";
s = getParameter("author_copyright");
if(s != null)
f_boolCParamOK = s.equalsIgnoreCase("Applet (c) Andrew Nemeth Australia 2000 - nemeng.com");
if(f_boolCParamOK)
{
f_strBrandPrompt = '/251' + " " + "myearth.com.cn-thomas";
f_strBrandURL = "www.myearth.com.cn";
return;
}
}
catch(Exception _ex)
{
if(f_strSTRIPfilename == null)
{
f_imgSTRIP = null;
f_strSTRIPfilename = "";
f_boolAppletDie = true;
myFail("filmstrip_file param empty or missing!", null);
}
}
}
public void start()
{
if(f_threadThisApplet == null)
{
f_threadThisApplet = new Thread(this);
f_threadThisApplet.start();
}
}
public void run()
{
f_threadThisApplet.setPriority(3);
mySetCursor(3);
repaint();
if(!f_boolInitDone)
{
if(myImgLoad(f_imgSTRIP, f_strSTRIPfilename))
{
f_strLoadPrompt = "Assembling Hotspots...";
repaint();
f_vectHS = myBuildHSVect(f_imgSTRIP, 1000);
}
System.gc();
f_boolInitDone = true;
mySetCursor(0);
}
if(f_boolInitDone)
{
if(f_intNumFrames == 1)
f_boolStartAnimate = false;
while(f_boolStartAnimate)
{
repaint();
myThreadDelay(333);
myAdvanceFrame(f_boolAnimDirection);
if(f_intCurrentFrame == 1 || f_intNumFrames == f_intCurrentFrame)
f_boolAnimDirection ^= true;
}
}
repaint();
}
public boolean mouseEnter(Event event, int i, int j)
{
try
{
if(!f_boolInitDone || f_boolAppletDie)
{
return false;
} else
{
requestFocus();
getAppletContext().showStatus(f_vectHS == null ? "Click &amp;
drag L or R to pan" : "[Spacebar] to show/hide hotspot guides...");
f_boolMUpDone = true;
mySetCursor(0);
return true;
}
}
catch(NullPointerException _ex)
{
return false;
}
}
public boolean mouseExit(Event event, int i, int j)
{
try
{
if(!f_boolInitDone || f_boolAppletDie)
{
return false;
} else
{
f_intHSpotNdx = -1;
repaint();
return true;
}
}
catch(NullPointerException _ex)
{
return false;
}
}
public boolean mouseMove(Event event, int i, int j)
{
byte byte0 = -1;
try
{
if(!f_boolInitDone || f_boolAppletDie)
return false;
if(f_rectBrandBox.inside(i, j))
{
if(f_intHSpotNdx != -2)
{
getAppletContext().showStatus(f_strBrandURL);
mySetCursor(12);
}
f_intHSpotNdx = -2;
} else
if(!f_boolStartAnimate)
{
int k = myMouseInHS(i, j);
if(f_intHSpotNdx != k)
{
if(f_boolMUpDone)
if(k >= 0)
{
mySetCursor(12);
} else
{
mySetCursor(0);
getAppletContext().showStatus(f_vectHS == null ? "Click &amp;
drag L or R to pan" : "[Spacebar] to show/hide hotspot guides...");
}
f_intHSpotNdx = k;
repaint();
}
}
return true;
}
catch(NullPointerException _ex)
{
return false;
}
}
public boolean mouseDown(Event event, int i, int j)
{
try
{
if(!f_boolInitDone || f_boolAppletDie || !f_boolMUpDone)
return false;
f_pointMDown = f_pointDragPos = new Point(i, j);
f_boolMUpDone = false;
if(f_intHSpotNdx == -2 &amp;&amp;
f_intNumFrames > 1)
mySetCursor(11);
return true;
}
catch(NullPointerException _ex)
{
return false;
}
}
public boolean mouseDrag(Event event, int i, int j)
{
int byte0 = 0;
try
{
if(!f_boolInitDone || f_boolAppletDie)
return false;
if(f_intNumFrames > 1)
{
f_boolMUpDone = f_boolStartAnimate = false;
int k = f_pointDragPos.x - i;
if(Math.abs(k) > 1)
{
byte0 = k <= 0 ? 10 : 11;
myAdvanceFrame(k > 0);
}
if(f_boolOldJDK)
byte0 = 13;
if(byte0 != 0)
mySetCursor(byte0);
f_pointDragPos = new Point(i, j);
f_intHSpotNdx = -1;
}
return true;
}
catch(NullPointerException _ex)
{
return false;
}
}
public boolean mouseUp(Event event, int i, int j)
{
byte byte0 = -1;
try
{
if(!f_boolInitDone || f_boolAppletDie)
return false;
f_boolStartAnimate = false;
f_boolMUpDone = true;
int k = myMouseInHS(i, j);
Object obj = null;
String s = "http://";
String s1 = "_top";
if(f_intHSpotNdx != -1 &amp;&amp;
k == f_intHSpotNdx)
try
{
op_hs op_hs1 = (op_hs)f_vectHS.elementAt(f_intHSpotNdx);
URL url = op_hs1.getTargetURL(getDocumentBase());
s1 = op_hs1.getTargetFrame();
getAppletContext().showDocument(url, s1);
}
catch(ArrayIndexOutOfBoundsException _ex) { }
else
if(f_intHSpotNdx == -2)
try
{
s = s + f_strBrandURL;
URL url1 = new URL(getDocumentBase(), s);
getAppletContext().showDocument(url1, s1);
}
catch(MalformedURLException _ex) { }
else
if(!f_boolFirstMUp &amp;&amp;
Math.abs(f_pointMDown.x - i) <= 1)
myAdvanceFrame(event.x < bounds().width / 2);
f_intHSpotNdx = -1;
f_boolFirstMUp = false;
repaint();
mySetCursor(0);
return true;
}
catch(NullPointerException _ex)
{
return false;
}
}
public boolean keyDown(Event event, int i)
{
if(event.id == 401)
switch((char)i)
{
case 32: // ' '
f_boolStartAnimate = false;
f_boolShowAllHS = !f_boolShowAllHS;
repaint();
break;
default:
f_boolStartAnimate = false;
break;
}
else
if(event.id == 403)
switch(i)
{
case 1006:
myAdvanceFrame(true);
break;
case 1007:
myAdvanceFrame(false);
break;
default:
f_boolStartAnimate = false;
break;
}
return true;
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
try
{
int i = size().width;
int j = size().height;
int k = f_imgSTRIP.getWidth(this);
int l = f_imgSTRIP.getHeight(this) / f_intNumFrames;
int i1 = 0;
int j1 = 0;
boolean flag = false;
int l1 = i;
int j2 = j;
Graphics g1 = f_graphOffscrn.create();
if(bounds().width <= 0 || f_imgOffscrn == null)
return;
if(f_boolAppletDie)
{
g1.setColor(Color.red);
g1.fillRect(0, 0, i, j);
} else
{
if((i > k + 2 * f_intBorderMargin || j > l + 2 * f_intBorderMargin) &amp;&amp;
k > 0)
{
g1.setColor(kcol_BordFill);
g1.fillRect(0, 0, i, j);
String s = "Recommend applet WIDTH = " + k + " &amp;
HEIGHT = " + l;
g1.setFont(f_font_Blurb);
int k2 = l + 15;
g1.setColor(Color.black);
g1.drawString(s, 11, k2 + 1);
g1.setColor(kcol_BlurbTxt);
g1.drawString(s, 10, k2);
}
if(!f_boolInitDone)
{
if(f_boolMSJDK)
{
g1.setColor(kcol_BordFill);
g1.fillRect(0, 0, i, j);
g1.setFont(new Font("Arial", 1, 12));
int l2 = j / 2;
g1.setColor(Color.black);
g1.drawString(f_strLoadPrompt, 11, l2 + 1);
g1.setColor(kcol_BlurbTxt);
g1.drawString(f_strLoadPrompt, 10, l2);
} else
{
int k1 = f_intNumFrames < 3 ? 1 : 3;
int i2 = i / k1;
int i3 = j * k1;
while(k1-- > 0)
{
g1.drawImage(f_imgSTRIP, i1, j1, i2, i3, null);
i1 += i2;
j1 -= size().height;
}
f_strUserPrompt = f_strLoadPrompt;
}
} else
{
g1.clipRect(0, 0, k, l);
g1.drawImage(f_imgSTRIP, f_pointDrawOffset.x, f_pointDrawOffset.y, null);
myHiliteHS(g1);
if(f_boolStartAnimate)
f_strUserPrompt = "Click &amp;
drag L or R to pan";
}
}
g1 = null;
g1 = f_graphOffscrn.create();
myDrawPanelBorder(g1, f_intBorderMargin);
if(f_strUserPrompt != null)
{
String s1 = f_strUserPrompt;
myBlurbBox(g1, s1, kcol_BlurbTxt, new Rectangle());
if(f_boolAppletDie)
f_boolInitDone = true;
else
f_strUserPrompt = null;
} else
if(f_boolMUpDone &amp;&amp;
!f_boolStartAnimate)
{
String s2 = f_strBrandPrompt;
myBlurbBox(g1, s2, Color.lightGray, f_rectBrandBox);
}
g.drawImage(f_imgOffscrn, 0, 0, this);
getToolkit().sync();
return;
}
catch(NullPointerException nullpointerexception)
{
if(f_intPaintFail++ < 3)
{
repaint();
return;
} else
{
myFail("Paint failed: Abort", nullpointerexception);
return;
}
}
}
public void stop()
{
if(f_threadThisApplet != null &amp;&amp;
f_threadThisApplet.isAlive())
f_threadThisApplet.stop();
f_threadThisApplet = null;
System.err.println("===== ObjPlay v1.06 STOPPED =====");
System.err.println(" ");
}
public void destroy()
{
if(f_boolFlushRAM)
{
if(f_imgSTRIP != null)
f_imgSTRIP.flush();
if(f_imgOffscrn != null)
f_imgOffscrn.flush();
}
}
protected void finalize()
{
if(f_boolFlushRAM)
{
f_imgSTRIP = null;
f_imgOffscrn = null;
f_vectHS = null;
}
}
private void myMoreInit()
{
f_pointDrawOffset = new Point(0, 0);
f_vectFrameOffsets = new Vector();
int j = f_imgSTRIP.getHeight(this) / f_intNumFrames;
f_vectFrameOffsets.addElement(f_pointDrawOffset);
for(int i = 1;
i <= f_intNumFrames;
i++)
{
int l = 0;
int k = -(j * (i - 1));
f_vectFrameOffsets.addElement(new Point(l, k));
}
String s = getParameter("start_frame");
f_intCurrentFrame = s != null ? Integer.valueOf(s).intValue() : 1;
if(f_intCurrentFrame <= 0 || f_intCurrentFrame > f_intNumFrames)
{
f_intCurrentFrame = 1;
return;
} else
{
f_pointDrawOffset = null;
f_pointDrawOffset = (Point)f_vectFrameOffsets.elementAt(f_intCurrentFrame);
return;
}
}
private boolean myImgLoad(Image image, String s)
{
if(image == null || s == "")
return false;
MediaTracker mediatracker = new MediaTracker(this);
boolean flag = false;
boolean flag1 = false;
Object obj = null;
int i = 0;
byte byte0 = -1;
byte byte1 = -1;
int l = 3;
byte byte2 = 2;
mediatracker.addImage(image, 0);
do
{
repaint();
myThreadDelay(100);
int j = image.getWidth(this);
int k = image.getHeight(this);
if(j > 0 &amp;&amp;
k > 0 &amp;&amp;
!flag1)
{
myMoreInit();
flag1 = true;
}
int i1 = mediatracker.statusID(0, true);
if(i1 == 2 || i1 == 4)
{
image = null;
if(l-- > 0)
{
myFail("Image load failed : reloading...", null);
Image image1 = null;
image1 = getImage(getDocumentBase(), s);
image = image1;
} else
{
myFail("Image missing or bad : abort", null);
f_boolAppletDie = true;
return false;
}
} else
{
flag = i1 == 8;
}
} while(!flag &amp;&amp;
++i < 1500);
return flag;
}
private Vector myBuildHSVect(Image image, int i)
{
boolean flag = false;
Object obj = null;
Object obj1 = null;
try
{
Dimension dimension = new Dimension(image.getWidth(this), image.getHeight(this));
Vector vector = new Vector();
for(int j = 1;
j < i;
j++)
{
String s = getParameter("hotspot_" + String.valueOf(j));
if(s == null)
break;
op_hs op_hs1 = new op_hs();
if(op_hs1.setData(s, dimension))
{
if(!f_boolHSFrame)
op_hs1.setHSImg(myCreateHSImg(image, op_hs1));
vector.addElement(op_hs1);
flag = true;
} else
{
op_hs1 = null;
}
}
if(!flag)
{
vector = null;
throw new NullPointerException();
} else
{
return vector;
}
}
catch(OutOfMemoryError _ex)
{
return null;
}
catch(NullPointerException _ex)
{
return null;
}
}
private Image myCreateHSImg(Image image, op_hs op_hs1)
{
CropImageFilter cropimagefilter = null;
FilteredImageSource filteredimagesource = null;
Rectangle rectangle = null;
FilteredImageSource filteredimagesource1 = null;
Image image1 = null;
int i = bounds().width;
int j = bounds().height;
rectangle = op_hs1.getRect();
cropimagefilter = new CropImageFilter(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
filteredimagesource = new FilteredImageSource(image.getSource(), cropimagefilter);
filteredimagesource1 = new FilteredImageSource(filteredimagesource, op_hs1);
image1 = createImage(filteredimagesource1);
f_graphOffscrn.drawImage(image1, i, j, null);
return image1;
}
private void myAdvanceFrame(boolean flag)
{
if(f_intNumFrames <= 1)
return;
flag = f_boolCWise ? flag : !flag;
int i = flag ? ++f_intCurrentFrame : --f_intCurrentFrame;
if(i < 1)
i = f_boolLoop ? f_intNumFrames : 1;
else
if(i > f_intNumFrames)
i = f_boolLoop ? 1 : f_intNumFrames;
try
{
f_pointDrawOffset = null;
f_pointDrawOffset = (Point)f_vectFrameOffsets.elementAt(i);
f_intCurrentFrame = i;
repaint();
return;
}
catch(ArrayIndexOutOfBoundsException _ex)
{
return;
}
}
private int myMouseInHS(int i, int j)
{
if(f_vectHS == null)
return -1;
Rectangle rectangle1 = new Rectangle();
int k = f_vectHS.size();
for(int l = 0;
l < k;
l++)
try
{
op_hs op_hs1 = (op_hs)f_vectHS.elementAt(l);
Rectangle rectangle = op_hs1.getRect();
rectangle1.reshape(rectangle.x + f_pointDrawOffset.x, rectangle.y + f_pointDrawOffset.y, rectangle.width, rectangle.height);
if(rectangle1.inside(i, j))
return l;
}
catch(ArrayIndexOutOfBoundsException _ex) { }
return -1;
}
private void myHiliteHS(Graphics g)
{
if(f_vectHS == null || f_boolStartAnimate || f_intHSpotNdx == -1 &amp;&amp;
!f_boolShowAllHS)
return;
Rectangle rectangle1 = new Rectangle();
int i = f_boolShowAllHS ? 0 : f_intHSpotNdx;
int j = f_vectHS.size();
do
try
{
op_hs op_hs1 = (op_hs)f_vectHS.elementAt(i);
Rectangle rectangle = op_hs1.getRect();
if(i == f_intHSpotNdx)
f_strUserPrompt = op_hs1.getMOverStr();
rectangle1.reshape(rectangle.x + f_pointDrawOffset.x, rectangle.y + f_pointDrawOffset.y, rectangle.width, rectangle.height);
if(bounds().intersects(rectangle1))
{
g.setColor(op_hs1.getColor());
g.drawRect(rectangle1.x + 1, rectangle1.y + 1, rectangle1.width - 2, rectangle1.height - 2);
if(i == f_intHSpotNdx)
{
g.drawRect(rectangle1.x, rectangle1.y, rectangle1.width - 2, rectangle1.height - 2);
Image image = op_hs1.getHSImg();
URL url = op_hs1.getTargetURL(getDocumentBase());
if(image != null)
g.drawImage(image, rectangle1.x, rectangle1.y, null);
getAppletContext().showStatus(url.toString());
}
}
}
catch(ArrayIndexOutOfBoundsException _ex) { }
while(f_boolShowAllHS &amp;&amp;
++i < j);
}
private void myDrawPanelBorder(Graphics g, int i)
{
Dimension dimension = new Dimension(size());
int j = dimension.width - i;
int k = dimension.height - i;
int l = i - 1;
int i1 = dimension.height - 1;
int j1 = dimension.width - 1;
if(i <= 0 || j <= 20 || k <= 20)
{
return;
} else
{
g.setColor(kcol_BordFill);
g.fillRect(0, 0, dimension.width, i);
g.fillRect(0, k, dimension.width, i);
g.fillRect(0, 0, i, dimension.height);
g.fillRect(j, 0, i, dimension.height);
g.setColor(kcol_Shadow);
g.drawLine(l, l, j, l);
g.drawLine(l, l, l, k - 1);
g.drawLine(0, i1, dimension.width, i1);
g.drawLine(j1, 0, j1, i1);
g.setColor(kcol_Hilite);
g.drawLine(l, k, j, k);
g.drawLine(j, i, j, k);
g.drawLine(0, 0, dimension.width, 0);
g.drawLine(0, 0, 0, i1 - 1);
return;
}
}
private void mySetCursor(int i)
{
try
{
Frame frame = (Frame)getParent();
if(frame.getCursorType() != i)
{
frame.setCursor(i);
return;
}
}
catch(Exception _ex) { }
}
private void myThreadDelay(int i)
{
try
{
Thread.currentThread();
Thread.sleep(i);
return;
}
catch(InterruptedException _ex)
{
return;
}
}
private void myBrandBox(Graphics g, String s)
{
myBlurbBox(g, s, Color.lightGray, f_rectBrandBox);
}
private void myStatusBox(Graphics g, String s)
{
myBlurbBox(g, s, kcol_BlurbTxt, new Rectangle());
}
private void myBlurbBox(Graphics g, String s, Color color, Rectangle rectangle)
{
if(s == null || s.length() == 0)
{
return;
} else
{
int i = f_fmetrics_Blurb.getMaxAdvance();
int j = f_fmetrics_Blurb.getLeading();
int k = f_fmetrics_Blurb.getMaxAscent();
int l = f_fmetrics_Blurb.stringWidth(s) + i;
int i1 = k + f_fmetrics_Blurb.getMaxDescent() + j + j + 1;
int j1 = f_intBorderMargin;
int k1 = size().height - f_intBorderMargin - i1;
g.setColor(kcol_BordFill);
g.fillRect(j1 - 1, k1, l + 1, i1 + 1);
g.setColor(kcol_Hilite);
g.drawLine(j1 + 1, k1 - 1, (j1 + l) - 1, k1 - 1);
g.setColor(kcol_Shadow);
g.drawLine(j1 + l, k1, j1 + l, k1 + i1);
String s1 = " " + s;
g.setFont(f_font_Blurb);
g.setColor(Color.black);
g.drawString(s1, j1 + 1 + 1, k1 + j + k + 1);
g.setColor(color);
g.drawString(s1, j1 + 1, k1 + j + k);
rectangle.reshape(j1, k1, l, i1);
return;
}
}
private boolean myFail(String s, Exception exception)
{
System.err.println(s);
if(exception != null)
exception.printStackTrace();
f_strUserPrompt = s;
mySetCursor(0);
repaint();
return false;
}
public objplay()
{
f_intHSpotNdx = -1;
f_intNumFrames = -1;
f_intCurrentFrame = 1;
f_intBorderMargin = 5;
f_boolFirstTime = true;
f_boolOldJDK = true;
f_boolMSJDK = false;
f_boolShowAllHS = false;
f_boolAppletDie = false;
f_boolFirstMUp = true;
f_boolHSFrame = false;
f_boolLoop = false;
f_boolCWise = true;
f_boolInitDone = false;
f_boolFlushRAM = true;
f_boolStartAnimate = true;
f_boolAnimDirection = true;
f_boolCParamOK = false;
f_boolMUpDone = true;
}
static
{
kcol_BordFill = Color.darkGray;
kcol_Hilite = Color.lightGray;
kcol_Shadow = Color.black;
kcol_BlurbTxt = Color.yellow;
}
}

class op_hs extends RGBImageFilter
{
private static final boolean k_boolBrighter = true;
private static final int k_intPercent = 70;
private Image f_imgHS;
private Rectangle f_rectBounds;
private String f_strMsOver;
private String f_strTargetURL;
private String f_strTargetFrame;
private boolean f_boolDataOK;
private Color f_colorHS;
private int f_intRGB_R;
private int f_intRGB_G;
private int f_intRGB_B;
public op_hs()
{
f_boolDataOK = false;
f_imgHS = null;
f_colorHS = Color.green;
f_intRGB_R = f_intRGB_G = f_intRGB_B = 0;
canFilterIndexColorModel = true;
}
protected void finalize()
{
if(f_imgHS != null)
f_imgHS.flush();
f_imgHS = null;
}
public int filterRGB(int i, int j, int k)
{
int l = k >> 16 &amp;
0xff;
int i1 = k >> 8 &amp;
0xff;
int j1 = k &amp;
0xff;
int k1 = (70 * f_intRGB_R) / 255;
int l1 = (70 * f_intRGB_G) / 255;
int i2 = (70 * f_intRGB_B) / 255;
l = 255 - ((255 - l) * (100 - k1)) / 100;
i1 = 255 - ((255 - i1) * (100 - l1)) / 100;
j1 = 255 - ((255 - j1) * (100 - i2)) / 100;
if(l < 0)
l = 0;
if(l > 255)
l = 255;
if(i1 < 0)
i1 = 0;
if(i1 > 255)
i1 = 255;
if(j1 < 0)
j1 = 0;
if(j1 > 255)
j1 = 255;
return k &amp;
0xff000000 | l << 16 | i1 << 8 | j1;
}
public boolean setData(String s)
{
return setData(s, new Dimension(0x7fffffff, 0x7fffffff));
}
public boolean setData(String s, Dimension dimension)
{
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false;
boolean flag5 = false;
float f = 0.0F;
float f2 = 0.0F;
float f4 = 0.0F;
float f6 = 0.0F;
if(s == null)
return false;
try
{
StringTokenizer stringtokenizer = new StringTokenizer(s, ", ");
if(!stringtokenizer.hasMoreTokens())
return false;
float f1 = Float.valueOf(stringtokenizer.nextToken().trim()).floatValue();
float f3 = Float.valueOf(stringtokenizer.nextToken().trim()).floatValue();
float f5 = Float.valueOf(stringtokenizer.nextToken().trim()).floatValue();
float f7 = Float.valueOf(stringtokenizer.nextToken().trim()).floatValue();
int i;
int j;
int k;
int l;
if(f1 >= 0.0F &amp;&amp;
f1 <= 1.0F &amp;&amp;
f3 >= 0.0F &amp;&amp;
f3 <= 1.0F &amp;&amp;
f5 >= 0.0F &amp;&amp;
f5 <= 1.0F &amp;&amp;
f7 >= 0.0F &amp;&amp;
f7 <= 1.0F)
{
i = (int)(f1 * (float)dimension.width);
j = (int)(f3 * (float)dimension.height);
k = (int)(f5 * (float)dimension.width);
l = (int)(f7 * (float)dimension.height);
} else
if((f1 == 0.0F || f1 >= 1.0F) &amp;&amp;
(f3 == 0.0F || f3 >= 1.0F) &amp;&amp;
(f5 == 0.0F || f5 >= 1.0F) &amp;&amp;
(f7 == 0.0F || f7 >= 1.0F))
{
i = (int)f1;
j = (int)f3;
k = (int)f5;
l = (int)f7;
} else
{
return false;
}
int i1 = k - i;
int j1 = l - j;
if(i1 > 0 &amp;&amp;
j1 > 0 &amp;&amp;
i + i1 <= dimension.width &amp;&amp;
j + j1 <= dimension.height)
f_rectBounds = new Rectangle(i, j, i1, j1);
else
return false;
String s1 = stringtokenizer.nextToken().trim();
if(s1 != "")
f_colorHS = str2Color(s1);
f_intRGB_R = f_colorHS.getRed();
f_intRGB_G = f_colorHS.getGreen();
f_intRGB_B = f_colorHS.getBlue();
if(!stringtokenizer.hasMoreTokens())
return false;
f_strTargetURL = stringtokenizer.nextToken().trim();
f_strTargetFrame = stringtokenizer.nextToken(",").trim();
if(stringtokenizer.hasMoreTokens())
f_strMsOver = stringtokenizer.nextToken("").trim();
else
f_strMsOver = new String("");
f_boolDataOK = true;
}
catch(Exception _ex)
{
return false;
}
return true;
}
public void setHSImg(Image image)
{
f_imgHS = image;
}
public Image getHSImg()
{
if(!f_boolDataOK)
return null;
else
return f_imgHS;
}
public Rectangle getRect()
{
if(!f_boolDataOK)
return null;
else
return f_rectBounds;
}
public Color getColor()
{
if(!f_boolDataOK)
return null;
else
return f_colorHS;
}
public URL getTargetURL(URL url)
{
if(!f_boolDataOK)
return null;
URL url1 = null;
int i = 0;
i = f_strTargetURL.indexOf("://");
try
{
if(i > 0)
url1 = new URL(f_strTargetURL);
else
url1 = new URL(url, f_strTargetURL);
}
catch(MalformedURLException _ex)
{
return null;
}
return url1;
}
public String getTargetFrame()
{
if(!f_boolDataOK)
return null;
else
return f_strTargetFrame;
}
public String getMOverStr()
{
if(!f_boolDataOK)
return null;
else
return f_strMsOver;
}
private Color str2Color(String s)
{
if(s == null || s.length() == 0)
return Color.black;
Hashtable hashtable = new Hashtable();
hashtable.put("black", Color.black);
hashtable.put("white", Color.white);
hashtable.put("red", Color.red);
hashtable.put("green", Color.green);
hashtable.put("blue", Color.blue);
hashtable.put("cyan", Color.cyan);
hashtable.put("yellow", Color.yellow);
hashtable.put("magenta", Color.magenta);
hashtable.put("lightgray", Color.lightGray);
hashtable.put("lightgrey", Color.lightGray);
hashtable.put("gray", Color.gray);
hashtable.put("grey", Color.gray);
hashtable.put("darkgray", Color.darkGray);
hashtable.put("darkgrey", Color.darkGray);
hashtable.put("orange", Color.orange);
hashtable.put("pink", Color.pink);
String s1 = s.toLowerCase();
if(hashtable.containsKey(s1))
return (Color)hashtable.get(s1);
try
{
int i = Integer.parseInt(s, 16);
return new Color(i);
}
catch(NumberFormatException _ex)
{
return Color.black;
}
}
}
 
不知所为何事
 
翻译这javaapplet里语句的用途
 
代码太长了吧!
 
想累死人呀
 
楼主想把java applet 改成ActiveX吧 我以前做过 在不懂原理的情况下 改写很难的
建议先熟悉理论知识
 
其實這個很簡單的!看一下下面的JPG圖片就知道!
http://www.chinavr.net/car/sharan/300.jpg
隻是簡單的圖片切換而已!沒什麼技術!
你完全可以按自已的思路用DELPHI來實現!
 
to ljy_17
如何切换的
 
同意 ljy_17
用Delphi的ImageList完全可以实现,几分钟可搞定,
翻译可得花时间了!
 
但用javaapplet可在网页里用 用delphi写的不能在网页里用的
 
靠,用FLASH来写,也用不着这么多代码啊。
 
如果你實在不會切換!
那教一個簡單的:
把上面的JSP的代碼存入一個文件如abc.htm
在DELPHI中用一個控件WebBrowser1!
然後 WebBrowser1.Navigate('abc.htm')
OK搞定!
 
no jsp
is javaapplet

 
哦我理解错了 sorry 我以为是那种 360度 全景
 
To ljy_17
ljy_17
ljy_17
ljy_17
你试过了吗?真的可以???

 
如果在应用程序中实现,简直太简单了:
弄个Panel,上边放一个Image(390*150),在放一个Timer
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Image1MouseMove(Sender: TObject;
Shift: TShiftState;
X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
MyJPEG: TJPEGImage;
x0, y0: Integer;
flag: Boolean;
pos: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
MyJPEG := TJPEGImage.Create;
MyJPEG.LoadFromFile('300.jpg');
Image1.Canvas.Draw(0, 0, MyJPEG);
pos := 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if pos >= 36 then
pos := 0;
if flag = false then
begin
Image1.Canvas.Draw(0, -150 * pos, MyJPEG);
inc(pos);
end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject;
Shift: TShiftState;
X,
Y: Integer);
begin

if (ssLeft in Shift) then
begin
flag := true;
if X > X0 then
pos := pos - ABS(X - X0)
else
pos := pos + ABS(X - X0);
if pos >= 36 then
pos := 0;
if pos < 0 then
pos := 35;
Image1.Canvas.Draw(0, -150 * pos, MyJPEG);
end
else
begin
flag := false;
end;
x0 := X;
end;

end.

 
如果想效果更好, 就用DoubleBuffer....
 
但不能在网页里用呀
 
那你要翻译成什么?
 
顶部