我们都知道,一般下载的flash游戏(基于键盘来玩的那一种),他们的游戏控制方式一般都是上下左右键。现在我想用其他的键来替代上下左右键。下面是实现过程:
1、由于是键盘控制,所以少不了onKeyDown与onKeyUp的使用。要想在游戏中改变控制的键值,就必须重写下WebView(这里使用WebView播放flash)。
重写WebView
public class mWebView extends WebView { public mWebView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { return true; } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { return true; } if(keyCode == KeyEvent.KEYCODE_L){ //KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT); return super.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, event); } if(keyCode == KeyEvent.KEYCODE_R){ //KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT); return super.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, event); } return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { return true; } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { return true; } if(keyCode == KeyEvent.KEYCODE_L){ //KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT); return super.onKeyUp(KeyEvent.KEYCODE_DPAD_LEFT, event); } if(keyCode == KeyEvent.KEYCODE_R){ //KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT); return super.onKeyUp(KeyEvent.KEYCODE_DPAD_RIGHT, event); } return super.onKeyUp(keyCode, event); } }
上面使用了“L”键代替了左键,使用“R”键替代了右键。具体要它怎么样,可自己修改。另要注意一点的是,由于有些游戏它是onKeyDown和onKeyUp都有不同操作的,所以在onKeyDown和onKeyUp都要进行键值的替换。
注意上面的构造函数:
public mWebView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub }
<com.ideal.viewfliperflash.mWebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:background="#00000000" />或者:
<view class="com.ideal.viewfliperflash.mWebView" android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:background="#00000000" />
public mWebView mWebFlash = null;
mWebFlash = (mWebView) findViewById(R.id.webview);flash的加载:
public void loadFlash() { WebSettings settings = mWebFlash.getSettings(); settings.setPluginsEnabled(true); settings.setJavaScriptEnabled(true); settings.setAllowFileAccess(true); settings.setDefaultTextEncodingName("GBK"); mWebFlash.setBackgroundColor(0); mWebFlash.loadUrl(fileCurrent); }上面的fileCurrent是flash文件的路径。然后在需要的地方调用loadFlash即可。
3、若是在xml文件中没用用到自定义的WebView,那么之前那个构造函数没有也是不会出错的。
若想自定义View,以下的地址写的很简洁,也很有用。http://www.cnblogs.com/lovewf/archive/2011/11/28/2264473.html