[GEiv]第三章:输入接口 所谓“控制感”

第三章:输入接口

所谓“控制感”

        这篇文章主要介绍使用输入接口对图元进行控制。

[游戏当中的输入分类]

        1.主动检索式,在Serial中检测按键的状态,作出不同的反应,这个适用于控制要求及时、快速的情况,例如控制游戏角色等。

        2.被动驱动,类似于AWT的事件回调,用于控制要求频度不高,但往往是单次调用的过程,例如游戏菜单的控制。

        二者谁也无法替代谁,使用回调控制角色,会有很大的滞后感;而使用主动检索驱动UI菜单,则会敏感度过高,稍微一按就飞出好几项之后了。

[主动检索式]

例子:

@Override
public void Serial(int arg0) {
	if(UES.getKeyStatus(KeyEvent.VK_LEFT)){
		rect.setDx(rect.getDx() - 3);
	}
	if(UES.getKeyStatus(KeyEvent.VK_RIGHT)){
		rect.setDx(rect.getDx() + 3);
	}
	if(UES.getKeyStatus(KeyEvent.VK_UP)){
		rect.setDy(rect.getDy() - 3);
	}
	if(UES.getKeyStatus(KeyEvent.VK_DOWN)){
		rect.setDy(rect.getDy() + 3);
	}
}

        将第二章动态绘制中的Serial改写如上,运行的结果就是可以使用键盘的上下左右控制绿色矩形移动。

API介绍:

        UES:boolean getKeyStatus(int keyCode);

        keyCode是键盘按键对应的ascii码,但是我们不需要去记忆整数码,可以使用KeyEvent.VK_键盘字母 的格式进行引用。

        该方法返回此时键盘的按键状态,若为按下,则返回true,否则为false;

        除去键盘,鼠标也有类似的API:

        UES.getMouseButtonStatus(arg0),它可以获得当前鼠标的按钮状态,1,2,3在本人的设备上分别对应左键、中键(滚轮按下)、右键;

        UES.getCrtMouseX(),UES.getCrtMouseY()则返回当前鼠标位置。

=====================================================

[被动驱动]

        被动驱动的实现就没有上面简单了。

以键盘为例:

[interface geivcore.KeyFactor]

        KeyFactor接口:所有响应键盘回调的类需要实现KeyFactor接口,它包括了三个方法:

        public void setKeyListener(KeyListener keyListener);

        public void removeKeyListener();

        public void keyFactor(int keyCode,boolean ispressed);

        如果需要响应键盘的类没有继承其他类,则可选择继承geivcore.DefaultFactor类,进行默认的键盘响应实现。

[interface geivcore. KeyListener]

        KeyListener接口:所有处理回调的逻辑实现自该接口,该接口只有一个方法:

        public void doKeyBord(KeyFactor whom,intkeyCode,boolean ispressed);

        whom是响应的KeyFactor对象,keyCode是按键对应的ascii码,ispressed标识着是按下还是抬起。

        在实现了上两个接口后,使用UES.pushKeyBoardIO(KeyFactor factor)方法,将KeyFactor压入键盘IO的栈顶,我们的键盘指令会始终传递给栈顶的KeyFactor,这是为了适应传统的UI系统。

        *注意,虽然KeyFactor、KeyListener与UES键盘栈系统被保留到高层,允许开发者自己去实现,但这一过程确实有些复杂,因此在开发工具集中留有Component类作为UI组件工具,也有AutoList类用于从XML文件中构架菜单结构,在工具类的介绍章节里会详细介绍。

[总结]

       介绍了主动监测与被动回调两种输入方案,其中被动驱动的实现较为复杂,因此建议尽量使用工具类中的现成组件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值