注:由于教程为基础教程所以操作均在继承ApplicationAdapter的默认类里面完成。
Stage(舞台组件):
用于添加对象,控制输入,是游戏的核心。
定义和使用:
Stage stage;//定义舞台
………………
……{//creat或者show中
…………
stage = new Stage(new StretchViewport(800, 480));//创建舞台
Gdx.input.setInputProcessor(stage);//设置输入处理器
stage.add(…………);//添加组件
…………
}
……{//render中
stage.act();
stage.draw();
}
舞台还可以设置其他类型的视口(Viewports),摄像机(Camer)(限于篇幅以后再讲)。舞台大小可以超过窗口大小,在有多个舞台或者输入处理器时应该采用以下方式添加:
InputMultiplexer inputMultiplexer= new InputMultiplexer();//创建一个InputMultiplexer实例
Gdx.input.setInputProcessor(inputMultiplexer);//将inputMultiplexer设置为输入处理器
inputMultiplexer.addProcessor(stage);//添加舞台作为输入处理器
inputMultiplexer.addProcessor(stage1);//添加舞台作为输入处理器
………………
顺带一提,舞台类(stage)和画布类(batch)在render里面的顺序会影响重叠时的优先度,一般先进行batch的操作再继续stage的操作。
Button(按钮组件):
主要用于点击事件,一般使用BouttonStyle构建,位置可以重叠,多个按钮重叠时取最上面一个按钮事件。
定义:
Button button;//定义按钮
Button.ButtonStyle buttonStyle;//定义风格
………………
……{//creat或者show中
…………
buttonStyle= new Button.ButtonStyle();//创建风格对象
imageUp = new Texture("ButtonUp.png");//创建纹理对象
imageOver = new Texture("ButtonOver.png");//创建纹理对象
imageDown = new Texture("ButtonDown.png");//创建纹理对象
buttonStyle.up = new TextureRegionDrawable(newTextureRegion(imageUp));//设置按钮没有被触摸和点击时的图像
buttonStyle.over = new TextureRegionDrawable(new TextureRegion(imageOver));//设置按钮触摸时图像
buttonStyle.down = new TextureRegionDrawable(new TextureRegion(imageDown));//设置按钮按下时图像
button=new Button(buttonStyle)//创建按钮
stage.add(button);//在舞台中添加对象
…………
}
创建按钮时可以根据需要修改buttonStyle,其中over属性是不必要的。而up和down是必要的(纹理对象可以相同)。
添加事件:
//在创建时添加
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
………………//这里写按下按钮后会发生什么,比如图片变换,窗口变换,Screen变换等等
}
});
也可以不添加,不添加就不会产生事件。
其他属性:
button.setPosition(100, 200);//设置在舞台(stage)中的位置
button.setStyle(buttonStyle);//换一个ButtonStyle,按钮大小可以通过修改TextureRegionDrawable的大小来进行修改 。
button.setDisabled(false);//是否可用
button.setVisible(true);//是否可见
这些方法可用可不用,如果采用非style创建的button的话,需要调用setStyle来进行设置。
结语:
在使用stage和button时记得要注意实参和形参的区别。千万不要在render外调用stage的act,draw等方法。
