Как «потрясти» окно в qooxdoo? - PullRequest
2 голосов
/ 31 марта 2010

Я пытаюсь потрясти окно, но в консоли возникла ошибка. Мой код:

  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 ]

3 голосов
/ 01 апреля 2010

Как вы уже поняли, элемент DOM окна не существует в тот момент, когда вы создаете объект встряхивания.В qooxdoo мы создаем все элементы DOM одновременно, чтобы браузеру не приходилось рендериться чаще, чем нужно.

В момент запуска окна появляется событие «появляются» (вы также можете использовать «изменение размера»).событие), элемент DOM был создан.Обязательно используйте addListenerOnce () вместо addListener ()!В противном случае вы будете создавать новый эффект встряхивания каждый раз, когда окно снова становится видимым, если оно было скрыто.; -)

3 голосов
/ 31 марта 2010

Извините за шум! Если я создаю эффект в «появившемся» слушателе - код работает хорошо.

    win.addListener ("appear", function (e) 
    {
      this.effect = new qx.fx.effect.combination.Shake (
        win.getContainerElement ().getDomElement ());
    }, this);
0 голосов
/ 01 марта 2011
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;
...