朝起きてその勢いで、Groupクラスを実装してみた。Button.new(100,100,"Button");group.addEventListener('enterframe'){|e|self.y+=1}group.addChild(bear)group.addChild(label)group.addChild(button)Game.rootScene.addChild(group)こうすると、前回までに作ったプログラムがまるごと下に移動して行く、という状態を作ることが出来る。HotRuby.jsのソース改変部分を見てみよう今回もいつものようにHotRuby.prototype.classesを拡張している。Groupはエンティティをグループ化する別のエンティティだから、やはりEntityクラスを継承することになる。{recver.__instanceVars.entity.removeChild(args[0].__instanceVars.entity);}},Groupが使えるようになると、非常にシンプルだが強力な味方を得たことになる。enchant.jsではスクロールする背景などをグループにしたり、画面に表示させるエンティティの優先度をコントロールするテクニックがよく使われる。ここまで来ると、僕が過去に作ったenchant.jsのゲームの大半はそのまま移植できてしまう。あと良く使うのは、Sceneのpushとpopだ。enchant.jsのシーンはスタックのようになっていて、あるシーンの上に別のシーンを重ねて行ける。上のシーンにあるときは、下のシーンへのイベント発行は抑制される。9leapに投稿されているゲームによくある「START」という文字を出して画面を止める処理は、シーンのスタックによって行われている。これを実現するためにGameクラスに手を加える。{game.popScene();}},今回のは非常に簡単だ。Sceneクラスを既にHotRubyクラスとして定義してあるから、渡されたargsの中から__instanceVars.sceneをそのままGame.pushSceneに渡せばいい。start!」というラベルをクリックすると、testSceneがポップされて、groupが動き出すようになる。これでゲームを作るための準備はほぼ整った。Mapクラスのラップがまだだけど、今のところMapを使うほど高度なゲームは9leapでも少ないので、これは後回しにしよう。完全にラップできたわけではないが、ゲームを作ってみるには十分だろう。