レス数:6 / 状態:解決済み / No:6 / ATOM
1
日付:2010/04/07(水)23:27:24
ID:wMVcPtiP3g
僕は現在、RPGみたいなゲームを作成中ですが、
メニューのキーボード操作が作れずに困っています。
何が作れないかというと、キーボードを
押している間はカーソルが高速で動いてしまいます。
現在のスクリプト(AS1.0)
このスクリプトは、カーソルのスクリプトです。
onClipEvent (enterFrame) {
if (Key.isDown(Key.UP) && (_root.pt == 0)) {
_root.pt = 2;
this._y = 266;
} else if (Key.isDown(Key.DOWN) && (_root.pt == 0)) {
_root.pt += 1;
this._y = 236;
} else if (Key.isDown(Key.UP) && (_root.pt == 1)) {
_root.pt -= 1;
this._y = 206;
} else if (Key.isDown(Key.DOWN) && (_root.pt == 1)) {
_root.pt += 1;
this._y = 266;
} else if (Key.isDown(Key.UP) && (_root.pt == 2)) {
_root.pt -= 1;
this._y = 236;
} else if (Key.isDown(Key.DOWN) && (_root.pt == 2)) {
_root.pt = 0;
this._y = 206;
}
}
どなたか教えてくれませんか?
お願いします。
メニューのキーボード操作が作れずに困っています。
何が作れないかというと、キーボードを
押している間はカーソルが高速で動いてしまいます。
現在のスクリプト(AS1.0)
このスクリプトは、カーソルのスクリプトです。
onClipEvent (enterFrame) {
if (Key.isDown(Key.UP) && (_root.pt == 0)) {
_root.pt = 2;
this._y = 266;
} else if (Key.isDown(Key.DOWN) && (_root.pt == 0)) {
_root.pt += 1;
this._y = 236;
} else if (Key.isDown(Key.UP) && (_root.pt == 1)) {
_root.pt -= 1;
this._y = 206;
} else if (Key.isDown(Key.DOWN) && (_root.pt == 1)) {
_root.pt += 1;
this._y = 266;
} else if (Key.isDown(Key.UP) && (_root.pt == 2)) {
_root.pt -= 1;
this._y = 236;
} else if (Key.isDown(Key.DOWN) && (_root.pt == 2)) {
_root.pt = 0;
this._y = 206;
}
}
どなたか教えてくれませんか?
お願いします。
2
名前:ううむー
日付:2010/04/08(木)11:05:07
ID:6bUIa6bNwgog
enterFrameはフレームレートで
どんどん割り込んでくるので、
そのような繰り返しが必要?・・
他にキー入力は、FlashPlayerがどんどん割り込み
を発生させるし。。。
on(press)とか、releaseを使って
そういうときだけキーの値を取るのがいいような気がしますな。
インターバル系で見に行くのはいかがなものか。
どうしてもってことなら、
キーがダウンされたときの1回だけを使い、次にキーアップされて
初めて次のキーインを見るようにして、その間は無視するか・・・
どんどん割り込んでくるので、
そのような繰り返しが必要?・・
他にキー入力は、FlashPlayerがどんどん割り込み
を発生させるし。。。
on(press)とか、releaseを使って
そういうときだけキーの値を取るのがいいような気がしますな。
インターバル系で見に行くのはいかがなものか。
どうしてもってことなら、
キーがダウンされたときの1回だけを使い、次にキーアップされて
初めて次のキーインを見るようにして、その間は無視するか・・・
3
名前:竹馬
日付:2010/04/08(木)15:24:46
ID:bALLVrlqHKFo
キーボードを押した時にフラグを立てて、
離した時にフラグを落とすとかどうでしょう。
onClipEvent(load){
key_flg=0;
}
onClipEvent(enterFrame){
if(Key.isDown(Key.UP) && key_flg==0){
key_flg=1;
}
else{
key_flg=0;
}
}
たぶん、こんな感じでムービークリップの中に書いたら
if(Key.isDown(Key.UP) && key_flg==0)の中身は
キーを押しっぱなしでも一度しか実行されないはず。
>>1のスクリプトは
押している間はずっと実行され続けるので、
一度押したら離すまで実行されない処理を作る必要があると思いますよ。
離した時にフラグを落とすとかどうでしょう。
onClipEvent(load){
key_flg=0;
}
onClipEvent(enterFrame){
if(Key.isDown(Key.UP) && key_flg==0){
key_flg=1;
}
else{
key_flg=0;
}
}
たぶん、こんな感じでムービークリップの中に書いたら
if(Key.isDown(Key.UP) && key_flg==0)の中身は
キーを押しっぱなしでも一度しか実行されないはず。
>>1のスクリプトは
押している間はずっと実行され続けるので、
一度押したら離すまで実行されない処理を作る必要があると思いますよ。
4
名前:FHGML
日付:2010/04/09(金)16:38:30
ID:W8dpT4AUkK30
もし、高速で動くのがいやなだけなら、
1度押したら数秒間押しても反応しないようにするのはどうでしょうか?
onClipEvent(load){
time = Number(0);
}
onClipEvent(enterFrame){
if (time!=0){
time--;
}else{
if (Key.isDown(Key.UP)){
//ここに上を押したときのスクリプトを書く
time = 10;
}
//上のようにほかのキーの設定もする
}
}
これで、ずっと押していても高速で動くことはなくなると思います。
1度押したら数秒間押しても反応しないようにするのはどうでしょうか?
onClipEvent(load){
time = Number(0);
}
onClipEvent(enterFrame){
if (time!=0){
time--;
}else{
if (Key.isDown(Key.UP)){
//ここに上を押したときのスクリプトを書く
time = 10;
}
//上のようにほかのキーの設定もする
}
}
これで、ずっと押していても高速で動くことはなくなると思います。
5
日付:2010/04/09(金)18:04:02
ID:eUhILsGNtxgR
メニュー製作の参考になりました!
これでなんとか 高速に動くことは無くなりました!
協力してくれた皆さん、ありがとうございます!
これでなんとか 高速に動くことは無くなりました!
協力してくれた皆さん、ありがとうございます!
6
名前:状態変更
日付:2010/04/09(金)18:04:15
ID:eUhILsGNtxgR
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 : | 解決済み |
投稿開始日 : | 2010/04/07(水)23:27:24 |
投稿終了日 : | 2010/04/09(金)18:04:15 |
投稿者 : | |
レス総数 : | 6 |
スレッド番号 : | 6 |