KUSO APPLICATION
去年はクソアプリ Advent Calendar で、クソアプリを作りましたが、あれは Windows / macOS だけでしか動きませんでした!
モバイルファーストの時代にこれはマズい!!
ということで、今回は Android / iOS 用のクソアプリを作りました。
まずはコレをご覧ください。
スクリーンショット
動画
動画は代表して iOS のものを。
減色&フレームレート落としたのでガビガビでガクガクだけど本当はもっとキレイにくるくる回るよ!
…え?何かに似てる??馬鹿な!
LEGACY っぽいフォント探すの苦労したよ!
機能
- 右に回すとカウントアップ
- 左に回すとカウントダウン
ただそれだけ!!
だってクソアプリだからね!!
でも!メモリが許す限りカウントアップできるから一生涯回せるよ!たぶん!!
技術的解説
相変わらず Delphi で制作しています。
あと自作の BigInteger 構造体を組み込んでいるので(Delphi には標準で BigInteger がない。ただし BCD 演算用の TBCD があり64桁までの計算ならこれで事足りる)メモリの許す限りカウントアップ可能!
BigInteger の解説は Delphi Avent Calendar の方に…
こちらでは 3D の話を
FireMonkey
Delphi には FireMonkey というライブラリが標準搭載されているのですが、こいつはイカれたライブラリで、コントロールを DirectX / Metal / OpenGL を使って自前描画しています。
そのため、ネイティブのコントロールに縛られない描画が可能です。
たとえば、以前の記事で書いた、こんな風に画像にエフェクトをかけたり、UI パーツを自由に変形したりできます。
そして更にイカれているのは、3D も扱えるということなのです。
FireMonkey3D
FireMonkey の 3D 機能については FireMonkey3D という名前で呼ばれていますが、特に 2D / 3D の間に垣根があるわけではないです(以前はありました)
TViewport3D
TViewport3D は 3D でレンダリングするベースとなる部分です。
↓今回の KUSO APPLICATION の設計時の画面ですが、3D の部分は viewportUnko の子として存在しています。
TLayer3D
また、面白いのが TLayer3D で、このコントロールはその上に通常の FireMonkey の 2D 用コントロールを乗せられます。
これを使って今回は TImage を乗せました。
当初は TText を乗せていたのですが、Android の「💩」フォントが予想以上に気持ち悪かったので、画像にしました。
上の設計時の画面では、imgTitle, imgMtL, imgMtR, imgUnko を乗せています。
こんな風に 2D / 3D をまぜこぜにしたアプリを作れるのは Delphi の面白い部分です。
まとめ
Delphi を使えば 3D も簡単に使えるし、Android / iOS の開発も楽ちんだよ!
ホントだよ!
ソースは下記に
https://bitbucket.org/freeonterminate/filpunko/src/master/
Windows / macOS でも動くけど計算をサボっているからグリッドのラインが上と合わないよ!
ごめんね!