キー入力について(バグ報告掲示板

投稿: Material 7186 1 mini ikosami 投稿:2010/12/12 00:36:12(最新:2010/12/15 00:14:15)
キー入力で
押したかどうか,離したかどうか
ではなく
押されているかどうか,離されているか
という条件を作れませんか?

押したら移動、離したら止まるだと
ループが終わる前に押す,離すを行うと、
どちらか片方しか反応しなくて離されたことに反応せずに
ずっと動き続ける状態になることがよく起こってしまうので・・・

2DアクションRPGのキャラの移動もキーボードでやると
同じことになるのでおそらく
似たような仕組みで動いているのだと思いますが
ループよりも速く(一瞬押すだけ)で→など押すと、
離しなおすまで右に動き続けます・・・

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Material 7186 1 mini ikosami(投稿日:2010/12/15 00:14, 履歴)
すみません・・・
今頃気がついたのですが、僕の書き方が悪いだけでした・・・
押したら1にして離したら0にするような
押されているかがわかるようなものにしたら
まったく問題はおきませんでした・・・

ご迷惑おかけしてすみません・・・
Material 7186 1 mini ikosami(投稿日:2010/12/14 21:50, 履歴)
Your Player Version: WIN 10,1,102,64
Debug Player: No
Operating System: Windows XP
Video Capable: Yes
Audio Capable: Yes
Local File l/O Enabled: Yes
と出てきました。
色々とすみません・・・
Zararu128x128 mini dycoon(投稿日:2010/12/13 13:59, 履歴)
一応、Flashのバージョンの問題やブラウザの問題も
考えられますので、
使用されているFlashのバージョンとブラウザのバージョンを
お伝えいただけると、何か対処できるかもしれません。

Flashのバージョンは以下で調べられます。
http://www.adobe.com/jp/support/flashplayer/ts/documents/tn_15507.htm

よろしくお願いします。
Zararu128x128 mini dycoon(投稿日:2010/12/13 11:52, 履歴)
1サイクル中に複数の入力が入った場合や
waitTime中に入力が入った場合ですが、
それらの場合に関しても入力は保存されており(キューイング)
takeInput()を呼んだときに、あとで入力された入力も
取得できるようになっております。

そのため問題は発生しないと考えておりますし、
現在運営側では問題は確認できておりません。
Zararu128x128 mini dycoon(投稿日:2010/12/13 10:10, 履歴)
FlixelはActionScript3のライブラリですが
ソースを見たところ
内部でキーが押されたはなされたを取得して、
それをテーブルに保存し、
押されているかどうかを取得しているだけなので
Rmakeでの処理と結局同じかと思います。

よろしくお願いします。
Material 7186 1 mini ikosami(投稿日:2010/12/12 22:11, 履歴)
これってやっぱり違うバージョンですか?
http://www40.atwiki.jp/spellbound/pages/1124.html
Material 7186 1 mini ikosami(投稿日:2010/12/12 21:30, 履歴)
わかりました。
ありがとうございます。
Nyan mini rurun9(投稿日:2010/12/12 17:41, 履歴)
現状ではwaitTimeをひたすら小さくするくらいしか、ないですもんね

回転はRectでの原点(中心)設定と、Positionでの位置調整を間違えなければ大丈夫なような?
Zararu128x128 mini dycoon(投稿日:2010/12/12 17:35, 履歴)
Rmakeのご利用ありがとうございます。

まず、2DアクションRPGのキーボードによる
キャラ移動について書きたいと思います。

現在Rmake側ではキー入力の押す離すは
ループの途中に入ったとしても
捨てないようにしておりますので、
キー入力がブラウザかFlashで消失しているのかもしれません。
運営側の環境では、入力の反映が遅れるということは
確認しておりますが、
現在使用している環境ではキー入力が消失したと
思われるような動作は確認できておりません。

次に入力の関数について書きます。

RmakeはFlashのActionScript3で開発していますが、
このバージョンの場合キーが押されている状態かどうかを
判定する関数や変数はないようです。
そのため、Rmake側で用意するとしても
結局押したときの入力と離したときの入力になりますので
結局同じかと思います。

また、キー入力の処理に関しては2DRPGの移動と同様のため
キー入力がブラウザかFlashで消失しているのかもしれません。

一応確認ですが、ループ内でendInputを
呼んでいるということはないでしょうか?
これをしている場合は入力の消失が起こりうるかと思います。

回転に関しては、
setSpriteRect(spriteHandle,
コピー元の左上x + 0.5, コピー元の左上y + 0.5,
コピー元の幅 - 1.0, コピー元の高さ - 1.0,
-回転の中心x, -回転の中心y, 表示幅, 表示高さ
)
として、コピー元の中心で回転するようにすれば
よいかと思います。
一応以下も参考にしてください
http://page.rmake.jp/wikis/44


あと、テーマの違う質問はスレッドを分けておこなったほうが
やり取りが混乱しなくて、
結果問題が解決しやすいかと思います。

よろしくお願いします。
Material 7186 1 mini ikosami(投稿日:2010/12/12 16:33, 履歴)
表示されている部分だけ回転というのは
例えば
□△
▲■
という画像を
▲の部分だけ表示して
180度回転させると
元画像をそのまま回転して
■▼
▽□
という形にしてしまうので
やってみればわかると思いますが、
▼の表示される位置が設定場所の少し右上にが変わってしまうのです・・・

無理やり誤差修正すればいい話なのですが
ほとんど変わりませんが、
アクションゲームの場合はループの1サイクルですべての動作をするので
すこしでも軽くしたいので・・・
まぁこれは付け足しとして書いただけなので、どっちでもいいのですが・・・

重要なのは押されているかどうか,離されているかの方です。
これができれば、押しっぱなしのものを判別できて
押したときにフラグを立てて離したときにフラグをおろすようなことも
しなくて良くなりますし、バグも起こりません。
Nyan mini rurun9(投稿日:2010/12/12 16:01, 履歴)
確かにループの1サイクルより素早い操作には対応できないですねぇ
処理を軽くなるように作るしかないのか…

表示されている部分だけ回転、とは一体どのような?
Material 7186 1 mini ikosami(投稿日:2010/12/12 14:07, 履歴)
あと、スプライトの回転で、
表示されている部分だけを回転することは無理ですか?