iPad専用アクションゲーム「スライムは投げる」

最近のエントリー

私と総務部長(よっぱらい)との会話。
(たまたま席を移動したときに隣の隣から話し掛けられる)

総「いいだー、これ(余った肉)食べな~」

私「いえいえ、もうおなかいっぱいです。」
私「それを食べたら明日仕事出来なくなりますよ^^;」

総「いいよー。仕事なんかしなくて」

総「どうせ大した仕事してないんだし」
 
 
 
 
技術者として全然評価されてないみたいで、正直凹みました_| ̄|○

道理で給料安いわけだ。

ダウンロードなどはこちらから

そろそろGBA/DS向け支援機能(1チップ16色モード)の試作を始めようかと思います。
まずはチップサイズ指定や、チップごとにパレットを選択する機構を先に作ってしまいたいと思います。 こちらの方にログがありますので、もし他にもお使いになられる方がいましたら、見てみてください。

また、マウスの「ホイール」の回転などをアプリケーション側で判断する方法を探しています(もしご存知の方がいらっしゃいましたら、連絡をお願いいたします_| ̄|○)。というのも、Windowsには一応WM_MOUSEWHEELというメッセージが飛んでくるのでホイールの回転を捕まえることは出来るのですが、そのウィンドウにスクロールバーが装着されていると、マウスウェア(マウスドライバ?)によって勝手にスクロールイベントに変えられてしまう気がするのです。これをなんとかホイール回転イベントとして掴みたいのです_| ̄|○

スクロールバーを自前実装すればイベントは取れるようですが・・・流石にこの方法はスッキリしませんよね^^;

最近友人から「iPod サザエさんバージョン」というのを教えてもらったのですが、
曲も映像もカッコ良いです。iPodって広告(宣伝?)にはシルエットのようなデザインを採用しているようでして、サザエさんもそんな感じになったわけなのですが、マスオさんがギターじゃこじゃこやってる姿に見とれました(笑)
 
 
 
GWや土日を使って見たDVDなど。
(私の独断と偏見による5段階評価付き)

  • スチームボーイ:★★★☆☆
  • 攻殻機動隊1巻:★★★☆☆
  • 海猿:★★★★★
  • アンジャッシュ – クラダシ -:★★★★★
  • スピードワゴン(爆笑オンエアバトル):★★★★★
  • 80デイズ:★★★★☆

 
 
 
そういえばマリオカートのアーケード版が出るそうで、期待です。
近所のゲーセンにも入ることを祈るばかりです(笑)

ダウンロードなどはこちらから

MFCのCRectクラスは初期化を忘れてもデバッグビルドではそれなりに動作するのですが、リリースビルドだとうまく動かないため、開発時に検出しづらいです_| ̄|○

CStringクラスは初期化しなくとも(?)データが無い状態となりますが、それと同じような感覚でCRectなんかを使うと痛い目にあいますので開発者の方はご注意を。
(普通こんなミスしないか)

先日、MFCにてアクセラレータキーが場合によって効かなくなるという症状を書いたのですが、一応自己解決いたしましたので、報告します。
(解決案をくださったAOIさん、Thanx!)

そもそもの原因は「TranslateAccelerator」というAPIの仕様とMFCの相性が悪いことにあります。 TranslateAcceleratorはキー入力をメニューコマンドへ変換するAPIですが、メニュー状態が無効だったら変換(送信)しないという仕様になっています。そのため、 MFCのコマンド更新ハンドラで pCmdUI->Enable(TRUE); となっていても、メニュー状態が無効ならば、ショートカットキーは使えません(深い場所のメニューコマンドは)。

ちなみに浅いコマンドが効くようになったことについては、少し憶測ですが書いてみますね。 TranslateAcceleratorの仕様として、キー→メニューコマンド直前(?)に WM_INITMENUなどのメッセージを送信してきます。そのメッセージをMFCフレームワークが掴み、メニューコマンドを「コマンド更新ハンドラ」を使って更新し、最新の状態になるため、ショートカットが効いたのだと思われます。
(ルート直下のメニューコマンドしか更新しません)

さて、深い位置のメニューコマンドを効かせるために、まず思いつくのが、「メニュー状態を更新する」という方法です。しかしいつ更新してよいのかわかりません。毎回キー入力(またはTranslateAcceleratorが送信してくるWM_INITMENUなど)でメニューコマンド全ての状態を更新することは負荷となりパフォーマンスの低下に繋がることは目に見えています。

で、私が使用した解決方法は、以前ちょろっと書きましたが、アクセラレータ処理を「TranslateAccelerator」を使わず自前で実装するという事です。もともとEDGE2はショートカットキーのカスタマイズに対応しており、キーの設定をリソースではなく、通常のデータ(謎)として持っているため、WM_KEYDOWNやらWM_SYSKEYDOWNメッセージを捕まえて、メニューコマンドへ変換し、SendMessage(WM_COMMAND・・・);しています。幸い、MFCはコマンドを実行する直前でコマンドUI更新ハンドラを呼び出して、コマンドを実行可能か調べているため、例えば「実行出来ないはずのメニューコマンドを実行する」というような事も起こりません(コマンド更新ハンドラでEnable(FALSE)となっているとwarningはTRACEされますが^^;)。

現在公開しているEDGE2β版では既にこの方法で実装しています。今のところ問題も出ていませんので、おそらく大丈夫かと思われます。

記事検索

コミュニティ

Banner designed by eu様
ドット絵掲示板
ドット絵掲示板
自作の「ドット絵」を投稿することができます。ドッターさん同士の交流の場としてご利用ください。
TakaboSoft Wiki
TakaboSoft Wiki
ソフトウェアに関する質問・不具合報告・要望などを書き込むことができます。