9VAeきゅうべえ Xamarin版の開発を始める。
9VAeきゅうべえはいろんなところに移植してきたが、だいたい以下の手順でやってきた。
新しい環境に移植するときのパターン
- 動作する開発環境をコピー(ダウンロード)する
- 動作するサンプルを入手する
- サンプルを改造し、必要な機能の実装方法を確認する
- 最初は悩むよりも知っている人に尋ねる方が早い
- 出来上がってきたら、入手した情報をまとめていく
- 自分が得た知識と知っておくべき知識を比較し、間違えている部分を修正していき、徐々に完成に近く
今まで、皆この手順だ。勉強せずに少しずつ作っていき、最後に勉強して間違えていた部分を後から修正するという感じだ。作りながら勉強するといった方が聞こえはいいかも。わからずに作り始めるので、時々、別のサンプルから作り直すことがある。iPad版の場合は3回作り直した。最後には、最初の作り方のどこが悪かったかわかるようになる。(けど、すぐ忘れる)
Xamarinのサンプルはたくさんある
ということで、ここからXamarin のサンプルプロジェクトを探す。とりあえず役に立ちそうなプロジェクトをダウンロードする。たくさんあるが、ペイントブラシのようなサンプルはないのかな。
タイマー描画?
音
Sound effects example - Xamarin
Working With Audio – Test Application - Xamarin
API色々
画像
Loading Large Images - Xamarin
マルチタッチ
Multi-Touch Tracking in Android - Xamarin
画面回転
スクリーンキャプチャ
ファイルを開く、保存
Scoped Directory Access Sample - Xamarin
同期
SynchronizedNotifications - Xamarin
タッチ
Touch in Android (Completed Sample) - Xamarin
Touch in Android (Walkthrough) - Xamarin
Touch-Tracking Effect Demos - Xamarin
フォント
こちらにもある
SkiaSharpというライブラリがあるようだ。
サンプルプロジェクトを見て勉強
Touch-Tracking Effect Demos - Xamarin
の中に、指で絵をかくアプリを発見。SKPaintを使っている。SKPaintは C#のようなので、もっと低レベルの描画関数を探さないとあかんような気がする。
アナログ時計の描画が Canvasを使っており、こちらは、Mono.Androidという関数を使っていて、これが使えそう。
タイマーは、async / await という仕組みを使っているようだ。自分でタイマーループを作っているみたいだが、まず、これを真似してみるか。
Xamarin の Alpha版で async/await を試す - Qiita
描画をどうするか検討
9VAeきゅうべえの場合、Cのライブラリ関数の中で画面に描画する。
まず、C#から、Cの関数をどう呼び出すか、これは簡単にできるみたい。
.NET TIPS:Win32 APIやDLL関数を呼び出すには? - @IT
C# + Native C による高速化〜その1:基礎知識と準備
これをみると、C++のプロジェクトを作って一旦 DLLを作って呼ぶようだ。
さて、描画は、Monoを使いたいので、C++から Mono.Androidの描画関数が呼べるかどうか。パッと探した感じだと見つからない。iosアプリを作る場合は、Objective-Cのコードが呼べて、その中で描画までできるようだが、Androidの場合は描画用の関数が Xamarinにしかない。となると、9VAeLibと同時に、Xamarinを動かしておいて、描画の指示があったときに横から描画するといった技を使うのだろうか。アラートを表示するときは、他でもそうやっているのだが、描画までそうするのかな。まあ、やってみるか。描画ができるまで少し時間がかかりそう。
これも関係ありそう。ライブラリについて
Using Native Libraries - Xamarin