0.0.1 • Published 4 years ago

aframe-xylayout v0.0.1

Weekly downloads
7
License
MIT
Repository
github
Last release
4 years ago

xyLayout

Flexbox like layout + UI components for A-Frame.

Examples

Live demos:

Layout example UI example

Usage

Use xylayout-all.min.js (35kB)

AFrameのあとにxylayout-all.min.jsを読み込んでください.

ES2015 をサポートしたブラウザが必要です.(最新版の Chrome, Firefox, Edge で動作します)

<script src="https://cdn.jsdelivr.net/gh/aframevr/aframe@v1.0.0/dist/aframe-master.min.js"></script>
<script src="https://binzume.github.io/aframe-xylayout/dist/xylayout-all.min.js"></script>
...
<a-xycontainer direction="column" spacing="0.1" padding="0.2">
    <a-xylabel value="ABC123漢字" width="2" height="0.5"></a-xylabel>
    <a-xybutton label="Button"></a-xybutton>
    <a-xyselect values="abc,123,Foo,Bar" select="1"></a-xyselect>
    <a-xytoggle value="true"></a-xytoggle>
    <a-xyrange width="4" height="0.5" value="20"></a-xyrange>
    <a-xycontainer direction="row" spacing="0.2">
        <a-box color="blue"></a-box>
        <a-box color="red"></a-box>
        <a-box color="green"></a-box>
    </a-xycontainer>
</a-xycontainer>

Building xylayout-all.min.js

npm install
npm run dist

Primitives

T.B.D. (See examples)

  • a-xycontainer
  • a-xywindow
  • a-xylabel
  • a-xybutton
  • a-xyrange
  • a-xytoggle
  • a-xyselect
  • a-xyscroll
  • a-xyinput
  • a-xykeyboard

それぞれ同名のコンポーネント + xyrectコンポーネントが使われます.

Components

xycontainer

3Dオブジェクトを平面上に配置するコンテナ. CSS Flexbox と同様のレイアウトができますが挙動は少し異なります.

Attributes:

namedefaultdescvalues
directioncolumnレイアウト方向'row', 'column' ('horizontal', 'vertical')
justifyItemsstartレイアウト方向の小要素の配置'center', 'start', 'end', 'space-between', 'space-around', 'stretch'
alignItemsnoneレイアウトに対し垂直方向の小要素の配置'none', 'center', 'start', 'end', 'stretch'
alignContentnonewrapで折り返した時の各行の配置'none', 'center', 'start', 'end', 'stretch'
spacing0レイアウト間隔number
padding0上下左右の余白number
wrapnowrap折返しwrap, nowrap
reversefalse逆向きにレイアウト

xyitem

親のxycontainerで指定された値を要素ごとに上書くためのコンポーネント. 親要素がxycontainerではない場合は追加しても何も起きません.

Attributes:

nametypedefaultdesc
alignalignnonealignItems参照
grownumber1stretchで拡張される量
shrinknumber1stretchで縮小される量
fixedbooleanfalsetrueに設定するとレイアウト時に無視されます

xyrect

xycontainerは要素のwidth,height属性を見ますが,width,heightからサイズがわからないもの(a-sphereなど)や, 原点が中心ではないオブジェクトに対してサイズを明示するためのコンポーネント.

Attributes:

nametypedefaultdesc
widthnumber-1要素の幅を明示.無指定時(-1)は要素のwidth属性を使います
heightnumber-1要素の高さを明示.無指定時(-1)は要素のheight属性を使います
pivotvec2(0.5, 0.5)要素の原点の位置

pivotは,左下が(0,0)です.a-frame のほとんどの要素は中心 (0.5, 0.5) が原点です.

Events:

nameevent.detaildesc
xyresize{xyrect}Resize event

xywindow

Attributes:

nametypedefaultdesc
titlestringウィンドウタイトル
closablebooleantrue閉じるボタンの表示

xylabel

textコンポーネントのWrappper. マルチバイト文字が含まれる場合はCanvasでのレンダリングにフォールバックします.

Attributes:

nametypedefaultdesc
valuestringテキスト
renderingModestringautocanvas: 常にcanvasでレンダリングする, auto: 可能ならtextコンポーネントを使う
resolutionnumber32canvasを使う場合の高さ方向の解像度

上記以外のパラメータはtextコンポーネントを参照.

xybutton

Attributes:

nametypedefaultdesc
colorcolorボタンの色
hoverColorcolorカーソルが載った時のボタンの色

Events:

nameevent.detaildesc
clickClick event

xytoggle

Attributes:

nametypedefaultdesc
valuebooleanfalseトグルスイッチの状態

※ このコンポーネントはDOM要素にも value 属性を追加します

Events:

nameevent.detaildesc
change{value}changed event

xyrange

Attributes:

nametypedefaultdesc
minnumber0最小値
maxnumber100最大値
valuenumber0初期値
stepnumber0変化の単位
thumbSizenumber0.4つまみサイズ

※ このコンポーネントはDOM要素にも value 属性を追加します

Events:

nameevent.detaildesc
change{value}changed event

xyselect

Attributes:

nametypedefaultdesc
valuesarray[]選択肢
selectint0選択されているインデックス
togglebooleanfalseトグルモード

Events:

nameevent.detaildesc
change{value, index}changed event

xylist

リスト.RecyclerView です.xyscrollの子要素で使う前提の実装です. 表示の際にはxylist.setAdapter(), xylist.setContents() を呼ぶ必要があります.

Attributes:

nametypedefaultdesc
itemWidthnumber-1アイテムの幅
itemHeightnumber-1アイテムの高さ

Events:

nameevent.detaildesc
clickitem{index}click item event

Method:

使い方はサンプルを参照してください.

  • setAdapter({create, bind}): ビューの生成処理を設定します
  • setContents(data, optional_count): リストの内容を設定します
  • setLayout({size, targets, layout}): レイアウトを設定します

xyclipping

表示をクリッピングするためのコンポーネント.xyscrollで使用.

小要素のサイズが親要素をはみ出す場合にレンダリング時にクリッピングされます.

Attributes:

nametypedefaultdesc
clipTopbooleantrue上部をクリッピングします
clipBottombooleantrue下部をクリッピングします
clipLeftbooleanfalse左側をクリッピングします
clipRightbooleanfalse右側をクリッピングします
excludeselectorクリッピングから除外する要素

THREE.js標準のシェーダを使っている場合のみ正しく動きます.例えばa-textはシェーダが専用のものなので正しくクリッピングされません.

xyscroll

スクロールを管理するコンポーネント. 小要素の高さがはみ出す場合にスクロールバーによるスクロールができるようにします.横スクロールは未対応です.

このコンポーネントだけは,要素の中心ではなく左下を原点として扱います.

Attributes:

nametypedefaultdesc
scrollbarbooleantrueスクロールバーを表示

Events:

nameevent.detaildesc
xyviewportt, b, l, rviewport change event

xyinput

テキスト入力ボックス.

Attributes:

nametypedefaultdesc
valuestring内容
typestring'', 'number', 'password'
placeholderstringプレースホルダーテキスト
caretColorcolorキャッレット色
bgColorcolorwhite背景色

※ このコンポーネントはDOM要素にも value 属性を追加します

xykeyboard

キーボード.フォーカスを持った要素にKeyboardEventを送信します.日本語入力可.

Attributes:

nametypedefaultdesc
imebooleanfalse漢字変換を有効にする
keySizenumber0.2キーのサイズ

License

MIT License