andengine游戏引擎总结基础篇
????? 其他的游戲引擎知道的不是很對(duì),不過(guò)相對(duì)于學(xué)java的童鞋們來(lái)說(shuō),那是個(gè)不錯(cuò)的選擇啦,這個(gè)發(fā)動(dòng)機(jī)咋樣,google去吧。基礎(chǔ)篇包括圖片,字體,音效,數(shù)據(jù)讀取,會(huì)了這點(diǎn),就會(huì)做簡(jiǎn)單的小游戲啦
?????? 對(duì)于游戲開(kāi)發(fā),也就是把靜待的圖片動(dòng)態(tài)化,同時(shí)加點(diǎn)音效什么的。
?????? 1.圖片
??????? 1)?聲名
BitmapTextureAtlas mTexturePlayer this.mBitmapTextureAtlas = new BitmapTextureAtlas(32, 32, TextureOptions.BILINEAR_PREMULTIPLYALPHA); 對(duì)于這個(gè)類,作用就相當(dāng)于開(kāi)辟一個(gè)內(nèi)從空間,以后用來(lái)盛具體的圖片,所以,開(kāi)辟大小一定要大于圖片像素大小????????2)加載資源
????????? 分兩種,一種是TextureRegion這個(gè)加載單個(gè)圖片,另一種是TiledTextureRegion,加載可以分割的圖片
???????? TextureRegion:
private TextureRegion mFaceTextureRegion; this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "Menu.jpg", 0, 0)
???????????? TiledTextureRegion
???????????? player.png是圖片名,4,4是分割方式4*4分割方式
?????????? 3)注冊(cè)資源
this.mEngine.getTextureManager().loadTexture(this.mTextureArm0);如果不注冊(cè),顯示的是空白區(qū)域
只要申請(qǐng)了資源,就一定要注冊(cè),就是使用了BitmapTextureAtlas,就一定要把它注冊(cè)到engine中
????????4)使用
?????? 也分兩種,一種是Sprite ,使用的是TextureRegion加載的圖片。
this.backSprite=new Sprite(0, 0, mBackgroundTextureRegion);?????? 另一種是AnimateSprinte,這個(gè)具備動(dòng)畫效果。
final AnimatedSprite player = new AnimatedSprite(centerX-200, centerY-100,this.mPlayerTextureRegion);//???????? 具體的動(dòng)畫,調(diào)用animate()函數(shù),圖片可以使用回調(diào)函數(shù),產(chǎn)生復(fù)雜的效果
final Sprite sprite = new Sprite(pX, pY, this.armsMap.get(pCard)) {boolean mGrabbed = false;@Overridepublic 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, "您購(gòu)買了光彈", 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, "對(duì)不起,金錢不足吆", Toast.LENGTH_SHORT).show();}this.setScale(1.0f);}break;}return true;}};上邊代碼實(shí)現(xiàn)觸摸選擇購(gòu)買子彈,其中涉及如何用xml方式讀寫數(shù)據(jù),會(huì)在后續(xù)進(jìn)行講解
??????? 4)加載到場(chǎng)景中
this.mScene.attachChild(sprite);??????? 2字體
???? 同樣分三種,聲明,加載資源,使用。
????1)聲明,申請(qǐng)內(nèi)存資源
BitmapTextureAtlas mStrokeFontTexture;??? 2)加載字體資源
this.mStrokeFont = new StrokeFont(this.mStrokeFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.BLUE, 2, Color.YELLOW);字體類型也很多,可以使用系統(tǒng)默認(rèn)的,也可以使用加載的,可以是帶邊框的,也可以是不帶的
?? 3)注冊(cè)到engine中
this.mEngine.getFontManager().loadFont( this.mStrokeFont);
?
?? 4)字體使用
?? 使用好了會(huì)幫你解決不少麻煩
final Text textNormal = new Text(100, 100, this.mFont, "Just some normal Text.");比如下邊的可變字體,還有金幣字體等 mCurrBossLive=new ChangeableText(0,0, this.mStrokeFont, "?????", "?????".length());5)加載到場(chǎng)景中
scene.attachChild(textStroke);3音效使用
????????? 分為長(zhǎng)的背景音樂(lè)(格式一般為mp3)跟短的音效(如.ogg格式,大小不超過(guò)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();??????? 也有重復(fù)?music.setLooping(true);,暫停等很多功能,只需要一行代碼;
??????? 4用xml方式讀寫數(shù)據(jù)
????????????????? 1)聲明
?????????????????
public static SharedPreferences scores;private SharedPreferences.Editor scoresEditor; scores=getSharedPreferences("scores", MODE_PRIVATE);scoresEditor=scores.edit();??????????????? 2)使用
??????????????
scores.getInt("user0",-1)//讀數(shù)據(jù),讀的是user0中的整形數(shù)據(jù),如果找不到,用0代替 ?????scoresEditor.putInt("suer0", count);//將整型變量count中的數(shù)據(jù)存到user0中scoresEditor.commit();//一定要提交 //SharedPreferences是用來(lái)讀的,int float string等等 //SharedPreferences.Editor用來(lái)寫的,寫完后一定要提交
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/pangblog/p/3331264.html
總結(jié)
以上是生活随笔為你收集整理的andengine游戏引擎总结基础篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 汽车显示屏显示车一圈红色怎么回事?
- 下一篇: 东风本田思铭车头是本田标志,而方向盘不是