Développement d'interfaces circulaires. Partie 2. Portage de la bibliothèque de JavaScript vers QML

Table des matières



Introduction

Bibliothèque d'interface circulaire v2.0

CAPTCHA circulaire

Portage de la bibliothèque de JavaScript vers QML

Démo Application mobile

Conclusion



introduction



L' article précédent était une introduction au développement d'interfaces circulaires. Il aborde la définition, la classification, les principes de construction d'interfaces circulaires, ainsi qu'une approche de leur conception. Cet article décrit les principaux changements dans une bibliothèque que je développe pour faciliter et accélérer la création d'interfaces circulaires.



Tout d'abord, la deuxième version de la bibliothèque JavaScript a été publiée , qui implémente des contrôles circulaires.



Deuxièmement, la bibliothèque développée a été implémentée en QML et une application mobile pour Android a été publiée pour démontrer ses capacités .



Bibliothèque d'interface circulaire v2.0



Nouvelle base et éléments auxiliaires



, . , 1.



image

. 1 –



Segment Grid – (. 1A). . , , .



Segment Spiral – (. 1B). , , . , , .



Segment Gradient “Conic” — (. 1C). , . , , «».





.



Progress Bar – . (. 2).



image

. 2 –



Timer – , (. 3).



image

. 3 –



Gauge – (. 4). , . -.



image

. 4 –



Chart – . 3 : «», «», «» (. 5 ).



image

. 5 –



Equalizer – (. 6). .



image

. 6 –



Knob – (. 7).



image

. 7 –



Volume Control – (. 8). : .



image

. 8 –



Radar – . (. 9). , .



image

. 9 –



CAPTCHA



CAPTCHA (. 10).



image

. 10 – CAPTCHA



CAPTCHA — , (, ). , , , , , .



CAPTCHA , . , .



.

:



  • ;
  • ;
  • ;
  • .


.

, .



JavaScript .



JavaScript QML



, QML .

, , , .



QML .



1.



JavaScript . QML . JS- QML- .



2. JavaScript QML



JavaScript QML . . JavaScript , dispatchEvent, .



3. QML Canvas HTML



QML Canvas c API, HTML- . .



JavaScript - . QML , context Canvas, . paint , .



Canvas , . onPaint Canvas context ( — Segment), initialized true. onPaint draw, .



QML:

image



JavaScript, QML requestAnimationFrame window, Canvas. , Canvas . :



QML:

segment.context.canvas.requestAnimationFrame(appearAnim);


4. setTimeout



QML setTimeout . JavaScript , Timer Utilities .





QML:

Utilities { id: utilities }


setTimeout utilities.setTimeout.



5.



, ,



JS:

Segment.prototype.calc = function() { … }




QML:

function calc() { … }


6.



JavaScript ( build) , :



JS:

let segment = new Segment (‘id’, context, cx, cy, r_in, thickness, init_angle, angle);

QML:



let component = Qt.createComponent("Segment.qml");

let segment = component.createObject(parent_id, { id: ‘id’, context: this.context,

cx: this.cx, cy: this.cy, r_in: segment_r_in, thickness: segment_thickness,

init_angle: new_init_angle, angle: segment_angle });


7. MouseArea



JavaScript addEventListener, QML MouseArea. , JavaScript , , ‘mouse’ ‘wheel’ ‘e’, , :



JS:

e.offsetX

e.offsetY

e.deltaY


:



QML:

e.x

e.y

e.angleDelta.y


8.



, :



SegmentProgressBar SegmentTimer . 100% , .. , , (. 11).

image

. 11 –



JavaScript- SegmentTimer SegmentProgressBar, , r_in, .. , , . .



, Segment, . Segment 360°, . . , Segment.



, 2- 2- (. 12) QML- Canvas, Context2D. .



image

. 12 –



360° JavaScript, QML. 360°.



, , , 2D JavaScript, fillRule :

• "nonzero":

• "evenodd": -

“nonzero”.



, , beginPath, fill . , , , “evenodd”.



Context2D QML 2 fillRule:

• Qt.OddEvenFill

• Qt.WindingFill

“Qt.WindingFill”.



JavaScript- . QML-, , :



QML:

context.fillRule = Qt.OddEvenFill;


, , Segment QML, , .



QML .





. . . .



image image image

. 13 —



- Google Play .





, « CAPTCHA», .



, JavaScript QML .

, .



: .. - QML iOS, - , , , igor@tiunovs.com.



!




All Articles