レス数:8 / 状態:解決済み / No:11 / ATOM
1
名前:元
日付:2010/04/16(金)01:36:16
ID:EmW3QhDkDZvC
現在as3.0でシューティングゲームを作成中です。
カーソルキーで上下左右に移動し、spaceキーでショットを撃つ仕様にする予定なのですが、
複数のキーの同時入力処理でハマってます。
下記のような記述を行った場合、同時に押すキーの種類によっては特定のキーが反応しなくなります。
具体的には「左+上+space」の同時入力時のspaceキーなどが反応しません。
どなたか解決法をご存じの方がいらっしゃいましたらお教え願います。
(タイムラインの1フレーム目に記述)
//表示物
var _text:TextField=new TextField();
stage.addChild(_text);
_text.text="";
_text.width=500;
//キー入力情報
var keyLEFT:Boolean=false;
var keyRIGHT:Boolean=false;
var keyUP:Boolean=false;
var keyDOWN:Boolean=false;
var keyFIRE:Boolean=false;
var i:int;
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc);
stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpFunc);
stage.addEventListener(Event.ENTER_FRAME,DrawKeyNumber);
//キーが押されたときの処理
function KeyDownFunc(e)
{if(e.keyCode==37){keyLEFT=true;}
if(e.keyCode==39){keyRIGHT=true;}
if(e.keyCode==38){keyUP=true;}
if(e.keyCode==40){keyDOWN=true;}
if(e.keyCode==32){keyFIRE=true;}}
//キーが離されたときの処理
function KeyUpFunc(e)
{if(e.keyCode==37){keyLEFT=false;}
if(e.keyCode==39){keyRIGHT=false;}
if(e.keyCode==38){keyUP=false;}
if(e.keyCode==40){keyDOWN=false;}
if(e.keyCode==32){keyFIRE=false;}}
//現在押されているキー情報を表示
function DrawKeyNumber(e)
{_text.text="L:"+keyLEFT+"R:"+keyRIGHT+"U:"+keyUP+"D:"+keyDOWN+"F:"+keyFIRE;}
カーソルキーで上下左右に移動し、spaceキーでショットを撃つ仕様にする予定なのですが、
複数のキーの同時入力処理でハマってます。
下記のような記述を行った場合、同時に押すキーの種類によっては特定のキーが反応しなくなります。
具体的には「左+上+space」の同時入力時のspaceキーなどが反応しません。
どなたか解決法をご存じの方がいらっしゃいましたらお教え願います。
(タイムラインの1フレーム目に記述)
//表示物
var _text:TextField=new TextField();
stage.addChild(_text);
_text.text="";
_text.width=500;
//キー入力情報
var keyLEFT:Boolean=false;
var keyRIGHT:Boolean=false;
var keyUP:Boolean=false;
var keyDOWN:Boolean=false;
var keyFIRE:Boolean=false;
var i:int;
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc);
stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpFunc);
stage.addEventListener(Event.ENTER_FRAME,DrawKeyNumber);
//キーが押されたときの処理
function KeyDownFunc(e)
{if(e.keyCode==37){keyLEFT=true;}
if(e.keyCode==39){keyRIGHT=true;}
if(e.keyCode==38){keyUP=true;}
if(e.keyCode==40){keyDOWN=true;}
if(e.keyCode==32){keyFIRE=true;}}
//キーが離されたときの処理
function KeyUpFunc(e)
{if(e.keyCode==37){keyLEFT=false;}
if(e.keyCode==39){keyRIGHT=false;}
if(e.keyCode==38){keyUP=false;}
if(e.keyCode==40){keyDOWN=false;}
if(e.keyCode==32){keyFIRE=false;}}
//現在押されているキー情報を表示
function DrawKeyNumber(e)
{_text.text="L:"+keyLEFT+"R:"+keyRIGHT+"U:"+keyUP+"D:"+keyDOWN+"F:"+keyFIRE;}
2
日付:2010/04/16(金)01:56:21
ID:yDl4tzgDJCHR
>>1
こちらの環境でも「左+上+space」の同時入力ができない事が確認できましたが
プログラム的には間違ってなさそうです。
こちらに同時押しキーボードについての情報がありました。
http://wikiwiki.jp/fpag/?%A5%AD%A1%BC%A5%DC%A1%BC%A5%C9%A4%CE%C6%B1%BB%FE%B2%A1%A4%B7%A4%CB%A4%C4%A4%A4%A4%C6
キーボード自体が同時押しに対応していないと効かなさそうです。
こちらの環境でも「左+上+space」の同時入力ができない事が確認できましたが
プログラム的には間違ってなさそうです。
こちらに同時押しキーボードについての情報がありました。
http://wikiwiki.jp/fpag/?%A5%AD%A1%BC%A5%DC%A1%BC%A5%C9%A4%CE%C6%B1%BB%FE%B2%A1%A4%B7%A4%CB%A4%C4%A4%A4%A4%C6
キーボード自体が同時押しに対応していないと効かなさそうです。
3
名前:kame
日付:2010/04/16(金)18:48:25
ID:GKBiaxnzD6eZ
そう言う場合は仕様を曲げるしかないだろうなあ。
マウスで自機が動くようにする、というのはいかがでしょうか。
マウスで自機が動くようにする、というのはいかがでしょうか。
4
名前:元
日付:2010/04/17(土)00:13:22
ID:EmW3QhDkDZvC
実は今、マウスで動いて左クリックでショットという挙動にしてるんですね。
割とできてきたのでキーボード入力でダイレクトな操作感にして、
JoyToKeyで変換してゲームパッドで操作できるようにしたいな、と思っていたんですが。
割とできてきたのでキーボード入力でダイレクトな操作感にして、
JoyToKeyで変換してゲームパッドで操作できるようにしたいな、と思っていたんですが。
5
名前:竹馬
日付:2010/04/17(土)14:17:30
ID:bALLVrlqHKFo
JoyToKeyをつかうなら、気にしなくてもいいのではないでしょうか。
私だけかもしれませんが、flashゲームをキーボードですると
同時押しの操作を時々受け付けない時があるのですが、
ゲームパッドを使用した時はそんなこともなく
すいすい動かす事が出来ましたよ。
私だけかもしれませんが、flashゲームをキーボードですると
同時押しの操作を時々受け付けない時があるのですが、
ゲームパッドを使用した時はそんなこともなく
すいすい動かす事が出来ましたよ。
6
名前:(=(´ー`)
日付:2010/04/18(日)02:04:10
ID:T42jbCGH4r.3
スペースキーをやめてアルファベットにすればおk。
あとスペースキーの使用はユーザーの使ってるブラウザによっては
ブラウザが持つショートカット操作が優先的に適用されるようになったのでメシマズ。
あとスペースキーの使用はユーザーの使ってるブラウザによっては
ブラウザが持つショートカット操作が優先的に適用されるようになったのでメシマズ。
8
名前:状態変更
日付:2010/04/19(月)00:57:33
ID:EmW3QhDkDZvC
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 : | 解決済み |
投稿開始日 : | 2010/04/16(金)01:36:16 |
投稿終了日 : | 2010/04/19(月)00:57:33 |
投稿者 : | 元 |
レス総数 : | 8 |
スレッド番号 : | 11 |