FreeKill/qml/Pages/RoomElement/SkillInvokeAnimation.qml

79 lines
1.4 KiB
QML
Raw Normal View History

// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick
import "../skin-bank.js" as SkinBank
Item {
id: root
property string skill_type
property string skill_name
signal finished()
PixmapAnimation {
id: typeAnim
anchors.centerIn: parent
source: SkinBank.PIXANIM_DIR + "skillInvoke/" + skill_type
keepAtStop: true
}
Text {
id: bigSkillName
anchors.centerIn: parent
anchors.horizontalCenterOffset: 100
text: skill_name
font.pixelSize: Math.max(24, 48 - (text.length - 2) * 6)
font.family: fontLi2.name
style: Text.Outline
color: "white"
opacity: 0
}
ParallelAnimation {
id: textAnim
PropertyAnimation {
target: bigSkillName
property: "opacity"
to: 1
easing.type: Easing.InQuart
duration: 200
}
PropertyAnimation {
target: bigSkillName
property: "anchors.horizontalCenterOffset"
to: 0
easing.type: Easing.InQuad
duration: 240
}
onFinished: {
pauseAnim.start();
}
}
SequentialAnimation {
id: pauseAnim
PauseAnimation {
duration: 1200
}
PropertyAnimation {
target: root
property: "opacity"
to: 0
duration: 200
easing.type: Easing.OutQuart
}
onFinished: {
root.visible = false;
root.finished();
}
}
Component.onCompleted: {
typeAnim.start();
textAnim.start();
}
}