在鼠标单击QML上重复状态

时间:2015-06-23 09:12:21

标签: qt qml qtquick2

在代码中我定义了StateTransitionRotationAnimation

在发生属性更改后,即在rotation设置为360之后,onClicked处理程序将呈现静音状态,并且在后续{{1}之后将永远不再播放动画点击。

这是我目前的代码:

MouseArea

1 个答案:

答案 0 :(得分:0)

State是一种表示给定Item的不同属性配置的方法。每个State都有其唯一的值集,用于在特定Item内定义的属性。

Transition是一种在当前Item 更改到另一个State时向State添加动画的方法。它们可以以受限制的方式应用,即仅当Item从特定State更改为另一个Statefrom属性时才会应用),或者它们可以应用于全球"对于每个state更改。无论如何,需要进行更改

在您的代码中,rotated设置为State,然后重新分配Transition,以便不再进行进一步的更改。因此,对rotated state或默认空名State的其他Transition没有空间。

无论如何,有多种方法可以应用动画,包括但不限于toimport QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 ApplicationWindow { width: 250 height: 250 visible: true Image{ id: logo anchors.centerIn: parent source: "https://yt3.ggpht.com/-YiF6y9OXDQ8/AAAAAAAAAAI/AAAAAAAAAAA/oFNmJLmzqDA/s100-c-k-no/photo.jpg" width: 100 height: 100 RotationAnimation { id: rotate target:logo property: "rotation" from: 0 to: 360 duration: 1000 direction: RotationAnimation.Clockwise } MouseArea { id: area anchors.fill: parent onClicked: { rotate.start() // animation plays here! // your code } } } } s,Behaviorsusing predefined targets。在我看来,后者是这种具体案例的方法。这是一个重新访问的代码版本,点击鼠标即触发动画:

String pattern = "[\\(?=\\)]";
String b = "(079)25894029".trim();
String c[] = b.split(pattern,-1);
for (int a = 0; a < c.length; a++)
    System.out.println("c[" + a + "]::->" + c[a] + "\nLength::->"+ c[a].length());