- 2007-08-04 15:00
- papervision3d
Papervision3Dに関連するサイトを巡っているとよく出会うコーディングスタイルがあります。
これです。
rootNode = scene.addChild(new DisplayObject3D("rootNode"));
addChildというメソッドが何故かノードを返します。
ノードを追加してbooleanを返すなら分かるのですが…。
他のプログラム、もしくは普通のActionScriptでプログラミングしている人には少し奇妙に感じるのではないでしょうか?
ということで、この奇妙なコーディングスタイルについて調べてみました。
scene(: Scene3D)のaddChildの実装箇所は「org.papervision3d.core.proto.DisplayObjectContainer3D.as」の大体117行目です。
要所だけ抜粋します。
public function addChild(child:DisplayObject3D,name:String=null):DisplayObject3D { // ・・・ this._childrenByName[ name ] = child; // ・・・ return child; }
なるほど!
引数に渡されたノードをハッシュで管理して、そのノードをそのままreturnしているのですね。
これで納得しました。
このコーディングスタイルのメリットは、
rootNode = new DisplayObject3D("rootNode"); scene.addChild(rootNode);
という、直感的な2行のコーディングが
rootNode = scene.addChild(new DisplayObject3D("rootNode"));
という、1行で済むところです。
Papervision3Dは様々なオブジェクトをaddChildしていくので、これは便利そうです。
しかし、このブログでは前者のコーディングスタイルにします。
なぜなら、ブログにソースを載せる時、一行が長いと読みにくいからです。
さらに、やはり直感的で無いからです。
実用プログラミングでは後者の方が効率的でスマートなので良いとは思います。
- Newer: Papervision3Dで複数のオブジェクトを扱う Part2
- Older: Papervision3Dで複数のオブジェクトを扱う
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.adamrocker.com/blog/138/papervision3d_coding_style_with_addchild.html/trackback/
- Listed below are links to weblogs that reference
- Papervision3Dの奇妙なコーディングスタイル - addChild - from throw Life
