新聞中心
游戲屏幕最常見的就是一個變化較少的背景加上一系列和用戶交互的角色和部件。為了方便管理你還可以為背景建個Group方便管理。

創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、App定制開發(fā)、手機網(wǎng)站制作設(shè)計、微信網(wǎng)站制作、軟件開發(fā)、西云機房等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。
但是有時候?qū)懙臅r候沒有想到這個問題,或者是背景不是單純的一個圖片什么的,背景和角色還有一些混合邏輯分布在兩個Stage里。我重寫太麻煩,想想反正都是SpritBatch繪制出來的,用雙舞臺大不了多個攝像頭。馬上試試還真行。
先看看Stage的draw方法:
- /** Renders the stage */
- public void draw () {
- camera.update();
- if (!root.visible) return;
- batch.setProjectionMatrix(camera.combined);
- batch.begin();
- root.draw(batch, 1);
- batch.end();
- }
batch的話兩個舞臺可以共用。用Stage(width, height, stretch, batch)實例化第二個舞臺。
代碼如下:
- package com.cnblogs.htynkn.game;
- import com.badlogic.gdx.ApplicationListener;
- import com.badlogic.gdx.Gdx;
- import com.badlogic.gdx.InputProcessor;
- import com.badlogic.gdx.graphics.GL10;
- import com.badlogic.gdx.graphics.Texture;
- import com.badlogic.gdx.graphics.g2d.TextureRegion;
- import com.badlogic.gdx.scenes.scene2d.Stage;
- import com.badlogic.gdx.scenes.scene2d.ui.Image;
- public class JavaGame implements ApplicationListener {
- Stage stage1;
- Stage stage2;
- float width;
- float height;
- @Override
- public void create() {
- width = Gdx.graphics.getWidth();
- height = Gdx.graphics.getHeight();
- stage1 = new Stage(width, height, true);
- stage2 = new Stage(width, height, true,stage1.getSpriteBatch());
- Image image = new Image(new TextureRegion(new Texture(Gdx.files
- .internal("img/sky.jpg")), 50, 50, 480, 320));
- stage1.addActor(image);
- Image image2 = new Image(new TextureRegion(new Texture(Gdx.files
- .internal("img/baihu.png")), 217, 157));
- image2.x=(width-image2.width)/2;
- image2.y=(height-image2.height)/2;
- stage2.addActor(image2);
- }
- @Override
- public void dispose() {
- // TODO Auto-generated method stub
- }
- @Override
- public void pause() {
- // TODO Auto-generated method stub
- }
- @Override
- public void render() {
- Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
- stage1.act(Gdx.graphics.getDeltaTime());
- stage2.act(Gdx.graphics.getDeltaTime());
- stage1.draw();
- stage2.draw();
- }
- @Override
- public void resize(int width, int height) {
- // TODO Auto-generated method stub
- }
- @Override
- public void resume() {
- // TODO Auto-generated method stub
- }
- }
效果:
如果你對于效率追求比較極致,可以考慮對于SpritBatch的緩沖數(shù)進(jìn)行修改。
還有一個需要注意,背景舞臺應(yīng)該先繪制,其他部件后繪制,不然效果就是下圖:
關(guān)于舞臺的輸入控制,不能簡單的使用:
- Gdx.input.setInputProcessor(stage1);
- Gdx.input.setInputProcessor(stage2);
應(yīng)該這樣做:
- InputMultiplexer inputMultiplexer=new InputMultiplexer();
- inputMultiplexer.addProcessor(stage1);
- inputMultiplexer.addProcessor(stage2);
新聞標(biāo)題:Android游戲引擎libgdx使用教程10:雙舞臺
文章路徑:http://m.fisionsoft.com.cn/article/ccdgjpg.html


咨詢
建站咨詢
