AndEngine----PathModifierExample学习之模仿《w》行走

防着Example中的代码写的,没有什么好说的!直接贴代码:

public class PathModifierMy extends SimpleBaseGameActivity {
	private int mCameraWidth = 0;
	private int mCameraHeight = 0;
	private RepeatingSpriteBackground mRepeatingSpriteBackground;
	private BitmapTextureAtlas mPlayer;
	private TiledTextureRegion mPlayerRegion;
	Path mPlayerPath;
	AnimatedSprite mPlayerAnimatedSprite;
	PathModifier mPathModifier;
	LoopEntityModifier mLoopEntityModifier;

	private void initCameraSize() {
		mCameraWidth = getResources().getDisplayMetrics().widthPixels;
		mCameraHeight = getResources().getDisplayMetrics().heightPixels;
	}

	@Override
	public EngineOptions onCreateEngineOptions() {
		initCameraSize();
		Camera camera = new Camera(0, 0, mCameraWidth, mCameraHeight);
		return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED,
				new RatioResolutionPolicy(mCameraWidth, mCameraHeight), camera);
	}

	@Override
	protected void onCreateResources() {
		BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
		mRepeatingSpriteBackground = new RepeatingSpriteBackground(
				mCameraWidth, mCameraHeight, getTextureManager(),
				AssetBitmapTextureAtlasSource.create(getAssets(),
						"gfx/background_grass.png"),
				getVertexBufferObjectManager());
		mPlayer = new BitmapTextureAtlas(getTextureManager(), 128, 128);
		mPlayerRegion = BitmapTextureAtlasTextureRegionFactory
				.createTiledFromAsset(mPlayer, this, "player.png", 0, 0, 3, 4);
		mPlayer.load();
	}

	@Override
	protected Scene onCreateScene() {
		mEngine.registerUpdateHandler(new FPSLogger());
		Scene scene = new Scene();
		scene.setBackground(mRepeatingSpriteBackground);
		/* Create the face and add it to the scene. */
		mPlayerAnimatedSprite = new AnimatedSprite(10, 10, 48, 64,
				this.mPlayerRegion, this.getVertexBufferObjectManager());
		// 构造path,6为Path链接的次数,即后面to的个数,可以大于,但是不能小于
		mPlayerPath = new Path(6)
		// 初始点
				.to(10, 10)
				// 到第一个拐点
				.to(mCameraWidth / 4.0f, mCameraHeight - 64)
				// 到第二个拐点
				.to(mCameraWidth / 2.0f, mCameraHeight / 2.0f)
				// 到第三个拐点
				.to(3 * mCameraWidth / 4.0f, mCameraHeight - 64)
				// 到第四个拐点
				.to(mCameraWidth - 64, 10);
		mPathModifier = new PathModifier(30, mPlayerPath, null,
				mPathModifierListener, EaseSineInOut.getInstance());
		mLoopEntityModifier = new LoopEntityModifier(mPathModifier);
		mPlayerAnimatedSprite.registerEntityModifier(mLoopEntityModifier);
		scene.attachChild(mPlayerAnimatedSprite);
		return scene;
	}

	IPathModifierListener mPathModifierListener = new IPathModifierListener() {

		@Override
		public void onPathWaypointStarted(PathModifier pPathModifier,
				IEntity pEntity, int pWaypointIndex) {
			switch (pWaypointIndex) {
			case 0:
				mPlayerAnimatedSprite.animate(new long[] { 200, 200, 200 }, 6,
						8, true);
				break;
			case 1:
				mPlayerAnimatedSprite.animate(new long[] { 200, 200, 200 }, 0,
						2, true);
				break;
			case 2:
				mPlayerAnimatedSprite.animate(new long[] { 200, 200, 200 }, 6,
						8, true);
				break;
			case 3:
				mPlayerAnimatedSprite.animate(new long[] { 200, 200, 200 }, 0,
						2, true);
				break;
			case 4:
				mPlayerAnimatedSprite.animate(new long[] { 200, 200, 200 }, 9,
						11, true);
				break;
			default:
				break;
			}
		}

		@Override
		public void onPathWaypointFinished(PathModifier pPathModifier,
				IEntity pEntity, int pWaypointIndex) {

		}

		@Override
		public void onPathStarted(PathModifier pPathModifier, IEntity pEntity) {
			Debug.d(" [onPathStarted] ");
		}

		@Override
		public void onPathFinished(PathModifier pPathModifier, IEntity pEntity) {
			Debug.d(" [onPathFinished] ");
		}
	};

}


有点郁闷的是,AndEngine里面参数真是让人蛋疼菊紧呀!都是接口,方法实现后,代码又长又难看!不知道这样做是为什么呢?可能现在还没有得到其精髓吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值