我在QML文件中创建了这个函数:
function setPanelOpacity(panel, visiblePanel) {
panel.opacity = (panel === visiblePanel) ? 1 : 0;
}
这样可行,但我希望不透明度变化需要0.5秒而不是一次性完成。我怎么能在这个功能里面做到这一点? (我已经看过使用QML对象中定义的状态和转换的示例,但没有任何内容完全在像我的函数这样的函数中完成)
编辑:我看到我可以通过向每个面板对象添加Behavior
来实现此目的,如下所示:
Behavior on opacity {
NumberAnimation {
duration: 500
easing.type: Easing.InOutQuad
}
}
不得不将这个块添加到我的所有对象中,这有点痛苦。有没有办法在我的方法中完全以编程方式实现这一点,或者将此Behavior
应用于我页面上的每个对象?
答案 0 :(得分:0)
QML从一开始就被设计为一种声明性语言,而你现在拥有的是最佳解决方案。虽然很可能使用函数进行动画处理,但它肯定不那么方便和干净。
如果目标是避免代码重复,只需在您自己的自定义类型中实现所需的行为,然后您可以根据需要实例化它,并且每个实例都将具有所需的行为,而无需手动实现它。 / p>