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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sprite.java

?? 手機射擊游戲源代碼,nokia s60模擬器開發包,eclipse工具開發.不可用于商業用途.
?? JAVA
字號:
package src;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class Sprite extends Layer {
	public Sprite(Image image) {
		super(image.getWidth(), image.getHeight());
		initializeFrames(image, image.getWidth(), image.getHeight(), false);
		initCollisionRectBounds();
//		setTransformImpl(0);
	}

	public Sprite(Image image, int frameWidth, int frameHeight) {
		super(frameWidth, frameHeight);
		if (frameWidth < 1 || frameHeight < 1
				|| image.getWidth() % frameWidth != 0
				|| image.getHeight() % frameHeight != 0) {
			throw new IllegalArgumentException();
		} else {
			initializeFrames(image, frameWidth, frameHeight, false);
			initCollisionRectBounds();
//			setTransformImpl(0);
			return;
		}
	}

	public Sprite(Sprite s) {
		super(s == null ? 0 : s.getWidth(), s == null ? 0 : s.getHeight());
		if (s == null) {
			throw new NullPointerException();
		} else {
			sourceImage = Image.createImage(s.sourceImage);
			numberFrames = s.numberFrames;
			frameCoordsX = new int[numberFrames];
			frameCoordsY = new int[numberFrames];
			System.arraycopy(s.frameCoordsX, 0, frameCoordsX, 0, s
					.getRawFrameCount());
			System.arraycopy(s.frameCoordsY, 0, frameCoordsY, 0, s
					.getRawFrameCount());
			x = s.x;
			y = s.y;
//			dRefX = s.dRefX;
//			dRefY = s.dRefY;
			collisionRectX = s.collisionRectX;
			collisionRectY = s.collisionRectY;
			collisionRectWidth = s.collisionRectWidth;
			collisionRectHeight = s.collisionRectHeight;
			srcFrameWidth = s.srcFrameWidth;
			srcFrameHeight = s.srcFrameHeight;
//			setTransformImpl(s.t_currentTransformation);
			this.visible = s.visible;
			frameSequence = new int[s.getFrameSequenceLength()];
			setFrameSequence(s.frameSequence);
			setFrame(s.getFrame());
//			setRefPixelPosition(s.getRefPixelX(), s.getRefPixelY());
			return;
		}
	}

//	public void defineReferencePixel(int x, int y) {
//		dRefX = x;
//		dRefY = y;
//	}
//
//	public void setRefPixelPosition(int x, int y) {
//		this.x = x - dRefX;
//		this.y = y - dRefY;
//	}
//
//	public int getRefPixelX() {
//		return x + dRefX;
//	}
//
//	public int getRefPixelY() {
//		return y + dRefY;
//	}

	public void setFrame(int sequenceIndex) {
		if (sequenceIndex < 0 || sequenceIndex >= frameSequence.length) {
			throw new IndexOutOfBoundsException();
		} else {
			this.sequenceIndex = sequenceIndex;
			return;
		}
	}

	public final int getFrame() {
		return sequenceIndex;
	}

	public int getRawFrameCount() {
		return numberFrames;
	}

	public int getFrameSequenceLength() {
		return frameSequence.length;
	}

	public void nextFrame() {
		sequenceIndex = (sequenceIndex + 1) % frameSequence.length;
	}

	public void prevFrame() {
		if (sequenceIndex == 0)
			sequenceIndex = frameSequence.length - 1;
		else
			sequenceIndex--;
	}

	public final void paint(Graphics g) {
		if (g == null)
			throw new NullPointerException();
		if (visible) {
//			System.out.println("x=" + x + ", y=" + y + ", srcFrameWidth=" + srcFrameWidth + ", srcFrameHeight=" + srcFrameHeight);
//			g.drawImage(sourceImage, 0, 0, Graphics.LEFT | Graphics.TOP);
			g.setClip(this.x, this.y, this.srcFrameWidth, this.srcFrameHeight);
//			System.out.println("frameCoordsX=" + frameCoordsX[frameSequence[sequenceIndex]] + ", frameCoordsY=" + frameCoordsY[frameSequence[sequenceIndex]]);
			g.drawImage(sourceImage, x-frameCoordsX[frameSequence[sequenceIndex]], y-frameCoordsY[frameSequence[sequenceIndex]], Graphics.LEFT | Graphics.TOP);
		}
		//            g.drawRegion(sourceImage, frameCoordsX[frameSequence[sequenceIndex]], frameCoordsY[frameSequence[sequenceIndex]], srcFrameWidth, srcFrameHeight, t_currentTransformation, x, y, 20);
	}

	public void setFrameSequence(int sequence[]) {
		if (sequence == null) {
			sequenceIndex = 0;
			customSequenceDefined = false;
			frameSequence = new int[numberFrames];
			for (int i = 0; i < numberFrames; i++)
				frameSequence[i] = i;

			return;
		}
		if (sequence.length < 1)
			throw new IllegalArgumentException();
		for (int i = 0; i < sequence.length; i++)
			if (sequence[i] < 0 || sequence[i] >= numberFrames)
				throw new ArrayIndexOutOfBoundsException();

		customSequenceDefined = true;
		frameSequence = new int[sequence.length];
		System.arraycopy(sequence, 0, frameSequence, 0, sequence.length);
		sequenceIndex = 0;
	}

	public void setImage(Image img, int frameWidth, int frameHeight) {
		if (frameWidth < 1 || frameHeight < 1
				|| img.getWidth() % frameWidth != 0
				|| img.getHeight() % frameHeight != 0)
			throw new IllegalArgumentException();
		int noOfFrames = (img.getWidth() / frameWidth)
				* (img.getHeight() / frameHeight);
		boolean maintainCurFrame = true;
		if (noOfFrames < numberFrames) {
			maintainCurFrame = false;
			customSequenceDefined = false;
		}
		if (frameWidth != frameWidth || frameHeight != frameHeight) {
//			int oldX = x + dRefX;
//			int oldY = y + dRefY;
			setWidthImpl(frameWidth);
			setHeightImpl(frameHeight);
			initializeFrames(img, frameWidth, frameHeight, maintainCurFrame);
			initCollisionRectBounds();
//			x = oldX - dRefX;
//			y = oldY - dRefY;
//			computeTransformedBounds(t_currentTransformation);
		} else {
			initializeFrames(img, frameWidth, frameHeight, maintainCurFrame);
		}
	}

	public void defineCollisionRectangle(int x, int y, int width, int height) {
		if (width < 0 || height < 0) {
			throw new IllegalArgumentException();
		} else {
			collisionRectX = x;
			collisionRectY = y;
			collisionRectWidth = width;
			collisionRectHeight = height;
//			setTransformImpl(t_currentTransformation);
			return;
		}
	}
//
//	public void setTransform(int transform) {
//		setTransformImpl(transform);
//	}

	public final boolean collidesWith(Sprite s) {
		if (!s.visible || !visible)
			return false;
		int otherLeft = s.x + s.collisionRectX;
		int otherTop = s.y + s.collisionRectY;
		int otherRight = otherLeft + s.collisionRectWidth;
		int otherBottom = otherTop + s.collisionRectHeight;
		int left = x + collisionRectX;
		int top = y + collisionRectY;
		int right = left + collisionRectWidth;
		int bottom = top + collisionRectHeight;
		return intersectRect(otherLeft, otherTop, otherRight, otherBottom,
				left, top, right, bottom);
	}

	public final boolean collidesWith(TiledLayer t) {
		if (!t.visible || !visible)
			return false;
		int tLx1 = t.x;
		int tLy1 = t.y;
		int tLx2 = tLx1 + t.width;
		int tLy2 = tLy1 + t.height;
		int tW = t.getCellWidth();
		int tH = t.getCellHeight();
		int sx1 = x + collisionRectX;
		int sy1 = y + collisionRectY;
		int sx2 = sx1 + collisionRectWidth;
		int sy2 = sy1 + collisionRectHeight;
		int tNumCols = t.getColumns();
		int tNumRows = t.getRows();
		if (!intersectRect(tLx1, tLy1, tLx2, tLy2, sx1, sy1, sx2, sy2))
			return false;
		int startCol = sx1 > tLx1 ? (sx1 - tLx1) / tW : 0;
		int startRow = sy1 > tLy1 ? (sy1 - tLy1) / tH : 0;
		int endCol = sx2 >= tLx2 ? tNumCols - 1 : (sx2 - 1 - tLx1) / tW;
		int endRow = sy2 >= tLy2 ? tNumRows - 1 : (sy2 - 1 - tLy1) / tH;
		for (int row = startRow; row <= endRow; row++) {
			for (int col = startCol; col <= endCol; col++)
				if (t.getCell(col, row) != 0)
					return true;

		}

		return false;
	}

	public final boolean collidesWith(Image image, int x, int y) {
		if (!visible)
			return false;
		int otherLeft = x;
		int otherTop = y;
		int otherRight = x + image.getWidth();
		int otherBottom = y + image.getHeight();
		int left = this.x + collisionRectX;
		int top = this.y + collisionRectY;
		int right = left + collisionRectWidth;
		int bottom = top + collisionRectHeight;
		return intersectRect(otherLeft, otherTop, otherRight, otherBottom,
				left, top, right, bottom);
	}

	private void initializeFrames(Image image, int fWidth, int fHeight,
			boolean maintainCurFrame) {
		int imageW = image.getWidth();
		int imageH = image.getHeight();
		int numHorizontalFrames = imageW / fWidth;
		int numVerticalFrames = imageH / fHeight;
		sourceImage = image;
		this.srcFrameWidth = fWidth;
		this.srcFrameHeight = fHeight;
		numberFrames = numHorizontalFrames * numVerticalFrames;
		frameCoordsX = new int[numberFrames];
		frameCoordsY = new int[numberFrames];
		if (!maintainCurFrame)
			sequenceIndex = 0;
		if (!customSequenceDefined)
			frameSequence = new int[numberFrames];
		int currentFrame = 0;
		for (int yy = 0; yy < imageH; yy += fHeight) {
			for (int xx = 0; xx < imageW; xx += fWidth) {
//				System.out.println("xx=" + xx + ", yy=" + yy);
				frameCoordsX[currentFrame] = xx;
				frameCoordsY[currentFrame] = yy;
				if (!customSequenceDefined)
					frameSequence[currentFrame] = currentFrame;
				currentFrame++;
			}

		}

	}

	private void initCollisionRectBounds() {
		collisionRectX = 0;
		collisionRectY = 0;
		collisionRectWidth = width;
		collisionRectHeight = height;
	}

	private boolean intersectRect(int r1x1, int r1y1, int r1x2, int r1y2,
			int r2x1, int r2y1, int r2x2, int r2y2) {
		return r2x1 < r1x2 && r2y1 < r1y2 && r2x2 > r1x1 && r2y2 > r1y1;
	}

//	private int getImageTopLeftX(int x1, int y1, int x2, int y2) {
//		int retX = x1 - x;
//		retX += frameCoordsX[frameSequence[sequenceIndex]];
//		return retX;
//	}
//
//	private int getImageTopLeftY(int x1, int y1, int x2, int y2) {
//		int retY = y1 - y;
//		retY += frameCoordsY[frameSequence[sequenceIndex]];
//		return retY;
//	}
//
//	private void setTransformImpl(int transform) {
//		x = (x + getTransformedPtX(dRefX, dRefY, t_currentTransformation))
//				- getTransformedPtX(dRefX, dRefY, transform);
//		y = (y + getTransformedPtY(dRefX, dRefY, t_currentTransformation))
//				- getTransformedPtY(dRefX, dRefY, transform);
//		computeTransformedBounds(transform);
//		t_currentTransformation = transform;
//	}

//	private void computeTransformedBounds(int transform) {
//		switch (transform) {
//		case 0: // '\0'
//			t_collisionRectX = collisionRectX;
//			t_collisionRectY = collisionRectY;
//			t_collisionRectWidth = collisionRectWidth;
//			t_collisionRectHeight = collisionRectHeight;
//			width = srcFrameWidth;
//			height = srcFrameHeight;
//			break;
//
//		case 2: // '\002'
//			t_collisionRectX = srcFrameWidth
//					- (collisionRectX + collisionRectWidth);
//			t_collisionRectY = collisionRectY;
//			t_collisionRectWidth = collisionRectWidth;
//			t_collisionRectHeight = collisionRectHeight;
//			width = srcFrameWidth;
//			height = srcFrameHeight;
//			break;
//
//		case 1: // '\001'
//			t_collisionRectY = srcFrameHeight
//					- (collisionRectY + collisionRectHeight);
//			t_collisionRectX = collisionRectX;
//			t_collisionRectWidth = collisionRectWidth;
//			t_collisionRectHeight = collisionRectHeight;
//			width = srcFrameWidth;
//			height = srcFrameHeight;
//			break;
//
//		case 5: // '\005'
//			t_collisionRectX = srcFrameHeight
//					- (collisionRectHeight + collisionRectY);
//			t_collisionRectY = collisionRectX;
//			t_collisionRectHeight = collisionRectWidth;
//			t_collisionRectWidth = collisionRectHeight;
//			width = srcFrameHeight;
//			height = srcFrameWidth;
//			break;
//
//		case 3: // '\003'
//			t_collisionRectX = srcFrameWidth
//					- (collisionRectWidth + collisionRectX);
//			t_collisionRectY = srcFrameHeight
//					- (collisionRectHeight + collisionRectY);
//			t_collisionRectWidth = collisionRectWidth;
//			t_collisionRectHeight = collisionRectHeight;
//			width = srcFrameWidth;
//			height = srcFrameHeight;
//			break;
//
//		case 6: // '\006'
//			t_collisionRectX = collisionRectY;
//			t_collisionRectY = srcFrameWidth
//					- (collisionRectWidth + collisionRectX);
//			t_collisionRectHeight = collisionRectWidth;
//			t_collisionRectWidth = collisionRectHeight;
//			width = srcFrameHeight;
//			height = srcFrameWidth;
//			break;
//
//		case 7: // '\007'
//			t_collisionRectX = srcFrameHeight
//					- (collisionRectHeight + collisionRectY);
//			t_collisionRectY = srcFrameWidth
//					- (collisionRectWidth + collisionRectX);
//			t_collisionRectHeight = collisionRectWidth;
//			t_collisionRectWidth = collisionRectHeight;
//			width = srcFrameHeight;
//			height = srcFrameWidth;
//			break;
//
//		case 4: // '\004'
//			t_collisionRectY = collisionRectX;
//			t_collisionRectX = collisionRectY;
//			t_collisionRectHeight = collisionRectWidth;
//			t_collisionRectWidth = collisionRectHeight;
//			width = srcFrameHeight;
//			height = srcFrameWidth;
//			break;
//
//		default:
//			throw new IllegalArgumentException();
//		}
//	}

//	int getTransformedPtX(int x, int y, int transform) {
//		int t_x = 0;
//		switch (transform) {
//		case 0: // '\0'
//			t_x = x;
//			break;
//		case 2: // '\002'
//			t_x = srcFrameWidth - x - 1;
//			break;
//		case 1: // '\001'
//			t_x = x;
//			break;
//		case 5: // '\005'
//			t_x = srcFrameHeight - y - 1;
//			break;
//		case 3: // '\003'
//			t_x = srcFrameWidth - x - 1;
//			break;
//		case 6: // '\006'
//			t_x = y;
//			break;
//		case 7: // '\007'
//			t_x = srcFrameHeight - y - 1;
//			break;
//		case 4: // '\004'
//			t_x = y;
//			break;
//		default:
//			throw new IllegalArgumentException();
//		}
//		return t_x;
//	}
//
//	int getTransformedPtY(int x, int y) {
//		int t_y = 0;
//		switch (transform) {
//		case 0: // '\0'
//			t_y = y;
//			break;
//
//		case 2: // '\002'
//			t_y = y;
//			break;
//
//		case 1: // '\001'
//			t_y = srcFrameHeight - y - 1;
//			break;
//
//		case 5: // '\005'
//			t_y = x;
//			break;
//
//		case 3: // '\003'
//			t_y = srcFrameHeight - y - 1;
//			break;
//
//		case 6: // '\006'
//			t_y = srcFrameWidth - x - 1;
//			break;
//
//		case 7: // '\007'
//			t_y = srcFrameWidth - x - 1;
//			break;
//
//		case 4: // '\004'
//			t_y = x;
//			break;
//
//		default:
//			throw new IllegalArgumentException();
//		}
//		return t_y;
//	}

//	public static final int TRANS_NONE = 0;
//	public static final int TRANS_ROT90 = 5;
//	public static final int TRANS_ROT180 = 3;
//	public static final int TRANS_ROT270 = 6;
//	public static final int TRANS_MIRROR = 2;
//	public static final int TRANS_MIRROR_ROT90 = 7;
//	public static final int TRANS_MIRROR_ROT180 = 1;
//	public static final int TRANS_MIRROR_ROT270 = 4;
	private static final int INVERTED_AXES = 4;
	private static final int X_FLIP = 2;
	private static final int Y_FLIP = 1;
	private static final int ALPHA_BITMASK = 0xff000000;

	Image sourceImage;
	int numberFrames;
	int frameCoordsX[];
	int frameCoordsY[];
	int srcFrameWidth;
	int srcFrameHeight;
	int frameSequence[];
	private int sequenceIndex;
	private boolean customSequenceDefined;
//	int dRefX;
//	int dRefY;
	int collisionRectX;
	int collisionRectY;
	int collisionRectWidth;
	int collisionRectHeight;
//	int t_currentTransformation;
//	int t_collisionRectX;
//	int t_collisionRectY;
//	int t_collisionRectWidth;
//	int t_collisionRectHeight;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区在线不卡| 欧美日韩国产不卡| 久久久午夜精品| 久久国产精品无码网站| 久久影院午夜论| www.久久久久久久久| 亚洲激情校园春色| 欧美另类高清zo欧美| 麻豆一区二区三区| 欧美经典一区二区| 日本高清不卡aⅴ免费网站| 亚洲成人激情社区| 久久午夜色播影院免费高清| 99视频精品在线| 日韩激情在线观看| 国产日韩精品视频一区| 91福利小视频| 国产一区二区视频在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲综合一区在线| 日韩一二三区不卡| 成人动漫视频在线| 亚洲123区在线观看| 欧美精品一区二区高清在线观看| 国产一区二区伦理| 亚洲免费观看高清完整版在线观看| 欧美日韩亚洲另类| 国产成人精品aa毛片| 性做久久久久久免费观看| 国产亚洲福利社区一区| 欧美日韩久久久| 成人av资源站| 久久精品国产久精国产| 亚洲免费观看高清| 久久久99精品免费观看不卡| 欧美日韩一区高清| 成人aa视频在线观看| 麻豆精品新av中文字幕| 亚洲欧美综合网| 精品免费日韩av| 欧美午夜精品一区| 国产69精品久久777的优势| 石原莉奈在线亚洲三区| 国产精品久久看| 337p日本欧洲亚洲大胆色噜噜| 色天使色偷偷av一区二区| 国产在线观看免费一区| 亚洲国产aⅴ天堂久久| 国产精品成人午夜| 2017欧美狠狠色| 欧美一区二区三区不卡| 91在线看国产| 成人av动漫网站| 极品销魂美女一区二区三区| 丝袜美腿亚洲色图| 亚洲综合色噜噜狠狠| 国产精品黄色在线观看| 久久综合狠狠综合久久综合88| 欧美一区二区私人影院日本| 欧美在线视频不卡| 91网上在线视频| 不卡av在线网| 成人视屏免费看| 岛国一区二区三区| 国产精品自在欧美一区| 久久国产精品99久久人人澡| 美腿丝袜一区二区三区| 欧美a级一区二区| 日韩电影在线观看网站| 日韩国产欧美三级| 日日摸夜夜添夜夜添国产精品 | 69精品人人人人| 欧美福利视频一区| 欧美日韩在线播放| 欧美色老头old∨ideo| 欧美日韩亚洲丝袜制服| 欧美日韩免费高清一区色橹橹| 欧美影院午夜播放| 欧美吻胸吃奶大尺度电影| 欧美在线影院一区二区| 欧美久久久久久久久久| 777a∨成人精品桃花网| 欧美大片在线观看一区| 精品国一区二区三区| 国产亚洲va综合人人澡精品| 国产精品视频九色porn| 日韩一区在线免费观看| 一区二区三区 在线观看视频| 亚洲国产精品一区二区久久恐怖片 | 国产真实乱对白精彩久久| 国产精品自在在线| 波多野结衣亚洲一区| 色88888久久久久久影院野外| 欧美中文字幕一二三区视频| 欧美夫妻性生活| ww久久中文字幕| 国产精品久久久久久久久图文区 | 亚洲成人先锋电影| 麻豆精品视频在线观看免费| 久草热8精品视频在线观看| 国产福利电影一区二区三区| 91老司机福利 在线| 91精品国产综合久久蜜臀| 久久综合中文字幕| 亚洲免费在线播放| 日韩国产欧美在线播放| 国产电影精品久久禁18| 在线看国产日韩| 精品va天堂亚洲国产| **欧美大码日韩| 日产精品久久久久久久性色| 国产成人免费av在线| 欧美性生活影院| 久久女同精品一区二区| 一二三四社区欧美黄| 麻豆免费精品视频| 不卡的av电影| 日韩精品一区二区三区在线播放| 亚洲欧洲日韩av| 久久99精品久久久久久| 色国产精品一区在线观看| 日韩三级视频中文字幕| 亚洲乱码国产乱码精品精可以看| 日本v片在线高清不卡在线观看| 粉嫩蜜臀av国产精品网站| 欧美美女直播网站| 国产精品电影一区二区| 久久国内精品自在自线400部| 99久久婷婷国产综合精品电影 | 久久久久高清精品| 亚洲地区一二三色| jvid福利写真一区二区三区| 日韩欧美成人午夜| 亚洲成a天堂v人片| 成人黄色综合网站| 欧美成人一区二区三区| 亚洲狠狠爱一区二区三区| 福利一区福利二区| 日韩精品一区二区三区三区免费| 亚洲自拍偷拍欧美| av午夜精品一区二区三区| 精品成人免费观看| 麻豆精品在线播放| 欧美精品三级在线观看| 樱桃国产成人精品视频| 成人午夜电影小说| 亚洲精品一区二区精华| 日本不卡一区二区三区| 欧美性猛片aaaaaaa做受| 国产精品久久夜| 国产一区二区三区免费播放| 91精品国产欧美一区二区| 一级女性全黄久久生活片免费| 成人av集中营| 成人欧美一区二区三区白人| 国产成人免费视频 | 国产精品午夜春色av| 国产高清成人在线| 久久久天堂av| 国产福利91精品一区| 久久久精品国产免大香伊| 国产精品小仙女| 国产亚洲一二三区| 国产凹凸在线观看一区二区| 国产片一区二区| 成人av在线资源网站| 国产精品国产三级国产三级人妇 | 婷婷综合久久一区二区三区| 在线观看日韩高清av| 一区二区日韩av| 欧美绝品在线观看成人午夜影视| 亚洲主播在线播放| 欧美少妇一区二区| 日本欧美一区二区三区| 欧美sm极限捆绑bd| 国产成人亚洲综合色影视| 国产视频911| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产精品青草综合久久久久99| 国产黄色91视频| 国产精品久久久久7777按摩| 99久久精品99国产精品| 一区二区视频在线看| 91久久精品一区二区| 亚洲1区2区3区4区| 日韩免费看网站| 国产精品一区二区久久不卡| 国产精品久久久久久户外露出| 99re热这里只有精品免费视频| 亚洲一级二级三级| 日韩一级大片在线| 成人免费黄色在线| 亚洲一区二区视频在线观看| 日韩视频一区二区三区| 国产精品亚洲专一区二区三区| 亚洲视频一区二区在线| 欧美一区二区日韩| 成人毛片视频在线观看| 亚洲一区二区视频在线观看| 精品国产乱码久久久久久影片|