hiloteam / Hilo

A Cross-end HTML5 Game development solution
https://hiloteam.github.io/
MIT License
5.93k stars 863 forks source link

DOMElement 无法移除 #95

Closed xiangfengsu closed 7 years ago

xiangfengsu commented 7 years ago

Hilo.Container 包含DOMElement , stage.removeChild(Container) ,DOMElement 无法移除

demo

var stageWidth = innerWidth; var stageHeight = innerHeight; var stage = new Hilo.Stage({ container: document.body, width: stageWidth, height: stageHeight, renderType: 'canvas' }); stage.enableDOMEvent([Hilo.event.POINTER_START, Hilo.event.POINTER_MOVE, Hilo.event.POINTER_END]); var ticker = new Hilo.Ticker(60); ticker.addTick(stage); ticker.start(); var font = "14px arial"; var content = "Hello World! Hilo是一款HTML5 2D游戏引擎,欢迎使用。";

//text view

var textView = new Hilo.Container({ x: 40, y: 50, width:250, height:100, rotation:90, background:'red' }).addTo(stage); var text = new Hilo.Text({ font: font, text: content, lineSpacing: 0, width: 250, // textAlign:'end',

height: 100,
x: 0,
y: 0

}).addTo(textView); //text wrapped in dom element elem = new Hilo.DOMElement({ element: Hilo.createElement('div', { innerHTML: content, style: { position: 'absolute', font: font } }), width: 250, height: 100, x: 40, y: 150, }).addTo(textView);

// text 可以移除,但是elem无法移除 setTimeout(function(){ stage.removeChild(textView) },2000)

06wj commented 7 years ago

这种情况确实会有bug,如果要解决的话需要Renderer里递归查看子元素是否被移出,性能消耗比较大。 建议手动调下 textView.removeChild(elem).