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

📄 gamecanvas.java

📁 J2ME 的Game包官方源代码。对改写Game包的会有一定价值[Game包不能用于MIDP1。0]
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * <P>The newly created Graphics object has the following properties:     * </P>     * <ul>     * <LI>the destination is this GameCanvas' buffer;     * <LI>the clip region encompasses the entire buffer;     * <LI>the current color is black;     * <LI>the font is the same as the font returned by     * {@link javax.microedition.lcdui.Font#getDefaultFont      * Font.getDefaultFont()};     * <LI>the stroke style is {@link Graphics#SOLID SOLID}; and     * <LI>the origin of the coordinate system is located at the upper-left     * corner of the buffer.     * </ul>          * <p>     * @return the Graphics object that renders to this GameCanvas'      * off-screen buffer     * @see #flushGraphics()     * @see #flushGraphics(int, int, int, int)	      */    protected Graphics getGraphics() {	return offscreen_buffer.getGraphics();    }    /**     * Gets the states of the physical game keys.  Each bit in the returned     * integer represents a specific key on the device.  A key's bit will be     * 1 if the key is currently down or has been pressed at least once since     * the last time this method was called.  The bit will be 0 if the key     * is currently up and has not been pressed at all since the last time      * this method was called.  This latching behavior ensures that a rapid     * key press and release will always be caught by the game loop,      * regardless of how slowly the loop runs.     * <p>     * For example:<code><pre>     *      *      // Get the key state and store it     *      int keyState = getKeyStates();     *      if ((keyState & LEFT_KEY) != 0) {     *          positionX--;     *      }     *      else if ((keyState & RIGHT_KEY) != 0) {     *          positionX++;     *      }     *     * </pre></code>     * <p>     * Calling this method has the side effect of clearing any latched state.     * Another call to getKeyStates immediately after a prior call will      * therefore report the system's best idea of the current state of the     * keys, the latched bits having been cleared by the first call.     * <p>     * Some devices may not be able to query the keypad hardware directly and     * therefore, this method may be implemented by monitoring key press and     * release events instead.  Thus the state reported by getKeyStates might     * lag the actual state of the physical keys since the timeliness     * of the key information is be subject to the capabilities of each     * device.  Also, some devices may be incapable of detecting simultaneous     * presses of multiple keys.     * <p>     * This method returns 0 unless the GameCanvas is currently visible as     * reported by {@link javax.microedition.lcdui.Displayable#isShown}.     * Upon becoming visible, a GameCanvas will initially indicate that      * all keys are unpressed (0); if a key is held down while the GameCanvas     * is being shown, the key must be first released and then pressed in      * order for the key press to be reported by the GameCanvas.     * <p>     * @see #UP_PRESSED     * @see #DOWN_PRESSED     * @see #LEFT_PRESSED     * @see #RIGHT_PRESSED     * @see #FIRE_PRESSED     * @see #GAME_A_PRESSED     * @see #GAME_B_PRESSED     * @see #GAME_C_PRESSED     * @see #GAME_D_PRESSED     * @return An integer containing the key state information (one bit per      * key), or 0 if the GameCanvas is not currently shown.     */    public int getKeyStates() {        DisplayAccess displayAccess = GameMap.get(this);	if (displayAccess != null) {	    return displayAccess.getKeyMask();	} 	return 0;    }    /**     * Paints this GameCanvas.  By default, this method renders the      * the off-screen buffer at (0,0).  Rendering of the buffer is      * subject to the clip region and origin translation of the Graphics     * object.     * @param g the Graphics object with which to render the screen.     * @throws NullPointerException if <code>g</code> is <code>null</code>     */    public void paint(Graphics g) {        // NullPointerException will be thrown in drawImage if g == null	g.drawImage(offscreen_buffer, 0, 0, Graphics.TOP|Graphics.LEFT);    }    /**     * Flushes the specified region of the off-screen buffer to the display.      * The contents of the off-screen buffer are not changed as a result of      * the flush operation.  This method does not return until the flush has     * been completed, so the app may immediately begin to render the next      * frame to the same buffer once this method returns.     * <p>     * If the specified region extends beyond the current bounds of the      * GameCanvas, only the intersecting region is flushed.  No pixels are     * flushed if the specified width or height is less than 1.     * <p>     * This method does nothing and returns immediately if the GameCanvas is     * not currently shown or the flush request cannot be honored because the     * system is busy.     * <p>     * @see #flushGraphics()     * @param x the left edge of the region to be flushed      * @param y the top edge of the region to be flushed     * @param width the width of the region to be flushed     * @param height the height of the region to be flushed     */    public void flushGraphics(int x, int y,     					int width, int height) {	if (width < 1 || height < 1) {	    return;	}        DisplayAccess displayAccess = GameMap.get(this);        if (displayAccess != null) {            displayAccess.flush(this, offscreen_buffer,     			  x, y,	width, height);        }    }    /**     * Flushes the off-screen buffer to the display.  The size of the flushed      * area is equal to the size of the GameCanvas.  The contents     * of the  off-screen buffer are not changed as a result of the flush      * operation.  This method does not return until the flush has been     * completed, so the app may immediately begin to render the next frame     * to the same buffer once this method returns.     * <p>     * This method does nothing and returns immediately if the GameCanvas is     * not currently shown or the flush request cannot be honored because the     * system is busy.     * <p>     * @see #flushGraphics(int,int,int,int)	       */    public void flushGraphics() {        DisplayAccess displayAccess = GameMap.get(this);        if (displayAccess != null) {	    displayAccess.flush(this, offscreen_buffer,			      0, 0, getWidth(), getHeight());        }    }    /**     * Set a private field in the <code>Canvas</code> object. We use a     * native method to work around the package boundary.     * @param c this <code>GameCanvas</code> cast to a <code>Canvas</code>     * @param suppressKeyEvents whether or not to suppress key events     */    private native void setSuppressKeyEvents(Canvas c, 					     boolean suppressKeyEvents);    static {	// do this to get the HEIGHT available to draw on in full screen mode.        GameDeviceCaps gdc = new GameDeviceCaps();        FULLSCREEN_WIDTH    = gdc.width;        FULLSCREEN_HEIGHT   = gdc.height;        gdc = null;    }}/* * ************* Class, DeviceCaps *//** * Current device capabilities. * Can't access Display's DeviceCaps. So make game's own. * */class GameDeviceCaps {    /** horizontal width of the current device */    int width;    /** vertical height of the current device */    int height;    /**      * Create a new GameDeviceCaps object that retrieves     * the devices capabilities     */    GameDeviceCaps() {        init();    }    /**      * native method to retreive initial settings for     * display capabilities     */    private native void init();}

⌨️ 快捷键说明

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