andengine游戏引擎总结基础篇
其他的游戏引擎知道的不是很对,不过相对于学java的童鞋们来说,那是个不错的选择啦,这个发动机咋样,google去吧。基础篇包括图片,字体,音效,数据读取,会了这点,就会做简单的小游戏啦
对于游戏开发,也就是把静待的图片动态化,同时加点音效什么的。
1.图片
1) 声名
BitmapTextureAtlas mTexturePlayer
this.mBitmapTextureAtlas = new BitmapTextureAtlas(32, 32, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
对于这个类,作用就相当于开辟一个内从空间,以后用来盛具体的图片,所以,开辟大小一定要大于图片像素大小
2)加载资源
分两种,一种是TextureRegion这个加载单个图片,另一种是TiledTextureRegion,加载可以分割的图片
TextureRegion:
private TextureRegion mFaceTextureRegion;
this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "Menu.jpg", 0, 0)
TiledTextureRegion
private TiledTextureRegion mPlayerTextureRegion;
this.mPlayerTextureRegion = BitmapTextureAtlasTextureRegionFactory
.createTiledFromAsset(this.mTexturePlayer, this, "player.png",
0, 0, 4, 4);
player.png是图片名,4,4是分割方式4*4分割方式
3)注册资源
this.mEngine.getTextureManager().loadTexture(this.mTextureArm0);
如果不注册,显示的是空白区域
只要申请了资源,就一定要注册,就是使用了BitmapTextureAtlas,就一定要把它注册到engine中
4)使用
也分两种,一种是Sprite ,使用的是TextureRegion加载的图片。
this.backSprite=new Sprite(0, 0, mBackgroundTextureRegion);
另一种是AnimateSprinte,这个具备动画效果。
final AnimatedSprite player = new AnimatedSprite(centerX-200, centerY-100,
this.mPlayerTextureRegion);//
具体的动画,调用animate()函数,图片可以使用回调函数,产生复杂的效果
final Sprite sprite = new Sprite(pX, pY, this.armsMap.get(pCard)) {
boolean mGrabbed = false;
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
switch(pSceneTouchEvent.getAction()) {
case TouchEvent.ACTION_DOWN:
this.setScale(1.25f);
this.mGrabbed = true;
break;
case TouchEvent.ACTION_UP:
if(this.mGrabbed) {
if(choice>=1)
{
armsEditor.putInt("arm", 1);
armsEditor.commit();
Intent myintent=new Intent(ChoiceArms.this, MenuGame.class);
ChoiceArms.this.startActivity(myintent);
System.gc();
System.exit(0);
}
else if(usermoney>10)
{
usermoney-=10;
this.mGrabbed = false;
this.setScale(1.0f);
moneyEditor.putInt("money", usermoney);
moneyEditor.commit();
armsEditor.putInt("arm", 1);
armsEditor.commit();
choice=1;
armsEditor.putInt("choice", choice);
armsEditor.commit();
Toast.makeText(ChoiceArms.this, "您购买了光弹", Toast.LENGTH_SHORT).show();
Intent myintent=new Intent(ChoiceArms.this, MenuGame.class);
ChoiceArms.this.startActivity(myintent);
System.gc();
System.exit(0);
}
else
{
Toast.makeText(ChoiceArms.this, "对不起,金钱不足吆", Toast.LENGTH_SHORT).show();
}
this.setScale(1.0f);
}
break;
}
return true;
}
};
上边代码实现触摸选择购买子弹,其中涉及如何用xml方式读写数据,会在后续进行讲解
4)加载到场景中
this.mScene.attachChild(sprite);
2字体
同样分三种,声明,加载资源,使用。
1)声明,申请内存资源
BitmapTextureAtlas mStrokeFontTexture;
2)加载字体资源
this.mStrokeFont = new StrokeFont(this.mStrokeFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.BLUE, 2, Color.YELLOW);
字体类型也很多,可以使用系统默认的,也可以使用加载的,可以是带边框的,也可以是不带的
3)注册到engine中
this.mEngine.getFontManager().loadFont( this.mStrokeFont);
4)字体使用
使用好了会帮你解决不少麻烦
final Text textNormal = new Text(100, 100, this.mFont, "Just some normal Text.");
比如下边的可变字体,还有金币字体等
mCurrBossLive=new ChangeableText(0,0, this.mStrokeFont, "♢♢♢♢♢", "♢♢♢♢♢".length());
5)加载到场景中
scene.attachChild(textStroke);
3音效使用
分为长的背景音乐(格式一般为mp3)跟短的音效(如.ogg格式,大小不超过1M)。
1)引擎声明使用 Engine中setNeedsMusic(true).setNeedsSound(true));
Engine engine=new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE,
new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),
this.mBoundChaseCamera).setNeedsMusic(true).setNeedsSound(true));
2)加载资源
music=MusicFactory.createMusicFromAsset(getMusicManager(), getApplicationContext(), "BlueWorld.mp3");
3)使用
music.play();
也有重复 music.setLooping(true);,暂停等很多功能,只需要一行代码;
4用xml方式读写数据
1)声明
public static SharedPreferences scores;
private SharedPreferences.Editor scoresEditor;
scores=getSharedPreferences("scores", MODE_PRIVATE);
scoresEditor=scores.edit();
2)使用
scores.getInt("user0",-1)//读数据,读的是user0中的整形数据,如果找不到,用0代替
scoresEditor.putInt("suer0", count);//将整型变量count中的数据存到user0中
scoresEditor.commit();//一定要提交
//SharedPreferences是用来读的,int float string等等
//SharedPreferences.Editor用来写的,写完后一定要提交
andengine游戏引擎总结基础篇的更多相关文章
- andengine游戏引擎总结进阶篇2
本篇包括瓦片地图,物理系统, 1瓦片地图 超级玛丽,冒险岛,魂斗罗等游戏主场景都有瓦片地图画成,它的作用可见一斑,它可以用tiled Qt软件画成,在辅助篇中讲讲解tiled Qt软件的使用 1)加载 ...
- andengine游戏引擎总结进阶篇1
本篇包括虚拟键盘,粒子系统 1虚拟键盘 分为两种,一种是单个虚拟键盘,另一种是多个方位虚拟键盘 1)加载虚拟键盘所需要的图片资源 private BitmapTextureAtlas mOnScree ...
- 如何制作一款HTML5 RPG游戏引擎——第五篇,人物&人物特效
上一次,我们实现了对话类,今天就来做一个游戏中必不可少的——人物类. 当然,你完全是可以自己写一个人物类,但是为了方便起见,还是决定把人物类封装到这个引擎里. 为了使这个类更有意义,我还给人物类加了几 ...
- 如何制作一款HTML5 RPG游戏引擎——第四篇,情景对话
今天我们来实现情景对话.这是一个重要的功能,没有它,游戏将变得索然无味.所以我们不得不来完成它. 但是要知道,使用对话可不是一件简单的事,因为它内部的东西很多,比如说人物头像,人物名称,对话内容... ...
- 如何制作一款HTML5 RPG游戏引擎——第三篇,利用幕布切换场景
开言: 在RPG游戏中,如果有地图切换的地方,通常就会使用幕布效果.所谓的幕布其实就是将两个矩形合拢,直到把屏幕遮住,然后再展开直到两个矩形全部移出屏幕. 为了大家做游戏方便,于是我给这个引擎加了这么 ...
- HTML5 RPG游戏引擎 地图实现篇
一,话说全国年夜事 前没有暂看到lufy的专客上,有一名伴侣念要一个RPG游戏引擎,出于兴趣筹办入手做一做.因为我研讨lufylegend有冶时间了,对它有必然的依赖性,因而便筹办将那个引擎基于 ...
- HGE游戏引擎之实战篇,渐变的游戏开场
#include <hge.h> #include "menuitem.h" //#include <hgefont.h> #include <hge ...
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
原地址:http://www.cnblogs.com/xuling/archive/2013/03/04/2943154.html 最近开始研究U3D,它的强大就不多说了, 今天研究了研究射线相关东西 ...
- Atitit 基于dom的游戏引擎
Atitit 基于dom的游戏引擎 1. 添加sprite控件(cocos,createjs,dom)1 1.1.1. Cocos1 1.1.2. createjs1 1.1.3. Dom模式2 1. ...
随机推荐
- Linux使用技巧9--用dpkg管理你的软件
dpkg(package manager for Debian): debian体系中的包管理工具. Commands: -i|--install <.deb file name> ... ...
- HTML高级标签(2)————窗体分帧(2)————后台管理页面
使用frameset进行窗体分帧.构建简易的后台页面.这篇博客就作为一个简易后台管理页面的实战演练. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3px ...
- DOS窗口中文显示乱码
记得以前的dos是可以显示中文的,但是今天复制东西发现竟然不能显示中文了,遇见中文就成了? 在右键->默认值中的默认代码页也显示有中文GBK,但是不管用 在右键->属性中的当前代码页显示为 ...
- Unity 3D 调用摄像头捕获照片 录像
1,要想调用摄像头首先要打开摄像头驱动,如果用户允许则可以使用. 2,定义WebCamTexture的变量用于捕获单张照片. 3,连续捕获须启用线程. 实现代码: using UnityEngine; ...
- oracle ORA_ROWSCN 行记录的更新时间
在这介绍两个oracle 10G开始提供的一个伪列ORA_ROWSCN,它又分为两种模式一种是基于block,这是默认的模式,还有一种是基于row上,这种模式只能在建里表时指定ROWDEPENDENC ...
- stagefright框架(一)Video Playback的流程
在Android上,預設的多媒體框架(multimedia framework)是OpenCORE. OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定:但是其缺點 ...
- C# 单例模式(转)
C#设计模式学习笔记-单例模式 最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记. 在<Design Patterns:Elements of Resuab ...
- Asp.Net Identity自定义user类的运用,ClaimsIdentity
mvc5自动生成的用户验证是比较好用的,还可以扩展,可是要求code first,目前使用sqlite,支持entity framework,但不支持code first. 只有自已简单模仿一下了.经 ...
- Integer to Roman(JAVA)
public String intToRoman(int num) { int[] values={1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[ ...
- Windows Server 2008 R2 IIS重装
背景描述: 在一个刚睡醒午觉后的下午,忽然收到客户反馈,说昨天开始应用特别卡,各种卡各种不好用,忽然想到上次说要优化服务器IIS配置还一直没弄,然后迷迷糊糊的就开始进行客户现场服务器IIS配置优化,涉 ...