andengine实现翻牌游戏1

学了几天的andengine了, 虽然没看几个例子, 但是打算做个小游戏了, 系统的学习下怎么做游戏吧。 这样在做的过程中发现问题解决问题才能印象深刻。

考虑了n分钟后决定做个翻牌游戏,毕竟像连连看  俄罗斯方块这种游戏虽然烂大街, 但是里面逻辑对我来说还是比较复杂的, 而翻牌游戏感觉不难, 从今天开始试着做吧。

http://app.baidu.com/app/enter?appid=217236 就照这个做了, 呵呵。 希望中间不要遇到太大的难题打击我的积极性。

今天分析了下,对我来说比较困难的地方有几点:1、如何画这些方格 2、Sprite点击后如何更换texture也就是图片 3、还没想到, 边做边说吧可怜 新手啊, 没做游戏的经验, 没啥规划, 惭愧。


今天花了几个小时才把第二个问题解决, 遇到问题后各种百度 google  官方论坛啊, 不知道是我搜索水平低 还是这问题太初级, 竟然没找到解决方法。 虽然官方例子里有个类似的, 但是感觉在这个游戏中不太适用, 因为他是把Texture中的图片换了, 这样肯定会把所有使用这一块的图片全换掉,不太合常理啊。

后来终于想到一个比较笨的方法, 那就是用AnimatedSprite, 但是不让他动。 点击的时候设置CurrentTileIndex为另一个数字就好。 



这是测试图片, 大笑  以后真正的游戏中前四帧是i翻转的效果, 最后一图则是用来比较的图片。

现在实现的效果就是, 刚开始只显示第一帧, 然后点击Sprite时,播放全部动画, 播放完成之后显示最后一帧, 然后sleep200毫秒后切换为第一帧。


好, 下面上代码:

@Override
	public Scene onCreateScene() {

		this.mEngine.registerUpdateHandler(new FPSLogger());

		final Scene scene = new Scene();
		scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
		
		AnimatedSprite tSprite = new AnimatedSprite(100, 100, tiledTextureRegion, getVertexBufferObjectManager()){
			@Override
			public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
					float pTouchAreaLocalX, float pTouchAreaLocalY) {
				if(pSceneTouchEvent.isActionUp()){
						animate(100,false,new IAnimationListener() {
							@Override
							public void onAnimationFinished(AnimatedSprite pAnimatedSprite) {
								try {
									Thread.sleep(1000);
								} catch (InterruptedException e) {
									e.printStackTrace();
								}
								setCurrentTileIndex(0);
							}

							@Override
							public void onAnimationStarted(
									AnimatedSprite pAnimatedSprite,
									int pInitialLoopCount) {
							}

							@Override
							public void onAnimationFrameChanged(
									AnimatedSprite pAnimatedSprite,
									int pOldFrameIndex, int pNewFrameIndex) {
							}

							@Override
							public void onAnimationLoopFinished(
									AnimatedSprite pAnimatedSprite,
									int pRemainingLoopCount,
									int pInitialLoopCount) {
							}
						});
					}
				return true;
			}
		};
		
		scene.attachChild(tSprite);
		scene.registerTouchArea(tSprite);
		return scene;
	}
OK, 暂时就是这样的, 感觉这样实现怪怪的, 明天继续找下正确的方法。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值