2

私はこのようなものを機能させる方法を見つけようとしています:

qx.Class.define("effects.Application",
{
extend : qx.application.Standalone,
members :
{
main : function()
{
    // Call super class
    this.base(arguments);

    // Enable logging in debug variant
    if (qx.core.Environment.get("qx.debug"))
    {
        // support native logging capabilities, e.g. Firebug for Firefox
        qx.log.appender.Native;
        // support additional cross-browser console. Press F7 to toggle visibility
        qx.log.appender.Console;
    }

    var button = new qx.ui.form.Button("First Button");
    var fadeToggle = new qx.fx.effect.core.Fade(button.getContainerElement().getDomElement());
    fadeToggle.set({
       from : 1.0,
       to : 0.0
    });

    var doc = this.getRoot();
    doc.add(button);

    button.addListener("execute", function() {
        fadeToggle.start();
    },this);
}
}
});

これはApplication.js全体です。運がなくても何かに効果を加えようとしているだけです。qooxdooが効果を無視しているようです。

4

2 に答える 2

4

問題はDOM要素です。実行すると

button.getContainerElement().getDomElement()

DOMツリーにはまだ表示されていません。したがって、関数の戻り値はですnull。Qooxdooにはレンダリングキューがあるため、プログラムでの操作の表示はほとんど遅れます。これを回避するには、「appear」イベントを使用します。

var button = new qx.ui.form.Button("First Button").set({
    enabled: false
});
var doc = this.getRoot();
button.addListener('appear',function(){
    var fadeToggle = new qx.fx.effect.core.Fade(
        button.getContainerElement().getDomElement()
    ).set({
        from : 1.0,
        to : 0.0
    });
    button.addListener('execute',function(){
        fadeToggle.start();
    });
    button.setEnabled(true);  
});

ボタンを無効にしたり有効にしたりするのは、見せびらかすだけです...非常に高速なので、誰も気付かないでしょう。

フレームワークにはいくつかの*.flush()メソッドもあり、レンダリングをすぐに実行することができます。そのため、それらを呼び出すこともできます(正しいメソッド:-))。ただし、JSは常に非同期で作成する必要があるためです。可能であれば、上記はおそらく正しいことです。

于 2011-06-14T04:35:43.573 に答える
1

あなたも見たいかもしれません

  • 対応するマニュアルページ
  • アニメーションデモのコード、例えばこれ(私は彼らが主にアニメーションをユーザーの行動に引っ掛けることを認めますが)
于 2011-06-14T08:30:47.847 に答える