⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameviewbase.java~5~

📁 J2ME游戏引擎,直接在JBUILDER2006下运行,不包含需要的SDK和虚拟机
💻 JAVA~5~
📖 第 1 页 / 共 2 页
字号:
     * <p>通过索引值获取Surface资源池中的Surface引用。</p>     * @param iSurfaceIdx 所要获取的引用在池中的索引值。     * @return 如果iSurfaceIdx有效,则返回相应的引用;反之,返回NULL。     */    protected Surface getSurface(int iSurfaceIdx)    {        if (iSurfaceIdx < 0 || iSurfaceIdx >= MAX_STACK_NUM)        {            return null;        }        return surface[iSurfaceIdx];    }    /**     * <p>此方法将在每次Canvas被显示在Display上之前调用。一般分为2种情况:<br>     * 1.Canvas被Display对象setCurrent;<br>     * 2.系统信息弹出,操作结束后游戏重新返回返回。在这种情况下通常要判断游戏     * 被系统挂起之前的状态,如有需要则把游戏置为暂停状态。</p>     * <p><b>特殊情况:</b><br>     * 在某些手机上showNotify()不会被正常调用。例如A768上不会被调用;     * 而对于Nokia S60,某些情况下可能会被连续调用2次。请开发人员注意!     */    protected void showNotify()    {        m_b_Drawing = false;        if (isSystemInfoRaised)        {            // 判断是否要把游戏置为暂停状态            /*            if(m_pge_CurrentPage.equals(m_pge_gameplay))            {                // 添加代码判断游戏是否应该被置为暂停状态            }            //*/            isSystemInfoRaised = false;            StartFlip();            //setFullScreenMode(true);        }    }    /**     * <p>此方法将在每次Canvas被从Display上移除之前调用,当系统对话框     * 弹出时也会被调用。</p>     * <p><b>特殊情况:</b><br>     * 和showNotify()一样,此方法在某些手机上也不会被正常调用,请开发人员注意!     */    protected void hideNotify()    {        //m_pge_LastPage = m_pge_CurrentPage;        //m_i_LastPageState = m_pge_CurrentPage.m_i_FrameState;        isSystemInfoRaised = true;        StopFlip();    }    /**     * <p>实现Canvas的绘制方法。</p>     * <p>对于不同的设备,具体的实现方法有一定的差异:<br>     * 1.对于采用了“屏幕外缓冲”机制的设备,直接将m_BackImage绘制在屏幕上;<br>     * 2.对于有Double-Buffer支持的设备,将此方法的Grahics参数赋给m_g_BackGraphy,     * 然后进行绘图操作;<br>     * 3.对于MIDP2.0的设备,此方法无需实现。     * @param g 用来绘制Canvas的Grahpics对象。     */    protected void paint(Graphics g)    {        if (!m_b_Drawing)        {            return;        }        //*有Double-Buffer支持的设备        this.m_g_BackGraphy = g;        this.m_pge_CurrentPage.m_BackGraphy = g;        this.m_pge_CurrentPage.Show();        this.m_g_BackGraphy = null;        this.m_pge_CurrentPage.m_BackGraphy = null;        //*/        /*无Double-Buffer支持的MIDP 1.0设备        if (m_BackImage != null)        {            g.drawImage(m_BackImage, 0, 0, Graphics.TOP | Graphics.LEFT);        }        //*/        m_b_Drawing = false;    }    /**     * 开始游戏线程的循环。     */    public void StartFlip()//int aRefreshInterval)    {        Flipper flipper;        flipper = new Flipper();        timer = new Timer();        timer.schedule(flipper, 0, FLIP_MSEL);//aRefreshInterval);    }    /**     * 停止游戏线程。     */    public void StopFlip()    {        if (timer == null)        {            return;        }        timer.cancel();        timer = null;    }    /**     * 是否退出游戏应用。如果需要退出整个游戏应用,则将此变量设置为true。     */    boolean exit = false;    /**     * <p>一个游戏周期内的所有动作,每个游戏周期之内被调用一次。</p>     * 在这个方法中会调用m_pge_CurrentPage.Show()(或间接引起其被调用)。     */    public void Show()    {        /* 在不支持Double-Buffer的设备上,判断        if(m_g_BackGraphy == null)        {            return;        }//*/        if ( /*(m_g_BackGraphy == null) ||*/ (m_b_Drawing) || (m_pge_CurrentPage == null))        {            return;        }        //m_pge_CurrentPage.Show(); 不支持Double-Buffer的设备上        m_b_Drawing = true;        //*在MIDP 1.0设备上        repaint(0, 0, m_i_ScreenWidth, m_i_ScreenHeight);        serviceRepaints();        //*/        /*在MIDP 2.0设备上        this.flushGraphics();        // */        if(exit) // 每个周期结束前检测是否退出应用        {            StopFlip();            m_App.notifyDestroyed();        }    }    /**     * <p>将指定图像的指定区域拷贝到屏幕上的指定位置。<b>Blt</b>(Block Transfer?)</p>     * 功能类似于MIDP 2.0中的Grahpics的成员方法drawRegion(Image src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor)。     * @param XDest 目标点横坐标     * @param YDest 目标点纵坐标     * @param Width 拷贝区域的宽     * @param Height 拷贝区域的高     * @param XSrc 拷贝区域左上角在源图像上的横坐标     * @param YSrc 拷贝区域左上角在源图像上的纵坐标     * @param SrcSurface 源图像     */    public void Blt(int XDest, int YDest, int Width, int Height, int XSrc, int YSrc, Surface SrcSurface)    {        if ( (SrcSurface.m_Image == null) || (m_g_BackGraphy == null))        {            return;        }        m_g_BackGraphy.setClip(XDest, YDest, Width, Height);        m_g_BackGraphy.drawImage(SrcSurface.m_Image, XDest, YDest, Graphics.TOP | Graphics.LEFT);        m_g_BackGraphy.setClip(0, 0, m_i_ScreenWidth, m_i_ScreenHeight);    }    /**     * <p>按键按下的事件响应。</p>     * 此方法首先将按键编码抽象,然后把抽象后的编码传递给m_pge_CurrentPage.OnKeyDown(int)。     * 案件抽象的方法参见getKeyAction(int)。     * @param keyCode 被按下按键的按键编码。     */    protected void keyPressed(int keyCode)    {        m_pge_CurrentPage.OnKeyDown(getKeyAction(keyCode));    }    /**     * <p>按键弹起的事件响应。</p>     * 此方法首先将按键编码抽象,然后把抽象后的编码传递给m_pge_CurrentPage.OnKeyUp(int)。     * 案件抽象的方法参见getKeyAction(int)。     * @param keyCode 弹起按键的按键编码     */    protected void keyReleased(int keyCode)    {        m_pge_CurrentPage.OnKeyUp(getKeyAction(keyCode));    }    /**     * <p>获取所给按键编码的抽象编码。</p>     * <p>为了提高游戏的可移植性,Canvas中设置了一个叫做Game Action的机制。     * 这个机制中存在的问题是,对于各种不同的设备GameAction的映射方法有很大     * 的差异,不利于统一用户习惯。所以在引擎中实现一个类似的机制,以统一不同     * 设备之间的映射规则。     * @param keyCode 按键的设备编码。     * @return 如果所给的按键编码需要进行映射,则返回映射后的编码;反之返回原值。     */    private int getKeyAction(int keyCode)    {        switch(keyCode)        {            case -6:            case Canvas.KEY_STAR:                return KEY_SOFTKEY1;            case -7:            case Canvas.KEY_POUND:                return KEY_SOFTKEY2;            case Canvas.UP:            case Canvas.KEY_NUM2:                return KEY_UP;            case Canvas.DOWN:            case Canvas.KEY_NUM8:                return KEY_DOWN;            case Canvas.LEFT:            case Canvas.KEY_NUM4:                return KEY_LEFT;            case Canvas.RIGHT:            case Canvas.KEY_NUM6:                return KEY_RIGHT;            default:                return keyCode;        }    }    /*    protected void pointerPressed(int x, int y)    {        m_pge_CurrentPage.OnPointerDown(x, y);    }    protected void pointerReleased(int x, int y)    {        m_pge_CurrentPage.OnPointerUp(x, y);    }    protected void pointerDragged(int x, int y)    {        m_pge_CurrentPage.OnPointerDrag(x, y);    }*/    /**     * <p>Title: </p>     * <p>Description: asdf</p>     * <p>Copyright: Copyright (c) 2003</p>     * <p>Company: </p>     * @author not attributable     * @version 1.0     */    class Flipper extends TimerTask    {        //private int m_Count;        public Flipper()        {            //m_Count = 0;        }        public void run()        {            Show();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -