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

最近のエントリー

EDGE2のツールバーカスタマイズ周りを実装中なんですが、
カスタマイズとは関係無い部分でおかしな部分が見つかりました_| ̄|○

もし解決策、回避策などが解る技術者の方がおられましたら、
私まで連絡をお願いします。

#Microsoftに質問メール送る方法が解らなかった_| ̄|○
 プロフェッショナルサポートとか契約してないとメールで質問出来ないのかな~?
 変わりにMSへ問い合わせてくれる人でも構いません(^^ゞ

症状1 ツールバードッキングで嫌な感じ (解決したかも?)

→問題部分のみを抽出したプロジェクトファイルはこちら(40KB)
(Visual C++6.0が必要です)
VisualC持ってないけど見てみたいという方はこちらをどうぞ。

プロジェクトの主な作成手順は次の通りです。

  1. ウィザードでMFC→MDIアプリケーションを作成(他の設定はそのまま)
  2. CMainFrame::OnCreateにて
    1. ツールバーを5個以上作成する
    2. 作成したツールバーで、最初の2個だけを残し、残りのツールバーをShowControlBar(・・・,FALSE, TRUE);で非表示する
    3. また、症状がわかり易くなるように、ここでダイアログバーを一つ作成しています。(無くても症状は発生します)
  3. ビルドし、実行します。

症状の再現方法は次の通りです。

  1. EXEを実行します。
    050312_00

    ツールバー5個中、2個が表示されています。
    050312_01

  2. 上のツールバーを、ダイアログバーの下へドラッグ&ドロップしてドッキングさせます。
    050312_02

    すると、普通にドッキングします。
    050312_03

  3. さて、ここでもう一つのツールバーを、さきほどのツールバーの横へドラッグ&ドロップしてドッキングさせようとすると・・・

    050312_04

    下にずれる。
    050312_05

これが嫌な症状です。
ちなみに、がんばると(ちょっとダイアログバーへめり込むようにドロップすると)、隣へドッキングさせることも出来るのですが、また少しずらそうとすると、一段下がった場所へ勝手に配置されてしまいます。

二つしかツールバーが無い程度ならばいいのですが、それが複数になって、隣へ配置出来なくなるのは、ツールとしての使い勝手が悪くなる要因ともなりかねませんので、解決したいところです。

ツールバーは5個中2のみ表示、と書きましたが、5個全て表示したり、最初から2個しか
作らなかった場合には、これらの症状は発生しません。

症状が発生しない期待通りの実行ファイルはこちら

MFC側の不具合のような気もするのですが、もしそうであっても直したい部分ではあります^^;

(20:00 追記)
きよのさんからメールを頂きまして(有難うございます!)
Visual C++ 6.0 Enterprise Edition SP6では症状が発生しないとの情報を頂きました。
ちなみに私の環境は
Visual C++ 6.0 Professional Edition SP6です。
MFCのソースが異なるんでしょうかね~_| ̄|○
もう少し追ってみます。

(20:24 追記)
と思ったらEnterprise Editionでも症状が確認されたようです(^^;
更にはVisual C++ .NET Professional 2003でも再現したそうです_| ̄|○

ツールバーの表示方法とか作成方法が間違ってるのかなぁ、と不安になってきました。

(3/13 0:55 追記)
解決したかも?明日解決方法などを紹介します。

あ、掲示板のSISTさんサンクス!
たしかにでにくくなってましたが、いろいろやっているうちに症状が再現してました。

症状2 ツールサイズ変更でアプリがフリーズ (解決しました!)

こちらはだいぶ解りやすい症状です^^;

→問題部分のみを抽出したプロジェクトファイルはこちら(40KB)
(Visual C++6.0が必要です)
VisualC持ってないけど見てみたいという方はこちらをどうぞ。

プロジェクトの主な作成手順は次の通りです。

  1. ウィザードでMFC→MDIアプリケーションを作成(他の設定はそのまま)
  2. CMainFrame::OnCreateにて、デフォルトで作成されたツールバーの状態をいじり、ドロップダウンボタンをいくつか追加する(2つぐらいあると症状が発生しやすい)
  3. ビルドし、実行します。

症状の再現方法は次の通りです。

  1. EXEを実行します。
  2. ツールバーをドラッグ&ドロップし、浮かせます(ドッキングを解除)
    050312_06

    050312_07

  3. あとは、その浮いたツールバーの上の部分を上へドラッグするとフリーズします。
    050312_08

ドロップダウンボタンが2つぐらい有ると起こる症状のようです。
フリーズ状態でVCのブレークを実行すると、CToolBar::SizeToolBarやらCToolBar::CalcSizeで無限ループに陥っているのかなぁ、というように思えます。
各関数にvirtualがついていないので、単純にオーバーライドして値をTRACEさせるという技も使えず^^;

こちらもMFC側の不具合のような気もするのですが、もしそうであっても直したい部分ではあります。

(追記)
CToolBar::CalcDynamicLayoutがvirtualになっていましたので、オーバーライドし、その中で使用されている関数などをMFCのソースからコピペ、問題を探ったところ、
CMyToolBar::SizeToolBarの中で無限ループに陥っていることが解りました。

無限ループにならないように、勝手にreturnしてみたのですが、これで良いのやら・・・
→修正後のプロジェクトファイルはこちら

        while (sizeMin.cx < sizeMax.cx)
        {
            sizeMid.cx = (sizeMin.cx + sizeMax.cx) / 2;
            WrapToolBar(pData, nCount, sizeMid.cx);
            sizeMid = CalcSize(pData, nCount);

// ここの判定分を追加してみた by takabo soft
#if 1
            if (sizeMax == sizeMid) {
                return;
            }
#endif

            if (nLength < sizeMid.cy)
            {
                if (sizeMin == sizeMid)
                {
                    WrapToolBar(pData, nCount, sizeMax.cx);
                    return;
                }
                sizeMin = sizeMid;
            }
            else if (nLength > sizeMid.cy)
                sizeMax = sizeMid;
            else
                return;
        }

(20:00 追記)
きよのさんからメールを頂きまして(ありがとうございます)、MSのサポートサイトにて解決策があると教えていただきました!
http://support.microsoft.com/default.aspx?scid=kb;ja;190501
すっきりです(笑)

というわけでドット絵の本が発売されます。
ドット絵プロフェッショナルテクニック―ドット打ちからアニメーションまで (Game developer books)

恐れ多くもEDGEをドット絵ツールとして紹介して頂いており(他にはD-Pixed)、それだけでなく見本まで1冊頂いてしまいました^^

まだちょこっとしか読んでいませんが、ドット絵の描き方が丁寧に説明されており、ドット絵素人の私が欲しいと思うような素敵な本になっています。

興味のある方は読んでみてください。

ようやくツールとして使える程度になってきました。
まだまだ完成には程遠いですが、徐々に公開していきたいと思います。

一応EDGE2オフィシャルサイト建設予定地というのがあったのですが、開発に手一杯で全く更新していなかったため、今回必要最低限のページにまとめて(?)おきました。

最近、このサイトのデザインにも飽き飽きしてきましたが、変えてる暇もセンスも無いのでやめておきます_| ̄|○
 
 
 
 
そうそう、昨日は久々にぶるじょあ同人野郎こと○草くんと会ったんですよ。
(新年会らしきものに誘われて)

最近は周りにマニヤックな友人がいないので、なんだか彼のオーラが新鮮に感じました。飲んだり食ったりした後、6人でカラオケに行ったのですが、普通の友達とカラオケ行くときには絶対に歌わない「Feeling Heart」を解禁して歌ったら皆懐かしんでくれましたよ。○草くんはアニソンとかアニソンとか、あ、あとアニソンとか歌っていましたが、あんなエネルギッシュなカラオケはある意味初めてでした(笑)また誘ってください 〒○草くん

相互リンク「Re:commends. 」を追加しました。

また、EDGE Ver.1.28bをリリースしました。
更新内容は主に不具合修正です。

ちなみにアニメーションプレイヤでの再生が時々止まる不具合につきましては、まだ原因がわかっていないため、修正しておりません。

そろそろVectorのEDGEもバージョンアップしないとなぁ・・・
(Ver.1.22だもの)

2005
1月
10

相互リンクを2件追加しました。

また、WCGX2のステージを15個追加しました。

新年あけましたね!
本年もよろしくお願いいたしますm(_ _)m
喪中でしたので、ひっそりと新年を迎えておりました(^^ゞ

年賀状をくださった皆様へ
喪中を言い訳にして返事書かなくてごめんなさい_| ̄|○
来年はちゃんと一人一人コメント付きヨダレ付きで出します。