jubeat analyzer タッチパネル動作について

先日jubeat analyzerのページに行ったら更新されてまして、ホールドマーカーを実装してみたらしいのです。

……早っ。ロケテストで出てきたばっかりの仕様じゃなかったっけ? あれー?

と、いうことでどうにかこうにかjubeat analyzerをタッチパネルでやってみることができないか試してみました。期待はしないように。

まず先駆者探し。


居ました。しかしながら公開はしていない模様。でもとりあえず簡単に(?)出来そうなことが書いてあったんで挑戦して見るだけしてみることに。


……ちなみに既に改造してる人も見つけました。
Jubeat Analyser Appendのサイト(仮)

この方は改造されてたんですがタッチ動作にバグが有るらしく私の持っている端末ではうまく動きませんでした。
……いろいろ見た目も変えていたので全体的に元のものより動作が重くなっていたんですよね……。


……まぁ、とりあえず私の持っている端末のスペックが低いという問題点が浮き彫りに。(どうしようもない


と、いうことでとりあえず自分で弄ってみますかということに。

必要なもの
jubeat analyzerのソースコード
HSP

jubeat analyzerはソフト内にソースコード入れて公開してくださっているので、ありがたく改造に挑戦してみましょう。
まぁもちろん二次配布とかは基本的にダメですけども。


まずjubeat analyzerはHSPというソフトでプログラムを組んで作られています。



……はい。大きな問題点にぶつかりました。私、HSP触った事無いです。PSPじゃないです。はい。



それでもHSPをダウンロードしてなんやかんやしてサンプルからタッチ関係のものをコピペしたりしてそれっぽい動作にしたかったんですが、最終的に持ってる端末のスペックが足りないと言うことで中途半端で諦めました。

私よりもいい端末を持っている人がきっと仕上げてくれると思いますが、とりあえずやったところまでメモしておきます。

参考ページ
HSPでマルチタッチ入力(タッチ関係のサンプルプログラム)

……まぁHSPにデフォで入ってるんですが、そこにちょっと説明が加えられているページです。
つまりはこれを何とか組み込めばいい訳です。とりあえずサンプルプログラムを起動してみました。

……そこで知った衝撃の事実。私の持っている端末のマルチタッチが5つまでしか反応しない!わぁ!まじか!(白目
端末によってはもっと少なかったりもしそうなので注意が必要ですね。(手遅れ
も、もしかしたらサンプルプログラムが5つまでのマルチタッチにしか対応してないだけかもしれないし……(おそらく無い

やる気に大幅にダメージを受けた私は「いや、BSCくらいなら余裕」と強がりながら作業を進めることに。
元のソースコードにタッチ関係のプログラムもちょこちょこ見えて「ああ……実装しようとはしてるんだなぁ」と思いつつ、流し見しながら加えていきます。あ、開いたソースはaa.hspね。

・200行~250行くらいのタッチ関係のコメント分(↓)を外し、


・*ready の前辺りにこれをコピペし

stop とか *bye 等、抜いてます。

*openbutton の前あたりにこれをコピペしました。


……先に言っておきますけど、全体的によく分かってません。(ぇ
動けばそれで良し、くらいのつもりで作ってたのでとても残念な改造です。コピペは偉大だなぁ。(棒


……で、おそらくこれでエラー吹かなかったと思うので、(ふいたらごめんなさい

ここをいじります。

要は何かしらのタッチ動作をした時(WM_TOUCH)に*OnTouchが呼び出されて、その中でF_DOWN ……つまりタッチを押した時の動作になるのでこの括弧内を弄ればいける気がします。
パネルの上に仮想キー(透明なソフトウェアキーボードみたいなイメージ)を設置していけばとりあえずは動くような気がするので調べながら加えていきます。

参考ページ
HSP3 あれこれ <キーボード>
キーボードの仮想キーコードで他のアプリにキーを送信する


それでこんな感じに。

サンプルをそのまま流用したのでposxy(0)はx座標、posxy(1)はy座標ということで1パネルを大きめに範囲をとってそこに keybd_event を入れています。 例:1行目 → x:0~130 y:0~130
ちなみにこれはパネルの大きさがデフォルトの大きさで、キー設定もそのままの時の例。(パネル100、間15、4×4設定、4~Mキー入力)

仮想キーを使うときは

の文が必要なので自分で分かりやすいようにタッチ関係の200行あたりに入れておきます(適当


そして、これだけだとパネルが押されっぱなしの判定になるのでこの下にタッチを離した時の判定を追加します。


という感じでとりあえずやって見ましたがもちろん不具合、問題点もあります。

・スライドした時に判定が起こらない。
・スライドしてから離すと押されっぱなしの判定になる。
・パネルの大きさや間の間隔を変えた時の対応ができない。
・キーボードでやる時よりも処理が重くなる。(仕様)
・おそらく、どの画面でもパネルがあるような感じに認識して範囲内を押すと対応したキーが押される判定になる。(エディット(?)画面とか


パネルの大きさやキー配置などはプログラムのどこかで読み込んでいるはずなのでその辺を弄ればなんとかなるような気がしますが探す気が無いので放置。
判定関連はホールドマーカーが無ければゲームの1フレームのラスト(判定処理を終えた後)に全部のキーを離す処理をすればなんとかなる……か?
でもホールドマーカーがあるので押されっぱなしの判定をどうするかってとこですね。
スライドした時に範囲に入る、出るの判定を加えればいいのかな……?よくわからんので放置。

……何よりも持っている端末のスペックが低いのでこれ以上やってもテストが出来ないってのが。。。


まぁメモ程度にどうぞ。
わかってる人はもっとうまく作ってると思うし、全くわからない人はそもそもソースコード弄れない気がするので誰得な情報になりそう。
また気が変わって弄ったりしたら更新するかもしれない(多分しない
スポンサーサイト

コメントの投稿

非公開コメント

No title

はじめまして.

・スライドした時に判定が起こらない。
・スライドしてから離すと押されっぱなしの判定になる。

は仮想キー操作を以下のようにすれば克服できました.
ご参考ください.

if fl&(F_DOWN|F_MOVE) {
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>0 && posxy(1)<130) : keybd_event 52
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>0 && posxy(1)<130) : keybd_event 53
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>0 && posxy(1)<130) : keybd_event 54
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>0 && posxy(1)<130) : keybd_event 55
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>115 && posxy(1)<245) : keybd_event 82
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>115 && posxy(1)<245) : keybd_event 84
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>115 && posxy(1)<245) : keybd_event 89
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>115 && posxy(1)<245) : keybd_event 85
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>230 && posxy(1)<360) : keybd_event 70
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>230 && posxy(1)<360) : keybd_event 71
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>230 && posxy(1)<360) : keybd_event 72
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>230 && posxy(1)<360) : keybd_event 74
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>345 && posxy(1)<475) : keybd_event 86
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>345 && posxy(1)<475) : keybd_event 66
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>345 && posxy(1)<475) : keybd_event 78
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>345 && posxy(1)<475) : keybd_event 77
}
if fl&(F_UP){
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>0 && posxy(1)<130) : keybd_event 52,,2
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>0 && posxy(1)<130) : keybd_event 53,,2
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>0 && posxy(1)<130) : keybd_event 54,,2
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>0 && posxy(1)<130) : keybd_event 55,,2
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>115 && posxy(1)<245) : keybd_event 82,,2
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>115 && posxy(1)<245) : keybd_event 84,,2
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>115 && posxy(1)<245) : keybd_event 89,,2
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>115 && posxy(1)<245) : keybd_event 85,,2
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>230 && posxy(1)<360) : keybd_event 70,,2
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>230 && posxy(1)<360) : keybd_event 71,,2
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>230 && posxy(1)<360) : keybd_event 72,,2
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>230 && posxy(1)<360) : keybd_event 74,,2
if (posxy(0)>0 && posxy(0)<130 && posxy(1)>345 && posxy(1)<475) : keybd_event 86,,2
if (posxy(0)>115 && posxy(0)<245 && posxy(1)>345 && posxy(1)<475) : keybd_event 66,,2
if (posxy(0)>230 && posxy(0)<360 && posxy(1)>345 && posxy(1)<475) : keybd_event 78,,2
if (posxy(0)>345 && posxy(0)<475 && posxy(1)>345 && posxy(1)<475) : keybd_event 77,,2
}
if fl&(F_MOVE){
if (posxy(0)<0 || posxy(0)>130 || posxy(1)<0 || posxy(1)>130) : keybd_event 52,,2
if (posxy(0)<115 || posxy(0)>245 || posxy(1)<0 || posxy(1)>130) : keybd_event 53,,2
if (posxy(0)<230 || posxy(0)>360 || posxy(1)<0 || posxy(1)>130) : keybd_event 54,,2
if (posxy(0)<345 || posxy(0)>475 || posxy(1)<0 || posxy(1)>130) : keybd_event 55,,2
if (posxy(0)<0 || posxy(0)>130 || posxy(1)<115 || posxy(1)>245) : keybd_event 82,,2
if (posxy(0)<115 || posxy(0)>245 || posxy(1)<115 || posxy(1)>245) : keybd_event 84,,2
if (posxy(0)<230 || posxy(0)>360 || posxy(1)<115 || posxy(1)>245) : keybd_event 89,,2
if (posxy(0)<345 || posxy(0)>475 || posxy(1)<115 || posxy(1)>245) : keybd_event 85,,2
if (posxy(0)<0 || posxy(0)>130 || posxy(1)<230 || posxy(1)>360) : keybd_event 70,,2
if (posxy(0)<115 || posxy(0)>245 || posxy(1)<230 || posxy(1)>360) : keybd_event 71,,2
if (posxy(0)<230 || posxy(0)>360 || posxy(1)<230 || posxy(1)>360) : keybd_event 72,,2
if (posxy(0)<345 || posxy(0)>475 || posxy(1)<230 || posxy(1)>360) : keybd_event 74,,2
if (posxy(0)<0 || posxy(0)>130 || posxy(1)<345 || posxy(1)>475) : keybd_event 86,,2
if (posxy(0)<115 || posxy(0)>245 || posxy(1)<345 || posxy(1)>475) : keybd_event 66,,2
if (posxy(0)<230 || posxy(0)>360 || posxy(1)<345 || posxy(1)>475) : keybd_event 78,,2
if (posxy(0)<345 || posxy(0)>475 || posxy(1)<345 || posxy(1)>475) : keybd_event 77,,2
}

