интеграция эффектов qooxdoo в окно qooxdoo - PullRequest
2 голосов
/ 17 июня 2011

каков наилучший способ сделать это?например:

Я хочу, чтобы окно исчезло (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();
}

1 Ответ

4 голосов
/ 17 июня 2011

Я бы предложил следующее

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});

Запустите это на детской площадке qooxdoo с http://tinyurl.com/3v72sk3

...