aoitaku / dxruby_sprite_ui Goto Github PK
View Code? Open in Web Editor NEWUI framework for game with DXRuby::Sprite
License: zlib License
UI framework for game with DXRuby::Sprite
License: zlib License
背景画像とは別に画像を要素として持つコンポーネントを実装する。パディングやボーダーを持つ。
コンポーネントのサイズを相対的に指定できるようにする。現在は整数リテラルでピクセル指定することができるが、浮動小数点数リテラルを使って親要素に対する倍率でサイズを指定できるようにする。
forwardable を require し忘れているせい。
bundle install した場合は動作する(bundler が forwardable を require している?)
ハッシュや構造体、CSV、YAML、XMLのような外部ファイルを用いて UI コンポーネントを初期化できるようにする。
テキストラベルの行間を設定可能にする。現在は折り返しテキストのみ行間設定が反映されるようになっている。
折り返しテキストの描画を行うためのコンポーネントとしてメッセージボックスを実装する。
キーイベントを受け取ってコントロールのフォーカスを遷移させたりイベントハンドラをコールしたりする仕組みを実装する。
イベントハンドラが動作しない。
ビルダーDSL内で add_event_handler を呼び出すと例外が発生する。
(コンポーネントのスタイル指定をクラスに分離した際にデグレードした?)
ビルダーDSL内で add_event_handler を使ってイベントハンドラを登録できるように修正する。
position :absolute 指定時の座標が意図どおりにならないので修正する。
コレクションの要素を子コンポーネントとして整列させることのできるコンテナクラス、いわゆるリストボックスを作る。
TextLabel クラスに text_align
属性をもたせ、テキストの**寄せ、右寄せを可能にする。
可能ならば均等割り付けを行えるようにする。
現状では style_set メソッドで layout の値を書き換えることでContainerのレイアウトを動的に変更可能だが、アクセスしやすくするために別途 API をもうける。
折り返しテキストの禁則処理を実装する。
めっちゃコメントを書く。
CotnainerBox から派生させて、レイアウトを水平/垂直配置に固定したコンポーネントを実装する。
コントロールが RenderTarget を持たないときは親の RenderTarget を参照できるようにしたい。
親の RenderTarget の変更を子に反映させるのは高コストすぎる。
上下左右それぞれ個別にマージン・パディングを設定できるようにする。
サンプルを作る。
どんどん数を増やしていく。
top, left による座標の相対位置指定が効かなくなっている。
コンポーネントのデフォルトスタイルを設定できるようにする。
マージンとパディングを実装する。
現状コンポーネントは垂直方向にしか整列させることができないが、親コンテナ幅が許す限り水平方向に並べるオプションを追加することで横並びレイアウトを可能にする。
コンポーネントを**揃え・右寄せ・下寄せできるようにする。
ボーダーと背景色をサポートする。
角丸ボーダーや任意の画像を用いたボーダー、背景画像については実装を先送りにする。
背景画像はパディングを含まない要素の左上を基準とすること。
position :relative
を指定することで現在位置からの相対的なコンポーネントの位置を指定することができるようにする(関連 #18 )。
コンポーネントの位置を相対的に指定できるようにする。現在は整数リテラルでピクセル指定することができるが、浮動小数点数リテラルを使って親要素に対する倍率で位置を指定できるようにする。
コンポーネントの背景画像をサポートする。
以下の表示方法に対応する。
テキストラベル、テキストボタン内の文字列の折り返しを実装する。
ただし、width が nil のときは折り返しを行わないものとする。
ドキュメントを書く。
ビルダー DSL からパラメータを設定する API とコンポーネント本体の API が共有されているため、同名で動きの異なるメソッドが作りにくい状況になっている。
また、コンポーネント本体で値を書き換えてしまうと、初期化時のパラメータが失われるため、ビルダー DSL からは初期値を登録するだけで、コンポーネント本体からは読み出すだけとするほうがよりよい設計になる。
ビルダー DSL は設定用とし、コンポーネント本体の API から分離させる。
テスト✎を書く。
テキストラベルのテキストが改行文字を含む場合、以下の問題がある。
自前で改行で分割を行って、領域幅、高さを適切に計算し、複数行描画に対応する。
ContainerBox 以外は layout プロパティを変更できないほうが望ましい。
折り返しテキストの両端揃えを実装する。
行末が改行文字のときは左揃えとする。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.