添加按键控制,和视图响应,算好视图逻辑后,使用invalidate()刷新屏幕
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
int x = mXIceBall; int y = mYIceBall;
setTile(BlANK_BLOCK,x,y); if(keyCode == KeyEvent.KEYCODE_DPAD_UP) { // } if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { // } if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { // } if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { // } mXIceBall = x; mYIceBall = y;
if(isEnd == true) { //TODO 添加判断游戏结束的逻辑 setTile(ICE_BALL,x,y); this.invalidate(); } setTile(ICE_BALL,x,y);
this.invalidate();//刷新屏幕 return super.onKeyDown(keyCode, event); }
然后开始设置游戏结束判断的逻辑了
------------------------------------------------------------------------------------------------------------------------------------
忽然忘记怎么写按键的监听器了
贴一个上来,插播一段
Button left = (Button) findViewById(R.id.left); left.setOnClickListener(new LeftBtnListener()); class LeftBtnListener implements OnClickListener{ @Override public void onClick(View v) { mSnakeView.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT,null); } }
-----------------------------------------------------------------------------------------------------------------------------------------------
Dialog 一般可以通过在Activity中通过override protected Dialog onCreateDialog(int id)来实现
然后用showDialog(DIALOG1)来调用他。
当然在onCreateDialog函数中要build Dialog, 使用AlertDialog.build类构造AlertDialog, 以供onCreateDialog()调用
没人告诉我怎么在View里面调Dialog,555555~
另一种是把Activity伪装成Dialog,使用Intent来跳转。需要修改manifest中Activity的theme
<activity android:name=".ActivityDialog" android:label = "ActivityDialog" android:theme = "@android:style/Theme.Dialog">
</activity>
------------------------------------------------------------------------------------------------------------------------------------------------
悲剧的是问题还存在,想要挂起Dialog然后跳转到下一个Activity,使用intent是要在当前Activity中实现的,
如论在Dialog还是在View中都没有办法,startActivity。要怎么做呢?未完待续。。。。。
我现在的解决方法是override 调Activity的onKeyDown方法,经测试证明,在应用接到key event会先发给View
然后发给View所属的Activity,所以我在Activity的onKeyDown方法中进行了结束判断。
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(mIceBallView.isEnd() == true) { Intent intent = new Intent(IceBall.this, PassDialog.class); startActivity(intent); } return super.onKeyDown(keyCode, event); }
其中PassDialog是一个Activity,它的一个属性被设成android:theme = "@android:style/Theme.Dialog"以模仿Dialog样式。
------------------------------------------------------------------------------------------------------------------------------------------------
下一步就是给游戏上Sensor了,需要进步一研究。Senor我来了!