Category: Windows Phone 7

スマートフォン勉強会@関東 #14 で話してきた。–XNA と WP7 のはなし。


どうもみむらです。

そんなわけで、先日、
http://sumaben.jp/?SPWorkshopKanto14

IIJ にて Windows Phone 7 で XNA を使ったゲーム開発をちょっと始めて見るのもいいんじゃない。
というようなプレゼンをしてきました。

 

なにやら、Ustream 上には録画が残っているようなので、
見たい人はどうぞ。

http://www.ustream.tv/recorded/16899244

プレゼンテーションは、アニメーションとかを完全に切っても問題にならない程度にはしたつもりですが、
ダウンロードしますと元のファイルが取って来れますので、気になる方はそちらから。

 

私のプレゼンの前に、Corona によるさくさく開発をやられてしまったので、
非常にやりづらかったのはありますが、なんとかやってきました。

プレゼンのデータは、流れるようにということを意識して、
上から読んでいくとうまくいく仕掛けにはなっているのですが、まぁ、面倒くさいということで要点を纏めてみます。

1.読み込み処理を LoadContent に書く。

2.描画処理を Draw に書く。

この2点だけ知って、あとはがりがり書けば書けると思います。

 

あといくつかサンプル。

 

1.画像を追加するには。

1.1. ソリューションエクスプローラの「~Content(Content)」となっている所に投げ込む。

image

1.2. 読み込むコードを 「 LoadContent 」に追記する。

this.texture = this.Content.Load<Texture2D>("pics");

(ダブルクォーテーションで囲われた「pics」は、ファイル名に合わせて修正する。)

1.3. 描画するコードを「 Draw 」に追記する。

spriteBatch.Begin();
spriteBatch.Draw(this.texture, Vector2.Zero,Color.White);
spriteBatch.End();

spriteBatch は、2D 系の描画系で使うものと捕らえておいて頂ければ。
Begin() で始めて、描画して、 End() で終えます。

 

2.Windows Phone 7 のタッチを使うには。

2.1. 参照を追加

using Microsoft.Xna.Framework.Input.Touch;

2.2. Initalize に、ドラッグ処理(FreeDrag) を有効にするようにするコードを追加する。

TouchPanel.EnabledGestures = GestureType.FreeDrag;

2.3. Update の中で、 TouchPanel.IsGestureAvailable がTrue かどうか(ジェスチャが存在するかどうか)を調べて、
あれば(動きがあれば) ReadGesture() で取得して、座標を格納する。

if (TouchPanel.IsGestureAvailable)
	this.vec = TouchPanel.ReadGesture().Position

2.4. 描画時に、上記で取得した座標を使って描画するようにする。

spriteBatch.Begin();
spriteBatch.Draw(this.texture, this.vec, Color.White);
spriteBatch.End();

 

とりあえず、こんな感じです。

あくまでもさくっと、初めての人が興味を持ってもらえればという気持ちで作ったドキュメントなので、
かなり足りない部分や、物足りない部分があるかと思いますが、
その辺りは調べて頂くか、聞いて頂ければお答えできるかもしれません。

WPConnect を自動的に立ち上げる。


Windows Phone 7 で MediaElement でごにょりたいときとか。

Zune を終了して、WPConnect を立ち上げる作業、
毎回の開発時に行うのは実に面倒くさい。
ということで、バッチファイルを書いてみました。

32bit 用 : [WPConnect_x86.bat]
64bit 用 : [WPConnect_x64.bat]

ダウンロードして、デバイスを接続し、起動してください。
立ち上げると、自動的に Zune を強制終了し、 WPConnect を立ち上げます。

なにげに Windows Phone の MediaElement は拡張子を見る。


MediaElement にファイルを指定する場合、

this._media.Source = new Uri(“http://mimumimu.net/hello.mp4”);

だったり、

var stream = new IsolatedStorageFileStream(“hoge.mp4”,FileMode.Open,IsolatedStorageFile.GetUserStoreForApplication());
this._media.SetSource(stream);

なんていう方法をとるわけですが、

ここで、一部の形式のファイルに関しては、拡張子を見てファイル形式を判定するようで、
特に mp4 の場合、拡張子の最後が .mp4 でないと、動いてくれません。

もちろんこれは、 Source = new Uri(); とする場合はもちろんのこと、
SetSource(); する場合でも、拡張子を参照するようです。

ブレークポイントを設定して眺めてみますと、
image

ってことで、ばっちりファイルパスが格納されてますし、
Name プロパティで取得出来るので、絶対判断基準に使ってます。

ってことで、Windows Phone 7 で MediaElement が絶対対応している形式なのに、
読んでくれないっていうことがあれば、拡張子が原因の可能性があります。 ということで。

Windows Phone 7 実機で MP4 再生をデバッグ状態で行う。


デバッグ状態、もしくは PCと接続した状態でWP7 で MediaElement を利用して再生しようとすると、
見事に再生されません。

それを解決するには、 Zune ではなく、 WPConnect というツールを利用して、
デバイスと接続する必要があります。

利用方法は以下の通り。

1.Zune を終了する。
image

2.WPConnect のフォルダを開く

フォルダは、
32bit 環境では: C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Tools\WPConnect
64bit 環境では: C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Tools\WPConnect\

にあります。

3.WPConnect を実行する。

image

この際、Zune が起動していると、接続に失敗します。

失敗する場合、タスクマネージャーで Zune.exe が立ち上がっていないか確認して下さい。
image

Windows Phone 7 開発を日本語版 Visual Studio 2010 で行う。


60番煎じぐらいのもう使い古されて困っちゃうぐらいのレベルの事ですが、
一応メモのために。

面倒な場合に備えて、バッチファイルを適当に書きました。
Visual Studio と 開発キットを入れて、次のファイルをダウンロードし、 「管理者として実行」 してください。

x86(32bit 環境) : [WP7JP_SDKINST_x86.bat]

x64(64bit 環境) : [WP7JP_SDKINST_x64.bat]

手動で行う場合は以下の通り。

1.Visual Studio 2010 日本語版を入れる。


2.AppHub から 開発キットをインストール

ダウンロードは下記URL から。
App Hub – windows phone および xbox live インディーズ ゲームの開発

3.下記のファイルをコピー

image

64 ビット版は
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight for Windows Phone\

32 ビット版は
C:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight for Windows Phone\

ここにある、 1033 というフォルダをコピーし、1041 という名前にする。
(1041 という名前で 1033 をコピーする)

4.以下のファイルをコピー

image

64 ビット版は
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Silverlight for Windows Phone

32 ビット版は
C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Silverlight for Windows Phone

ここにあるファイルも、先ほどと同様に
1033 というフォルダをコピーし、1041 という名前に変更する。
(1041 という名前で 1033 をコピー)

5.Visual Studio に適用させる

image

Visual Studio コマンドプロンプトを 管理者権限で起動 します。

スタートメニュー > すべてのプログラム > Microsoft Visual Studio 2010
> Visual Studio Tools > Visual Studio コマンドプロンプト(2010)

立ち上がったら、

devenv /installvstemplates

を実行し、完了です。