phinajs / phina.js

phina.js is game library

Home Page:http://phinajs.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DOMをcanvasAppで使う構想

simiraaaa opened this issue · comments

http://runstant.com/simiraaaa/projects/19f06ad2
CanvasApp と domを組み合わせて使う構想 (resizeもOK)
あとはDisplayElementを継承して、HtmlElementみたいな物を作って同じように扱えるようにすれば、簡単に使うことができるまでを考えてます

DisplayElementを継承して、domを持ったものを作り、enterframeでdomにプロパティをセットしていく
プロパティを$watchしておいて変更があった場合でやってもいいかと思ってます
addChildとかその要素にHTMLElementを単純にappendしたい場合とかいろいろ考える必要がある。

pluginで作ろうかと考えてる。名前未定

今これを実装してみようかと考えているんですが、どうも難しいですね。
DomAppのdomElementは一つしかないので、組み合わせを捨ててHTMLAppを作るか、あるいはphina.jsの基本設計から手を加える必要がありそうです。
うーん…

@axion014 組み合わせは難しいと思ってたので、あたらしくApp作るよりはどちらかといえばSceneかElement系でappにアタッチするかSceneにアタッチするかみたいなほうが良いと思います。

イメージ
html = phina.util.html

// appを改造する場合
// html.enableDOM(app);

// scene init内
html.enableDOM(this)
var domLayer = DOMLayer().addChildTo(this);
DOMTextarea({x: 100, y: 100, width: 200, height: 200]}).addChildTo(domLayer);

というような感じですね。
進める場合はphina.jsのプロジェクトに追加するより別プロジェクトとしてリポジトリを分けて進めたほうが良いと思ってます。

イメージです。あくまで参考までに

CanvasAppはなくして
現状のDomApp(? ネーミングは怪しい。変更の余地あり)のオプションにcanvasとdomなるものを(デフォルトで両方true、両方falseに指定された場合canvasがtrueになる)

初期化時にcanvasがtrueなら今CanvasAppでしているようなことをし
domがtrueならベースのdivを用意する

DisplaySceneはapp.canvasがfalseなら自分のcanvasに描画せず
同domがfalseならDOM系の要素を使わない
こんな感じがいいかな?(勝手)

互換性を保とうとするとややこしい…
CanvasAppをdomがfalseの新Appとするくらいか。

@axion014 まあ、今のphinaのElementやDomApp以上のレイヤーで考えると設計的に破綻すると思います。
大まかに考え的にはまとまっているので、ガッツリ作ってまで使いたいと思えば自分が作ります。
ただ、現状自分の中でそこまで重要性はないので、優先順位はかなり低いです。