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

最近のエントリー

EDGE久々に更新してみました。
ダウンロードは↓こちらからどうぞ。
https://takabosoft.com/edge

更新内容

  • アニメーションプレイヤで再生が止まってしまう事がある不具合を修正しました。
  • WindowsVistaや7で画像ウィンドウがうまく画像にフィットしない不具合を修正しました。
  • 「縁を付ける」で関係無い部分に縁が付いてしまう事がある不具合を修正しました。

#AVI出力の不具合は根が深そうだったので、手を付けていません(^^;

ウィンドウがうまくフィットしない不具合はVistaが出たときから発覚していたのですが、そのうちやろうと思っていたら次のOS出てましたorz

VS2008 SP1 MFC環境では、ポップアップメニューの表示には
theApp.GetContextMenuManager()->ShowPopupMenu(・・・)
などと呼ぶことになりますが、これを何気なくダイアログ上でやると、メニューは表示されるものの、適当な場所をクリックしてもメニューが閉じてくれません。

これで少しハマっていたのですが、ダイアログの親クラスをCDialogではなくCDialogExにするとうまくメニュー処理がされるようです。
(こういうものこそASSERTで引っかけてくれよorz)

Edge12

ようやくPCとの連携機能の実装が一通り終わりました。

(iPhone / iPod touch側)
Screenshot 2009.11.12 21.05.47

(PC側)
ets

iPhone / iPod touch(あ、touchって書くの忘れてた)内の画像ファイルを、PNGまたはEDG形式で取り出せます。
パレットやレイヤ構造(EDG形式のみ)は保ったまま取り出せますので、例えば通勤・通学中の電車内で(EDGE touchを使って)描いたドット絵の続きを家に帰ってPC(EDGE)で描く、なんてことが可能になります。

もちろんEDGE1またはEDGE2で保存したEDGファイルをiPhone / iPod touchへ送ることもできます(ただし256色以下といった制限があります)。

さてさて、しばらく動作検証を行おうと思うのですが、こっそりβテスターを数名ほど募集中です。
もしこの機能のテストにご協力頂ける方がいらっしゃいましたら、メールやtwitter等でご連絡を頂ければと思います。
(日常的にEDGE1またはEDGE2でドット絵を描かれている方で、iPhoneまたはiPod touchをお持ちの方が理想ではあります)

今月下旬ぐらいには審査に出したいなぁと思っています。

MFCでアプリを書いていると、スクロール処理が必要になってくる場合が多々あります。
CScrollViewで行ける場合は良いのですが、自前でやらないといけない場合には、OnHScrollとOnVScrollをインプリメントしてやらないといけません。

これが結構面倒だなーといつも思っていたので使い回せるようなイベントハンドラを作ってみました。

bool Scroll(CWnd* pWnd, int nBar, UINT nSBCode, UINT nPos, int nLine /*= 1*/)
{
	SCROLLINFO info = {sizeof(SCROLLINFO), SIF_ALL};
	if (!pWnd->GetScrollInfo(nBar, &info)) {
		return false;
	}
	int nNewPos = pWnd->GetScrollPos(nBar);
	int nOldPos = nNewPos;

	switch (nSBCode) {
	case SB_LEFT:
		nNewPos = info.nMin;
		break;
	case SB_ENDSCROLL:
		break;
	case SB_LINELEFT:
		nNewPos -= nLine;
		break;
	case SB_LINERIGHT:
		nNewPos += nLine;
		break;
	case SB_PAGELEFT:
		nNewPos -= info.nPage;
		break;
	case SB_PAGERIGHT:
		nNewPos += info.nPage;
		break;
	case SB_RIGHT:
		nNewPos = info.nMax;
		break;
	case SB_THUMBPOSITION:
		nNewPos = nPos;
		break;
	case SB_THUMBTRACK:
		nNewPos = nPos;
		break;
	}

	pWnd->SetScrollPos(nBar, nNewPos);
	return pWnd->GetScrollPos(nBar) != nOldPos;
}

スクロール位置に変更があったときにtrueを返しますので、これを見て画面更新などを行います。

こんな感じで使います。

void CHogeHogeWnd::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	if (Scroll(this, SB_HORZ, nSBCode, nPos, 16)) {
		// ここで画面更新など
	}
}

void CHogeHogeWnd::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	if (Scroll(this, SB_VERT, nSBCode, nPos, 16)) {
		// ここで画面更新など
	}
}

page移動量は若干の調整が必要かもしれませんね。

てか、CScrollWnd的なものを作ってテンプレートっぽくしておくのがベストなんだろうなぁ。

適当にウィザードでプロジェクトを作成したのち、「カスタマイズ」機能でツールバーやメニューコマンドをドラッグ&ドロップしようと思ったら、動かない!なんて事がありましたので原因を探ってみたところ、プロジェクト作成ウィザードでActiveXのチェックを外してしまっていたのが原因のようです。

中は見ていませんが、おそらくカスタマイズ時のドラッグ&ドロップ処理はOLEのドラッグ&ドロップなんでしょうね。
なので、
CXXXXApp::InitInstanceの適当な所で「AfxOleInit()」を呼べばカスタマイズ機能が正常に動くようになります。

記事検索

コミュニティ

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