Re: No title

> はじめまして.
>
> ・スライドした時に判定が起こらない。
> ・スライドしてから離すと押されっぱなしの判定になる。
>
> は仮想キー操作を以下のようにすれば克服できました.
> ご参考ください.
>
> if fl&(F_DOWN|F_MOVE) {
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>0 && posxy(1)<130) : keybd_event 52
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>0 && posxy(1)<130) : keybd_event 53
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>0 && posxy(1)<130) : keybd_event 54
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>0 && posxy(1)<130) : keybd_event 55
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>115 && posxy(1)<245) : keybd_event 82
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>115 && posxy(1)<245) : keybd_event 84
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>115 && posxy(1)<245) : keybd_event 89
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>115 && posxy(1)<245) : keybd_event 85
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>230 && posxy(1)<360) : keybd_event 70
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>230 && posxy(1)<360) : keybd_event 71
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>230 && posxy(1)<360) : keybd_event 72
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>230 && posxy(1)<360) : keybd_event 74
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>345 && posxy(1)<475) : keybd_event 86
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>345 && posxy(1)<475) : keybd_event 66
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>345 && posxy(1)<475) : keybd_event 78
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>345 && posxy(1)<475) : keybd_event 77
> }
> if fl&(F_UP){
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>0 && posxy(1)<130) : keybd_event 52,,2
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>0 && posxy(1)<130) : keybd_event 53,,2
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>0 && posxy(1)<130) : keybd_event 54,,2
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>0 && posxy(1)<130) : keybd_event 55,,2
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>115 && posxy(1)<245) : keybd_event 82,,2
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>115 && posxy(1)<245) : keybd_event 84,,2
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>115 && posxy(1)<245) : keybd_event 89,,2
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>115 && posxy(1)<245) : keybd_event 85,,2
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>230 && posxy(1)<360) : keybd_event 70,,2
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>230 && posxy(1)<360) : keybd_event 71,,2
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>230 && posxy(1)<360) : keybd_event 72,,2
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>230 && posxy(1)<360) : keybd_event 74,,2
> if (posxy(0)>0 && posxy(0)<130 && posxy(1)>345 && posxy(1)<475) : keybd_event 86,,2
> if (posxy(0)>115 && posxy(0)<245 && posxy(1)>345 && posxy(1)<475) : keybd_event 66,,2
> if (posxy(0)>230 && posxy(0)<360 && posxy(1)>345 && posxy(1)<475) : keybd_event 78,,2
> if (posxy(0)>345 && posxy(0)<475 && posxy(1)>345 && posxy(1)<475) : keybd_event 77,,2
> }
> if fl&(F_MOVE){
> if (posxy(0)<0 || posxy(0)>130 || posxy(1)<0 || posxy(1)>130) : keybd_event 52,,2
> if (posxy(0)<115 || posxy(0)>245 || posxy(1)<0 || posxy(1)>130) : keybd_event 53,,2
> if (posxy(0)<230 || posxy(0)>360 || posxy(1)<0 || posxy(1)>130) : keybd_event 54,,2
> if (posxy(0)<345 || posxy(0)>475 || posxy(1)<0 || posxy(1)>130) : keybd_event 55,,2
> if (posxy(0)<0 || posxy(0)>130 || posxy(1)<115 || posxy(1)>245) : keybd_event 82,,2
> if (posxy(0)<115 || posxy(0)>245 || posxy(1)<115 || posxy(1)>245) : keybd_event 84,,2
> if (posxy(0)<230 || posxy(0)>360 || posxy(1)<115 || posxy(1)>245) : keybd_event 89,,2
> if (posxy(0)<345 || posxy(0)>475 || posxy(1)<115 || posxy(1)>245) : keybd_event 85,,2
> if (posxy(0)<0 || posxy(0)>130 || posxy(1)<230 || posxy(1)>360) : keybd_event 70,,2
> if (posxy(0)<115 || posxy(0)>245 || posxy(1)<230 || posxy(1)>360) : keybd_event 71,,2
> if (posxy(0)<230 || posxy(0)>360 || posxy(1)<230 || posxy(1)>360) : keybd_event 72,,2
> if (posxy(0)<345 || posxy(0)>475 || posxy(1)<230 || posxy(1)>360) : keybd_event 74,,2
> if (posxy(0)<0 || posxy(0)>130 || posxy(1)<345 || posxy(1)>475) : keybd_event 86,,2
> if (posxy(0)<115 || posxy(0)>245 || posxy(1)<345 || posxy(1)>475) : keybd_event 66,,2
> if (posxy(0)<230 || posxy(0)>360 || posxy(1)<345 || posxy(1)>475) : keybd_event 78,,2
> if (posxy(0)<345 || posxy(0)>475 || posxy(1)<345 || posxy(1)>475) : keybd_event 77,,2
> }


コメントありがとうございます!
試してみたんですがうまく動作しなかったので、自分の環境ではマシンスペックが足りないとかの原因がありそうですね……。
プロフィール

ut

Author:ut
utといいます。読み方は適当に。

ゲームやらラノベやらアニメやら創作やらに色々手を出したり出さなかったり。
気になったものをまとめとくページを作りたかっただけの存在。

ついったー
ID:ut0so
最新記事
カテゴリ
リンク
最新コメント
カウンター
最近の気になったゲーム
検索フォーム
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
RSSリンクの表示
広告スペース

Amazonゲームランキング