Skip to content
Snippets Groups Projects
Commit bd110cc7 authored by york's avatar york
Browse files

behavior on

parent a5d9ba3c
No related branches found
No related tags found
No related merge requests found
var stop=0
var sleep = function(time) {
var startTime = new Date().getTime() + parseInt(time, 10);
while(new Date().getTime() < startTime) {}
};
WorkerScript.onMessage = function(message) {
var count = message.duration/16;//16ms each data
var step = (message.newSpeed-message.oldSpeed)/count;
for(var i=1;i<=count;i++)
{
WorkerScript.sendMessage({ 'speed': message.oldSpeed+step*i ,'end':0})
sleep(16);
}
}
...@@ -4,6 +4,7 @@ import QtQuick.Shapes 1.0 ...@@ -4,6 +4,7 @@ import QtQuick.Shapes 1.0
Item { Item {
id:shapeItem id:shapeItem
property real engineSpeedAngle: 0 property real engineSpeedAngle: 0
// property real tmpEngineSpeedAngle: 0
Image { Image {
id: leftGauge id: leftGauge
x:19 x:19
...@@ -20,6 +21,41 @@ Item { ...@@ -20,6 +21,41 @@ Item {
source:"qrc:/images/Tachometer_Scale.png" source:"qrc:/images/Tachometer_Scale.png"
opacity:1 opacity:1
} }
// property real lastSpeed: right_mark_Point.rotation
// onEngineSpeedAngleChanged: {
// rotator.from = lastSpeed;
// rotator.to = engineSpeedAngle;
// lastSpeed = engineSpeedAngle;
// rotator.running=true;
// rotator2.from = lastSpeed;
// rotator2.to = engineSpeedAngle;
// lastSpeed = engineSpeedAngle;
// rotator2.running=true;
// }
// SequentialAnimation{
// running: true
// loops: Animation.Infinite
// RotationAnimator{
// id:rotator
// target: right_mark_Point
// from: -90
// to:90
// duration: 2000
// }
// RotationAnimator{
// id:rotator2
// target: right_mark_Point
// from: 90
// to:-90
// duration: 2000
// }
// }
// Shape{ // Shape{
// id:leftShape // id:leftShape
// anchors.fill: leftGauge // anchors.fill: leftGauge
...@@ -31,9 +67,9 @@ Item { ...@@ -31,9 +67,9 @@ Item {
// fillColor: "transparent" // fillColor: "transparent"
// PathAngleArc{ // PathAngleArc{
// radiusX: 306 // radiusX: 306
// radiusY: 288 // radiusY: 306
// centerX: leftShape.width/2 // centerX: 318
// centerY: leftShape.height/2+83 // centerY: 320
// startAngle: 150 // startAngle: 150
// sweepAngle: engineSpeedAngle+120 // sweepAngle: engineSpeedAngle+120
// } // }
...@@ -45,6 +81,12 @@ Item { ...@@ -45,6 +81,12 @@ Item {
y:22 y:22
visible: true visible: true
rotation: engineSpeedAngle rotation: engineSpeedAngle
// Behavior on rotation {
// RotationAnimator{
// duration: 100
// }
// }
transformOrigin:Item.Bottom transformOrigin:Item.Bottom
source:"qrc:/images/pointer_long.png" source:"qrc:/images/pointer_long.png"
opacity:1 opacity:1
...@@ -76,9 +118,9 @@ Item { ...@@ -76,9 +118,9 @@ Item {
// fillColor: "transparent" // fillColor: "transparent"
// PathAngleArc{ // PathAngleArc{
// radiusX: 306 // radiusX: 306
// radiusY: 288 // radiusY: 306
// centerX: rightShape.width/2 // centerX: 318
// centerY: rightShape.height/2+83 // centerY: 320
// startAngle: 150 // startAngle: 150
// sweepAngle: engineSpeedAngle+120 // sweepAngle: engineSpeedAngle+120
// } // }
...@@ -92,5 +134,10 @@ Item { ...@@ -92,5 +134,10 @@ Item {
rotation: engineSpeedAngle rotation: engineSpeedAngle
transformOrigin:Item.Bottom transformOrigin:Item.Bottom
source:"qrc:/images/pointer_short.png" source:"qrc:/images/pointer_short.png"
// Behavior on rotation {
// RotationAnimation{
// duration: 100
// }
// }
} }
} }
...@@ -8,19 +8,21 @@ ...@@ -8,19 +8,21 @@
#include"datamodel.h" #include"datamodel.h"
#include"mycircle.h" #include"mycircle.h"
#include"myeventfilter.h" #include"myeventfilter.h"
QGuiApplication* g_app;
void setSpeed(DataModel* model) void setSpeed(DataModel* model)
{ {
qDebug()<<"running thread"; qDebug()<<"running thread";
bool forward=true; bool forward=true;
qreal speed=0; qreal speed=0;
qreal step=9;
while (true) { while (true) {
if(forward) if(forward)
{ {
speed+=1; speed+=step;
} }
else else
{ {
speed-=1; speed-=step;
} }
model->setSpeed(speed); model->setSpeed(speed);
if(forward && speed>=90) if(forward && speed>=90)
...@@ -31,7 +33,7 @@ void setSpeed(DataModel* model) ...@@ -31,7 +33,7 @@ void setSpeed(DataModel* model)
{ {
forward=true; forward=true;
} }
QThread::msleep(16); QThread::msleep(100);
} }
} }
...@@ -45,11 +47,16 @@ int main(int argc, char *argv[]) ...@@ -45,11 +47,16 @@ int main(int argc, char *argv[])
} }
DataModel model; DataModel model;
QtConcurrent::run(setSpeed,&model);
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
g_app = &app;
QtConcurrent::run(setSpeed,&model);
qmlRegisterType<MyCircle>("MyControl",1,0,"Circle"); qmlRegisterType<MyCircle>("MyControl",1,0,"Circle");
MyEventFilter eventFilter; // MyEventFilter eventFilter;
app.installEventFilter(&eventFilter); // app.installEventFilter(&eventFilter);
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("Model",&model); engine.rootContext()->setContextProperty("Model",&model);
...@@ -61,6 +68,7 @@ int main(int argc, char *argv[]) ...@@ -61,6 +68,7 @@ int main(int argc, char *argv[])
QCoreApplication::exit(-1); QCoreApplication::exit(-1);
}, Qt::QueuedConnection); }, Qt::QueuedConnection);
engine.load(url); engine.load(url);
QQuickWindow* window =static_cast<QQuickWindow*>(engine.rootObjects().at(0)) ; QQuickWindow* window =static_cast<QQuickWindow*>(engine.rootObjects().at(0)) ;
QElapsedTimer *pTimer = new QElapsedTimer(); QElapsedTimer *pTimer = new QElapsedTimer();
pTimer->start(); pTimer->start();
......
import QtQuick 2.12 import QtQuick 2.11
import QtQuick.Window 2.12 import QtQuick.Window 2.11
import MyControl 1.0 import MyControl 1.0
import QtQuick.Shapes 1.15 import QtQuick.Shapes 1.0
Window { Window {
width: 1920 width: 1920
height: 720 height: 720
...@@ -12,31 +12,48 @@ Window { ...@@ -12,31 +12,48 @@ Window {
color: "black" color: "black"
} }
MyShapeGauge{ MyShapeGauge{
id:shapeGauge id:shapeGauge
engineSpeedAngle:Model.speed engineSpeedAngle: Model.speed
} Behavior on engineSpeedAngle{
// MySGGauge{ NumberAnimation{
// id:sgGauge duration: 150
// } }
SequentialAnimation{
running: false
loops: Animation.Infinite
PropertyAnimation{
target: shapeGauge
property: "engineSpeedAngle"
from: -90
to:90
duration: 10000
}
PropertyAnimation{
target: shapeGauge
property: "engineSpeedAngle"
from: 90
to:-90
duration: 10000
} }
// property real duration: 0
// property real tmpEngineSpeedAngle: Model.speed
// onTmpEngineSpeedAngleChanged:{
// duration = Math.abs(engineSpeedAngle-tmpEngineSpeedAngle)*4000/224;
// engineSpeedAngle = tmpEngineSpeedAngle;
// }
// Behavior on engineSpeedAngle {
// NumberAnimation{
// duration: duration
// }
// }
} }
// SequentialAnimation{
// running: true
// loops: Animation.Infinite
// PropertyAnimation{
// target: shapeGauge
// property: "engineSpeedAngle"
// from: -90
// to:90
// duration: 3000
// }
// PropertyAnimation{
// target: shapeGauge
// property: "engineSpeedAngle"
// from: 90
// to:-90
// duration: 3000
// }
// }
} }
...@@ -7,9 +7,11 @@ MyEventFilter::MyEventFilter(QObject *parent) : QObject(parent) ...@@ -7,9 +7,11 @@ MyEventFilter::MyEventFilter(QObject *parent) : QObject(parent)
bool MyEventFilter::eventFilter(QObject *watched, QEvent *event) bool MyEventFilter::eventFilter(QObject *watched, QEvent *event)
{ {
// qDebug()<<"enter event filter"; // qDebug()<<"enter event filter";
if(event->type() == QEvent::UpdateRequest) if(event->type() == QEvent::StateMachineSignal)
{ {
qDebug()<<"paint..."<<m_timer.restart()<<"ms"; // qDebug()<<"paint..."<<m_timer.restart()<<"ms";
return QObject::eventFilter(watched,event);
} }
QObject::eventFilter(watched,event); // return QObject::eventFilter(watched,event);
return true;
} }
...@@ -59,5 +59,6 @@ ...@@ -59,5 +59,6 @@
<file>images/Turbocharged_Scale.png</file> <file>images/Turbocharged_Scale.png</file>
<file>images/water_white.png</file> <file>images/water_white.png</file>
<file>MySGGauge.qml</file> <file>MySGGauge.qml</file>
<file>InterpolationGenerator.js</file>
</qresource> </qresource>
</RCC> </RCC>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment