2010-03-31 22 views
2

我试图撼动一个窗口,但得到控制台中的错误混乱。我的代码:如何在qooxdoo中“摇动”一个窗口?

var win = new qx.ui.window.Window ("Login"); 
    win.setLayout (new qx.ui.layout.Grow); 
    win.add (view); 

    this.effect = new qx.fx.effect.combination.Shake (
    win.getContainerElement().getDomElement()); 

    return win; 

其中view是GroupBox实例(来自demobrowser/animation/login)。

回答

3

正如您自己发现的那样:创建抖动对象时,窗口的DOM元素不存在。在qooxdoo中,我们一次创建所有的DOM元素,这样浏览器不需要经常渲染多于需要的元素。

在时间窗口触发“出现”事件(您也可以使用“resize”事件)时,DOM元素已创建。一定要使用addListenerOnce()而不是addListener()!否则,如果窗口已隐藏,每次窗口再次可见时,都会创建新的摇动效果。 ;-)

+0

谢谢,关于addListenerOnce的信息非常有用! – W55tKQbuRu28Q4xv 2010-04-01 04:12:35

3

对不起,发出噪音! 如果我在“出现”侦听器中创建效果 - 代码运行良好。

win.addListener ("appear", function (e) 
    { 
     this.effect = new qx.fx.effect.combination.Shake (
     win.getContainerElement().getDomElement()); 
    }, this); 
0
var win = new qx.ui.window.Window("Login"); 
win.setLayout(new qx.ui.layout.Grow); 
win.add(view); 
win.addListener("appear", function(){ 
    var effect = new qx.fx.effect.combination.Shake(win.getContainerElement().getDomElement()); 
    effect.start(); 
}, this); 
return win; 
相关问题