{"id":2390,"date":"2021-01-17T17:24:47","date_gmt":"2021-01-17T16:24:47","guid":{"rendered":"http:\/\/lamartinieredesign.fr\/?page_id=2390"},"modified":"2021-01-17T18:06:50","modified_gmt":"2021-01-17T17:06:50","slug":"astuces-processing","status":"publish","type":"page","link":"https:\/\/lamartinieredesign.fr\/?page_id=2390","title":{"rendered":"Astuces processing"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">1_ Cr\u00e9er un timer<\/h4>\n\n\n\n<p>Un timer permet d&rsquo;ex\u00e9cuter une action, ou un ensemble d&rsquo;actions \u00e0 intervalles r\u00e9guliers. G\u00e9n\u00e9ralement, un timer est bas\u00e9 sur le temps. Il est donc envisageable d&rsquo;utiliser la cadence du <code>draw()<\/code> pour cela, mais la fa\u00e7on la plus pr\u00e9cise reste l&rsquo;utilisation de <code>millis()<\/code>.<\/p>\n\n\n\n<p>La commande millis() rel\u00e8ve le temps \u00e9coul\u00e9 depuis le d\u00e9but de l&rsquo;animation, lorsqu&rsquo;on lance un sketch, et utilise la milliseconde comme unit\u00e9. De fait, lorsque  <code>millis() = 1000<\/code>, il s&rsquo;est \u00e9coul\u00e9 une seconde.<\/p>\n\n\n\n<p>Pour cr\u00e9er un timer, cela se passe en plusieurs temps.<br>il faut pr\u00e9alablement d\u00e9terminer un intervalle de temps dans une variable initiale. Disons par exemple <code>int duree = 1000;<\/code> pour une dur\u00e9e d&rsquo;une seconde. <br>A un moment donn\u00e9 (ce peut \u00eatre au d\u00e9but dans le <code>setup()<\/code> ou sur le d\u00e9clenchement d&rsquo;une action), il faut relever la valeur courante de  <code>millis()<\/code> dans une variable, disons <code>int topDepart;<\/code> par <code>topDepart = millis();<\/code><br>Puis, il faut tester dans une condition pour v\u00e9rifier si la dur\u00e9e initiale s&rsquo;est \u00e9coul\u00e9e depuis le top d\u00e9part, g\u00e9n\u00e9ralement dans le <code>draw()<\/code>. Si cette condition est vraie, une action aura lieu, sinon, il faudra attendre\u2026 On teste notamment si la valeur courante de <code>millis()<\/code> moins la valeur relev\u00e9e dans topDepart, soit le temps \u00e9coul\u00e9 depuis, est sup\u00e9rieure \u00e0 la dur\u00e9e pr\u00e9d\u00e9finie :<br><code>if (millis() - topDepart > duree) { \/\/ action }<\/code><br>Il faut d\u00e0 la fin de la condition, faire un nouveau top depart, donc affecter la nouvelle valeur de <code>millis()<\/code> \u00e0 topDepart : <code>topDepart = millis();<\/code><\/p>\n\n\n\n<p>Voici un exemple pour illustrer ce fonctionnement. Un cercle est dessin\u00e9 \u00e0 un emplacement quelconque. Toutes les secondes, il est redessin\u00e9 \u00e0 un emplacement diff\u00e9rent, toujours al\u00e9atoire.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ On d\u00e9termine un intervalle pr\u00e9alable d'une seconde\nint duree = 1000;\nint topDepart;\n\n\/\/ Position et diametre du cercle\nfloat posX, posY, diametre;\n\nvoid setup() {\n  size(600, 600);\n  \/\/ Initialisation des valeurs pour le dessin du premier cercle\n  diametre = 60;\n  posX = random(width) - diametre\/2;\n  posY = random(height) - diametre\/2;\n  \/\/ D\u00e9clenchement du timer\n  topDepart = millis();\n}\n\nvoid draw() {\n  background(255);\n  \n  \/\/ Test pour savoir si la dur\u00e9e est \u00e9coul\u00e9e\n  if(millis() - topDepart &gt; duree) {\n    \/\/ Calcul d'une nouvelle position pour le prochain cercle\n    posX = random(width) - diametre\/2;\n    posY = random(height) - diametre\/2;\n    \/\/ Reset du timer\n    topDepart = millis();\n  }\n  \n  \/\/ Dessin du cercle\n  noStroke();\n  fill(0);\n  circle(posX, posY, diametre);\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1_ Cr\u00e9er un timer Un timer permet d&rsquo;ex\u00e9cuter une action, ou un ensemble d&rsquo;actions \u00e0 intervalles r\u00e9guliers. G\u00e9n\u00e9ralement, un timer est bas\u00e9 sur le temps. Il est donc envisageable d&rsquo;utiliser la cadence du draw() pour cela, mais la fa\u00e7on la plus pr\u00e9cise reste l&rsquo;utilisation de millis(). La commande millis() rel\u00e8ve le temps \u00e9coul\u00e9 depuis le &hellip; <a href=\"https:\/\/lamartinieredesign.fr\/?page_id=2390\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Astuces processing<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1016,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/2390"}],"collection":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2390"}],"version-history":[{"count":5,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/2390\/revisions"}],"predecessor-version":[{"id":2397,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/2390\/revisions\/2397"}],"up":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/1016"}],"wp:attachment":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}