2011-06-17 54 views
2

这样做的最佳方式是什么?例如:在qooxdoo窗口中集成qooxdoo效果

我想让窗口淡出(qx.fx.effect.core.Fade(DOM)),当用户点击minimize按钮时。所以我做了这个窗口类:

this.addListener("appear", function() { 
    this.minimizeEffect = /*fade effect*/; 
},this); 
this.addListener("beforeMinimize", function() { 
    this.minimizeEffect.start();/*delay(1000);*/ 
},this); 

我需要,因为(我认为),否则最小化窗口做延迟,当它刚刚开始褪色! 任何解决方案?我甚至用finish事件试过它,但没有运气。 谢谢!

编辑: 我delay()功能是错的..所以它不会“编译”,而这一切更加混乱,使对我说:

function delay(ms){//this works (it fades ok) 
    var date = new Date(); 
    var curDate = new Date(); 
    while(curDate-date < milis)//this is wrong, milis don't exist 
     curDate = new Date(); 
} 

function delay(ms){//it donesn't work (no fade) 
    var date = new Date(); 
    var curDate = new Date(); 
    while(curDate-date < ms)//this is "good" 
     curDate = new Date(); 
} 

回答

4

我建议以下

var win = new qx.ui.window.Window("First Window").set({ 
    width: 300, 
    height: 300, 
    opacity: 0, 
    showMinimize: false 
}); 

var hideEffect; 

win.addListenerOnce('appear',function(){ 
    var el = win.getContainerElement().getDomElement(); 
    var showEffect = new qx.fx.effect.core.Fade(el).set({ 
    from: 0, to: 1 }); 
    hideEffect = new qx.fx.effect.core.Fade(el).set({ 
    from: 1, to: 0 }); 
    hideEffect.addListener('finish',function(e){ 
    win.setOpacity(0); 
    win.close(); 
    }); 
    showEffect.addListener('finish',function(){ 
    win.setOpacity(1); 
    }); 
    showEffect.addListenerOnce('finish',function(){ 
    win.addListener('appear',function(){ 
     showEffect.start(); 
    }); 
    }); 
    showEffect.start(); 
}); 


win.addListener('beforeClose',function(){ 
    if (win.getOpacity() == 1){ 
    hideEffect.start(); 
    e.stopPropagation(); 
    } 
}); 

this.getRoot().add(win, {left:10, top:30}); 
var openBtn = new qx.ui.form.Button('Open Window'); 
openBtn.addListener('execute',function(){win.open();}); 
this.getRoot().add(openBtn, {left:10, top:10}); 

http://tinyurl.com/3v72sk3

运行此在操场的Qooxdoo