2017/08/25(金)ノードとコンポーネント
grimoire.jsではすべてのデータ(タグ)は、木構造で管理されノードとして登録されています
各ノードはコンポーネント(機能)をいくつか持っており、親から継承されています
ノード
ノードを登録することで、自分で作ったデータ(タグ)を利用することができます
標準では、gomlやscene、camera、meshなどが登録されています
基本的に描画で使うオブジェクトはmeshから派生させることになります
また、形状についてはgeometryから派生させます
ノードの登録
registerNodeを使い登録できます
gr.registerNode("ノード名", [ノードの持つコンポーネントのリスト], {デフォルト値}, "親ノード")
myobjectという名前でノードを登録してみる
コンポーネントは特に無し(親から継承したコンポーネントは持ってる)
<div style="width: 640px; height: 480px; border: 1px dotted black;"> <script type="text/javascript"> gr.registerNode("myobject", [], {}, "mesh"); </script> <script type="text/goml"> <goml> <scene> <myobject geometry="cube" position="1,1,0" color="#99f" /> <camera/> </scene> </goml> </script> </div>
デフォルトのパラメータを指定した場合
<div style="width: 640px; height: 480px; border: 1px dotted black;"> <script type="text/javascript"> gr.registerNode("myobject", [], {geometry: "sphere"}, "mesh"); // デフォルトで 球(sphere) にする </script> <script type="text/goml"> <goml> <scene> <myobject position="1,1,0" color="#99f" /> <!-- デフォルトで指定された 球(sphere) になる --> <myobject geometry="cube" position="-1,1,0" color="#99f" /> <!-- パラメータで指定した 立方体(cube) になる --> <camera/> </scene> </goml> </script> </div>
コンポーネント
コンポーネントを登録することで、オブジェクトに機能を追加することができます?
コンポーネントの登録
registerComponentを使い登録できます
gr.registerComponent("コンポーネント名", {属性値やイベント})