亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sprite.java

?? 這是j2me里MIDP2.0中g(shù)ame包的源代碼
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/* * @(#)Sprite.java	1.110 02/10/01 @(#) * * Copyright (c) 2002 Sun Microsystems, Inc.  All rights reserved. * PROPRIETARY/CONFIDENTIAL * Use is subject to license terms. */package javax.microedition.lcdui.game;import javax.microedition.lcdui.Image;import javax.microedition.lcdui.Graphics;/** * A Sprite is a basic visual element that can be rendered with one of * several frames stored in an Image; different frames can be shown to  * animate the Sprite.  Several transforms such as flipping and rotation * can also be applied to a Sprite to further vary its appearance.  As with * all Layer subclasses, a Sprite's location can be changed and it can also * be made visible or invisible. * <P> * <h3>Sprite Frames</h3> * The raw frames used to render a Sprite are provided in a single Image * object, which may be mutable or immutable.  If more than one frame is used, * the Image is broken up into a series of equally-sized frames of a specified * width and height.  As shown in the figure below, the same set of frames may * be stored in several different arrangements depending on what is the most  * convenient for the game developer.   * <br> * <center><img src="doc-files/frames.gif" width=777 height=402  * ALT="Sprite Frames"></center> * <br> * <p> * Each frame is assigned a unique index number.  The frame located in the * upper-left corner of the Image is assigned an index of 0.  The remaining  * frames are then numbered consecutively in row-major order (indices are  * assigned across the first row, then the second row, and so on).  The method * {@link #getRawFrameCount()} returns the total number of raw frames. * <P> * <h3>Frame Sequence</h3> * A Sprite's frame sequence defines an ordered list of frames to be displayed. * The default frame sequence mirrors the list of available frames, so  * there is a direct mapping between the sequence index and the corresponding * frame index.  This also means that the length of the default frame sequence * is equal to the number of raw frames.  For example, if a Sprite has 4  * frames, its default frame sequence is {0, 1, 2, 3}.   * <center><img src="doc-files/defaultSequence.gif" width=182 height=269  * ALT="Default Frame Sequence"></center> * <P> * The developer must manually switch the current frame in the frame sequence. * This may be accomplished by calling {@link #setFrame},  * {@link #prevFrame()}, or {@link #nextFrame()}.  Note that these methods  * always operate on the sequence index, they do not operate on frame indices; * however, if the default frame sequence is used, then the sequence indices * and the frame indices are interchangeable. * <P> * If desired, an arbitrary frame sequence may be defined for a Sprite.   * The frame sequence must contain at least one element, and each element must * reference a valid frame index.  By defining a new frame sequence, the  * developer can conveniently display the Sprite's frames in any order  * desired; frames may be repeated, omitted, shown in reverse order, etc. * <P> * For example, the diagram below shows how a special frame sequence might be * used to animate a mosquito.  The frame sequence is designed so that the  * mosquito flaps its wings three times and then pauses for a moment before  * the cycle is repeated. * <center><img src="doc-files/specialSequence.gif" width=346 height=510  * ALT="Special Frame Sequence"></center> * By calling {@link #nextFrame} each time the display is updated, the  * resulting animation would like this: * <br> * <center><img src="doc-files/sequenceDemo.gif" width=96 height=36></center> * <P> * <h3>Reference Pixel</h3> * Being a subclass of Layer, Sprite inherits various methods for setting and * retrieving its location such as {@link #setPosition setPosition(x,y)},  * {@link #getX getX()}, and {@link #getY getY()}.  These methods all define * position in terms of the upper-left corner of the Sprite's visual bounds; * however, in some cases, it is more convenient to define the Sprite's position * in terms of an arbitrary pixel within its frame, especially if transforms * are applied to the Sprite. * <P> * Therefore, Sprite includes the concept of a <em>reference pixel</em>.     * The reference pixel is defined by specifying its location in the * Sprite's untransformed frame using  * {@link #defineReferencePixel defineReferencePixel(x,y)}.   * By default, the reference pixel is defined to be the pixel at (0,0)  * in the frame.  If desired, the reference pixel may be defined outside  * of the frame's bounds.     * <p> * In this example, the reference pixel is defined to be the pixel that * the monkey appears to be hanging from: * <p> * <center><img src="doc-files/refpixel.gif" width=304 height=199 * ALT="Defining The Reference Pixel"></center> * <p> * {@link #getRefPixelX getRefPixelX()} and {@link #getRefPixelY getRefPixelY()} * can be used to query the location of the reference pixel in the painter's  * coordinate system.  The developer can also use  * {@link #setRefPixelPosition setRefPixelPosition(x,y)} to position the Sprite  * so that reference pixel appears at a specific location in the painter's * coordinate system.  These methods automatically account for any transforms * applied to the Sprite. * <p> * In this example, the reference pixel's position is set to a point at the end  * of a tree branch; the Sprite's location changes so that the reference pixel * appears at this point and the monkey appears to be hanging from the branch: * <p> * <center><img src="doc-files/setrefposition.gif" width=332 height=350 * ALT="Setting The Reference Pixel Position"></center> * <p> * <a name="transforms"></a> * <h3>Sprite Transforms</h3> * Various transforms can be applied to a Sprite.  The available transforms * include rotations in multiples of 90 degrees, and mirrored (about * the vertical axis) versions of each of the rotations.  A Sprite's transform  * is set by calling {@link #setTransform setTransform(transform)}. * <p> * <center><img src="doc-files/transforms.gif" width=355 height=575  * ALT="Transforms"></center> * <br> * When a transform is applied, the Sprite is automatically repositioned  * such that the  reference pixel appears stationary in the painter's  * coordinate system.  Thus, the reference pixel effectively becomes the * center of the transform operation.  Since the reference pixel does not * move, the values returned by {@link #getRefPixelX()} and  * {@link #getRefPixelY()} remain the same; however, the values returned by * {@link #getX getX()} and {@link #getY getY()} may change to reflect the  * movement of the Sprite's upper-left corner. * <p> * Referring to the monkey example once again, the position of the  * reference pixel remains at (48, 22) when a 90 degree rotation * is applied, thereby making it appear as if the monkey is swinging * from the branch: * <p> * <center><img src="doc-files/transcenter.gif" width=333 height=350 * ALT="Transform Center"></center> * <p> * <h3>Sprite Drawing</h3> * Sprites can be drawn at any time using the {@link #paint(Graphics)} method.   * The Sprite will be drawn on the Graphics object according to the current  * state information maintained by the Sprite (i.e. position, frame,  * visibility).  Erasing the Sprite is always the responsibility of code  * outside the Sprite class.<p> * <p> * Sprites can be implemented using whatever techniques a manufacturers  * wishes to use (e.g hardware acceleration may be used for all Sprites, for * certain sizes of Sprites, or not at all). * <p> * For some platforms, certain Sprite sizes may be more efficient than others; * manufacturers may choose to provide developers with information about * device-specific characteristics such as these. * <p> * @since MIDP 2.0  */public class Sprite extends Layer{    // ----- definitions for the various transformations possible -----    /**     * No transform is applied to the Sprite.       * This constant has a value of <code>0</code>.     */    public static final int TRANS_NONE = 0;        /**     * Causes the Sprite to appear rotated clockwise by 90 degrees.     * This constant has a value of <code>5</code>.     */    public static final int TRANS_ROT90 = 5;    /**     * Causes the Sprite to appear rotated clockwise by 180 degrees.     * This constant has a value of <code>3</code>.     */    public static final int TRANS_ROT180 = 3;    /**     * Causes the Sprite to appear rotated clockwise by 270 degrees.     * This constant has a value of <code>6</code>.     */    public static final int TRANS_ROT270 = 6;    /**     * Causes the Sprite to appear reflected about its vertical     * center.     * This constant has a value of <code>2</code>.     */    public static final int TRANS_MIRROR = 2;    /**     * Causes the Sprite to appear reflected about its vertical     * center and then rotated clockwise by 90 degrees.     * This constant has a value of <code>7</code>.     */    public static final int TRANS_MIRROR_ROT90 = 7;    /**     * Causes the Sprite to appear reflected about its vertical     * center and then rotated clockwise by 180 degrees.     * This constant has a value of <code>1</code>.     */    public static final int TRANS_MIRROR_ROT180 = 1;    /**     * Causes the Sprite to appear reflected about its vertical     * center and then rotated clockwise by 270 degrees.     * This constant has a value of <code>4</code>.     */    public static final int TRANS_MIRROR_ROT270 = 4;    // ----- Constructors -----    /**     * Creates a new non-animated Sprite using the provided Image.       * This constructor is functionally equivalent to calling     * <code>new Sprite(image, image.getWidth(), image.getHeight())</code>     * <p>     * By default, the Sprite is visible and its upper-left      * corner is positioned at (0,0) in the painter's coordinate system.     * <br>     * @param image the <code>Image</code> to use as the single frame     * for the </code>Sprite     * @throws NullPointerException if <code>img</code> is <code>null</code>     */    public Sprite(Image image) {        super(image.getWidth(), image.getHeight());	initializeFrames(image, image.getWidth(), image.getHeight(), false);	// initialize collision rectangle	initCollisionRectBounds();	// current transformation is TRANS_NONE	this.setTransformImpl(TRANS_NONE);    }    /**     * Creates a new animated Sprite using frames contained in      * the provided Image.  The frames must be equally sized, with the      * dimensions specified by <code>frameWidth</code> and      * <code>frameHeight</code>.  They may be laid out in the image      * horizontally, vertically, or as a grid.  The width of the source      * image must be an integer multiple of the frame width, and the height     * of the source image must be an integer multiple of the frame height.     * The  values returned by {@link Layer#getWidth} and      * {@link Layer#getHeight} will reflect the frame width and frame height     * subject to the Sprite's current transform.     * <p>     * Sprites have a default frame sequence corresponding to the raw frame     * numbers, starting with frame 0.  The frame sequence may be modified     * with {@link #setFrameSequence(int[])}.     * <p>     * By default, the Sprite is visible and its upper-left corner is      * positioned at (0,0) in the painter's coordinate system.     * <p>     * @param image the <code>Image</code> to use for <code>Sprite</code>     * @param frameWidth the <code>width</code>, in pixels, of the     * individual raw frames     * @param frameHeight the <code>height</code>, in pixels, of the     * individual raw frames     * @throws NullPointerException if <code>img</code> is <code>null</code>     * @throws IllegalArgumentException if <code>frameHeight</code> or     * <code>frameWidth</code> is less than <code>1</code>     * @throws IllegalArgumentException if the <code>image</code>     * width is not an integer multiple of the <code>frameWidth</code>     * @throws IllegalArgumentException if the <code>image</code>     * height is not an integer multiple of the <code>frameHeight</code>     */    public Sprite(Image image, int frameWidth, int frameHeight) {        super(frameWidth, frameHeight);        // if img is null img.getWidth() will throw NullPointerException        if ((frameWidth < 1 || frameHeight < 1) ||	    ((image.getWidth() % frameWidth) != 0) ||            ((image.getHeight() % frameHeight) != 0)) {             throw new IllegalArgumentException();	}	// construct the array of images that 	// we use as "frames" for the sprite.        // use default frame , sequence index = 0          initializeFrames(image, frameWidth, frameHeight, false);	// initialize collision rectangle	initCollisionRectBounds();	// current transformation is TRANS_NONE	this.setTransformImpl(TRANS_NONE);    }    /**     * Creates a new Sprite from another Sprite.  <p>     *     * All instance attributes (raw frames, position, frame sequence, current     * frame, reference point, collision rectangle, transform, and visibility)      * of the source Sprite are duplicated in the new Sprite.       *     * @param s the <code>Sprite</code> to create a copy of     * @throws NullPointerException if <code>s</code> is <code>null</code>     *     */    public Sprite(Sprite s) {	super(s != null ? s.getWidth() : 0,                     s != null ? s.getHeight() : 0);        if (s == null) {	    throw new NullPointerException();        }        this.sourceImage = Image.createImage(s.sourceImage);	this.numberFrames = s.numberFrames;	this.frameCoordsX = new int[this.numberFrames];	this.frameCoordsY = new int[this.numberFrames];        System.arraycopy(s.frameCoordsX, 0, 			 this.frameCoordsX, 0,			 s.getRawFrameCount());        System.arraycopy(s.frameCoordsY, 0, 			 this.frameCoordsY, 0,			 s.getRawFrameCount());        this.x = s.getX();        this.y = s.getY();	// these fields are set by defining a reference point	this.dRefX = s.dRefX;	this.dRefY = s.dRefY;	// these fields are set when defining a collision rectangle	this.collisionRectX = s.collisionRectX;	this.collisionRectY = s.collisionRectY;	this.collisionRectWidth = s.collisionRectWidth;	this.collisionRectHeight = s.collisionRectHeight;	// these fields are set when creating a Sprite from an Image	this.srcFrameWidth = s.srcFrameWidth;	this.srcFrameHeight = s.srcFrameHeight;	// the above fields are used in setTransform()	// which is why we set them first, then  call setTransformImpl() 	// to set up internally used data structures.	setTransformImpl(s.t_currentTransformation);        this.setVisible(s.isVisible()); 	this.frameSequence = new int[s.getFrameSequenceLength()];        this.setFrameSequence(s.frameSequence);        this.setFrame(s.getFrame());        this.setRefPixelPosition(s.getRefPixelX(), s.getRefPixelY());	    }    // ----- public methods -----    /**     * Defines the reference pixel for this Sprite.  The pixel is     * defined by its location relative to the upper-left corner of     * the Sprite's un-transformed frame, and it may lay outside of     * the frame's bounds.     * <p>     * When a transformation is applied, the reference pixel is     * defined relative to the Sprite's initial upper-left corner

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1区二区.| 亚洲成人免费影院| 欧美日韩精品久久久| 国产伦精一区二区三区| 亚洲午夜视频在线| 欧美国产丝袜视频| 精品久久久影院| 欧美日韩视频在线第一区| 国产精品一级黄| 日韩精品国产欧美| 一区二区三区高清| 国产精品色噜噜| 欧美α欧美αv大片| 欧美喷水一区二区| 91在线播放网址| 成人免费看视频| 狠狠色丁香婷婷综合| 天天免费综合色| 亚洲一区二区三区免费视频| 国产精品色眯眯| 国产亚洲制服色| 精品国产乱码久久久久久久| 欧美美女网站色| 欧美撒尿777hd撒尿| 97国产一区二区| 99久久婷婷国产综合精品| 国产精品18久久久久久久久久久久 | 亚洲免费资源在线播放| 国产网站一区二区三区| 精品成人免费观看| 欧美成人a在线| 日韩精品一区二区三区在线观看 | 成人综合激情网| 国产老肥熟一区二区三区| 久久激情综合网| 免费观看成人av| 久久精品999| 国产麻豆9l精品三级站| 国产伦精品一区二区三区视频青涩| 青青草97国产精品免费观看无弹窗版| 视频一区二区三区中文字幕| 亚洲国产成人av网| 亚洲国产精品久久久久秋霞影院| 一区二区激情视频| 亚洲国产欧美一区二区三区丁香婷| 亚洲成人免费视| 免费成人结看片| 国精品**一区二区三区在线蜜桃| 国精品**一区二区三区在线蜜桃| 国产高清一区日本| 成人免费看视频| 欧洲av一区二区嗯嗯嗯啊| 欧美视频一区二区三区四区 | 欧美日韩国产不卡| 欧美高清视频一二三区| 日韩欧美国产成人一区二区| 精品国产sm最大网站| 国产欧美日韩视频一区二区| 国产精品动漫网站| 午夜精品免费在线| 久久精品国产999大香线蕉| 国产呦精品一区二区三区网站| 国产很黄免费观看久久| 色综合久久久久| 制服丝袜日韩国产| 久久一区二区三区四区| 国产精品美女久久久久高潮| 一区2区3区在线看| 蜜臀精品久久久久久蜜臀| 国产99精品国产| 欧美在线观看一区二区| 欧美成人福利视频| 欧美激情艳妇裸体舞| 亚洲精选一二三| 日本欧美一区二区三区乱码| 国产激情视频一区二区在线观看| 91福利在线导航| 精品国产伦一区二区三区免费 | 综合中文字幕亚洲| 午夜精品久久久久久不卡8050| 国产一区在线观看麻豆| 欧洲国产伦久久久久久久| 精品久久一区二区三区| 亚洲黄网站在线观看| 国产一区二区三区在线观看免费视频| 91亚洲国产成人精品一区二区三 | 色婷婷激情一区二区三区| 3d成人动漫网站| 国产精品国产自产拍高清av| 日本欧美一区二区在线观看| 不卡av在线免费观看| 欧美成人精品3d动漫h| 亚洲综合在线五月| 国产高清成人在线| 91精品国产高清一区二区三区蜜臀| 国产网站一区二区| 美女mm1313爽爽久久久蜜臀| 色综合久久久久综合体桃花网| 精品国产亚洲在线| 首页国产丝袜综合| 色哟哟日韩精品| 欧美国产日韩a欧美在线观看| 麻豆精品一区二区综合av| 色伊人久久综合中文字幕| 国产色综合一区| 美国精品在线观看| 欧美人与禽zozo性伦| 自拍偷拍亚洲欧美日韩| 国产精品一区二区黑丝| 日韩一级片在线观看| 亚洲福利一二三区| 在线免费观看日本欧美| 国产精品美女一区二区在线观看| 国产一区二区不卡老阿姨| 777奇米成人网| 一区二区三区在线视频免费观看 | 日韩欧美国产电影| 日韩和欧美一区二区| 欧美视频一区二区三区| 一区二区三区不卡视频| 色综合久久66| 亚洲精品久久嫩草网站秘色| av在线不卡电影| 国产精品全国免费观看高清| 大胆欧美人体老妇| 久久久国产精华| 国产精品99久久久久久宅男| 久久欧美一区二区| 国产精品18久久久久久久久久久久| 精品国产乱码91久久久久久网站| 男女男精品网站| 日韩精品在线网站| 麻豆精品视频在线观看视频| 日韩一区二区精品葵司在线 | 国产成人av资源| 久久久欧美精品sm网站| 国产一区二区按摩在线观看| 欧美精品一区二| 国产一区二区福利| 国产精品美女一区二区| 91免费版pro下载短视频| 亚洲手机成人高清视频| 色噜噜狠狠一区二区三区果冻| 亚洲天天做日日做天天谢日日欢| 91久久精品一区二区三| 亚洲国产欧美一区二区三区丁香婷| 欧美日韩一区三区| 蜜桃视频免费观看一区| 2023国产精品| 成人app在线观看| 国产精品久久久久影院| 91日韩精品一区| 亚洲国产精品一区二区www| 在线播放一区二区三区| 另类中文字幕网| 亚洲国产精品激情在线观看| 91色婷婷久久久久合中文| 亚洲一区日韩精品中文字幕| 欧美日韩一级二级三级| 久久福利视频一区二区| 国产偷v国产偷v亚洲高清| 99久久精品国产观看| 亚洲国产wwwccc36天堂| 日韩一级完整毛片| av中文字幕亚洲| 奇米在线7777在线精品| 久久理论电影网| 日本高清视频一区二区| 日本va欧美va瓶| 国产精品动漫网站| 91精品国产免费| 99久久99久久精品国产片果冻| 亚洲一区二区三区四区在线免费观看| 91精品国产福利在线观看| 国产.欧美.日韩| 亚洲18影院在线观看| 久久久久久影视| 欧美日韩在线免费视频| 国产精品一区二区三区乱码 | 精品一区二区三区蜜桃| 国产精品久久久久7777按摩 | 久久久久国产精品麻豆| 欧洲亚洲精品在线| 国产精品亚洲第一| 亚洲一区国产视频| 久久久www成人免费无遮挡大片| 色婷婷一区二区| 国产综合色产在线精品| 亚洲第一av色| 中文字幕不卡在线| 日韩亚洲欧美在线观看| 在线日韩国产精品| 成人免费视频视频在线观看免费| 日本vs亚洲vs韩国一区三区二区| 亚洲日本va午夜在线影院| 欧美va亚洲va| 欧美精品免费视频| 91小视频免费看| 国产成人自拍网| 蜜桃av一区二区|