Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOMをcanvasAppで使う構想 #171

Open
simiraaaa opened this issue Jul 2, 2016 · 4 comments
Open

DOMをcanvasAppで使う構想 #171

simiraaaa opened this issue Jul 2, 2016 · 4 comments

Comments

@simiraaaa
Copy link
Contributor

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

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

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

@axion014
Copy link
Contributor

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

@simiraaaa
Copy link
Contributor Author

@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のプロジェクトに追加するより別プロジェクトとしてリポジトリを分けて進めたほうが良いと思ってます。

@axion014
Copy link
Contributor

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

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とするくらいか。

@simiraaaa
Copy link
Contributor Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants