Img360.java文件内容:
——————————————————————————————
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
public class Img360 extends Applet
    implements MouseListener, MouseMotionListener
{
    private void loadImageAll()
    {
        if(isHorzImage())
        {
            m_PreHorzImage = new Image[m_iCount][0]];
            for(int iCounter = 0; iCounter < m_iCount[0]; iCounter++)
                m_PreHorzImage[iCounter] = getImage(getDocumentBase(), getLoadURL(0, iCounter + 1));
        }
        if(isVertImage())
        {
            m_PreVertImage = new Image[m_iCount][1]];
            for(int iCounter = 0; iCounter < m_iCount[1]; iCounter++)
                m_PreVertImage[iCounter] = getImage(getDocumentBase(), getLoadURL(1, iCounter + 1));
        }
    }
    private boolean isHorzImage()
    {
        return m_szFile[0] != null && m_iCount[0] != 0;
    }
    public void mouseClicked(MouseEvent mouseevent)
    {
    }
    public void mousePressed(MouseEvent e)
    {
        if(m_iCurTurn == -1)
            return;
        e.consume();
        if(isHorzImage() && isVertImage())
        {
            int iTurn = TestTurn(e.getX(), e.getY());
            if(iTurn != m_iCurTurn)
            {
                m_iCurIndex = 1;
                m_iCurTurn = iTurn;
                if(!m_bPreload)
                    loadImage();
                repaint();
            }
        }
        if(m_iCurTurn == 0)
            m_MouseCursor = new Cursor(11);
        else
            m_MouseCursor = new Cursor(8);
        setCursor(m_MouseCursor);
        m_MousePos = new Point(e.getX(), e.getY());
    }
    public void mouseDragged(MouseEvent e)
    {
        if(m_iCurTurn == -1)
            return;
        e.consume();
        int iPosDiv;
        if(m_iCurTurn == 0)
            iPosDiv = e.getX() - m_MousePos.x;
        else
            iPosDiv = e.getY() - m_MousePos.y;
        if(iPosDiv < -10 || iPosDiv > 10)
        {
            if(iPosDiv < -10)
                m_iCurIndex++;
            else
                m_iCurIndex--;
            if(m_iCurIndex == 0)
                m_iCurIndex = m_iCount[m_iCurTurn];
            if(m_iCurIndex > m_iCount[m_iCurTurn])
                m_iCurIndex = 1;
            m_MousePos.x = e.getX();
            m_MousePos.y = e.getY();
            if(!m_bPreload)
                loadImage();
            repaint();
        }
    }
    public Img360()
    {
        m_szFolder = new String[2];
        m_szFile = new String[2];
        m_iCount = new int[2];
        m_iCurTurn = -1;
        m_iCurIndex = 1;
        m_CurImage = null;
        m_MousePos = null;
        m_MouseCursor = null;
        m_bPreload = false;
        m_PreHorzImage = null;
        m_PreVertImage = null;
        addMouseListener(this);
        addMouseMotionListener(this);
    }
    public void mouseReleased(MouseEvent e)
    {
        if(m_iCurTurn == -1)
        {
            return;
        } else
        {
            e.consume();
            m_MousePos = null;
            setCursor(Cursor.getDefaultCursor());
            m_MouseCursor = null;
            return;
        }
    }
    public void mouseMoved(MouseEvent mouseevent)
    {
    }
    private int TestTurn(int iX, int iY)
    {
        Dimension Dim = getSize();
        int iOffsetX = AbsoluteValue(iX - Dim.width / 2);
        int iOffsetY = AbsoluteValue(iY - Dim.height / 2);
        return iOffsetY * Dim.width > iOffsetX * Dim.height ? 1 : 0;
    }
    public void paint(Graphics g)
    {
        if(m_bPreload && m_iCurTurn != -1)
        {
            if(m_iCurTurn == 0)
            {
                if(m_PreHorzImage[m_iCurIndex - 1] != null)
                    g.drawImage(m_PreHorzImage[m_iCurIndex - 1], 0, 0, this);
                else
                    super.paint(g);
            } else
            if(m_PreVertImage[m_iCurIndex - 1] != null)
                g.drawImage(m_PreVertImage[m_iCurIndex - 1], 0, 0, this);
            else
                super.paint(g);
        } else
        if(m_CurImage != null)
            g.drawImage(m_CurImage, 0, 0, this);
        else
            super.paint(g);
    }
    private String getLoadURL(int iTurn, int iIndex)
    {
        String szURL = "";
        if(m_szFolder[iTurn] != null)
        {
            szURL += m_szFolder[iTurn];
            szURL += File.separator;
        }
        szURL += m_szFile[iTurn];
        if(iIndex < 10)
            szURL += "0";
        szURL += iIndex + ".jpg";
        return szURL;
    }
    private boolean isVertImage()
    {
        return m_szFile[1] != null && m_iCount[1] != 0;
    }
    private void loadImage()
    {
        m_CurImage = null;
        m_CurImage = getImage(getDocumentBase(), getLoadURL(m_iCurTurn, m_iCurIndex));
    }
    private int AbsoluteValue(int n)
    {
        if(n < 0)
            return -n;
        else
            return n;
    }
    public void mouseEntered(MouseEvent mouseevent)
    {
    }
    public void mouseExited(MouseEvent mouseevent)
    {
    }
    public void update(Graphics g)
    {
        if(m_bPreload && m_iCurTurn != -1)
        {
            if(m_iCurTurn == 0)
            {
                if(m_PreHorzImage[m_iCurIndex - 1] != null)
                    g.drawImage(m_PreHorzImage[m_iCurIndex - 1], 0, 0, this);
                else
                    super.update(g);
            } else
            if(m_PreVertImage[m_iCurIndex - 1] != null)
                g.drawImage(m_PreVertImage[m_iCurIndex - 1], 0, 0, this);
            else
                super.update(g);
        } else
        if(m_CurImage != null)
            g.drawImage(m_CurImage, 0, 0, this);
        else
            super.update(g);
    }
    public void init()
    {
        loadParams();
        if(m_bPreload)
            loadImageAll();
        if(isHorzImage())
            m_iCurTurn = 0;
        else
        if(isVertImage())
            m_iCurTurn = 1;
        if(m_iCurTurn != -1 && !m_bPreload)
            loadImage();
    }
    private void loadParams()
    {
        String szParam = getParameter("Preload");
        if(szParam != null)
            m_bPreload = szParam.compareTo("yes") == 0;
        m_szFile[0] = getParameter("HorzFile");
        if(m_szFile[0] != null)
        {
            szParam = getParameter("HorzCount");
            if(szParam != null)
            {
                Long lParam = new Long(szParam);
                m_iCount[0] = lParam.intValue();
            }
            m_szFolder[0] = getParameter("HorzFolder");
        }
        m_szFile[1] = getParameter("VertFile");
        if(m_szFile[1] != null)
        {
            szParam = getParameter("VertCount");
            if(szParam != null)
            {
                Long lParam = new Long(szParam);
                m_iCount[1] = lParam.intValue();
            }
            m_szFolder[1] = getParameter("VertFolder");
        }
    }
    private final int TURN_NONE = -1;
    private final int TURN_HORZ = 0;
    private final int TURN_VERT = 1;
    private String m_szFolder[];
    private String m_szFile[];
    private int m_iCount[];
    private int m_iCurTurn;
    private int m_iCurIndex;
    private Image m_CurImage;
    private Point m_MousePos;
    private Cursor m_MouseCursor;
    private boolean m_bPreload;
    private Image m_PreHorzImage[];
    private Image m_PreVertImage[];
}