» Poradna » Programy

Pomoc s javascriptem - renderování

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 5/5
 |   |  Microsoft Windows 7 Chrome 45.0.2454.85  |  [85.70.41.---]

Zdravím, vytvářím si takovou malou skákačku, a hned jsem se u toho zasekl :/ Když chci "vyrenderovat" obraz s skákající kuličkou, tak místo toho aby pomalu skákala se objeví okamžitě nahoře, hrozně mě to vytáčí, snažím se to spravit už 30 minut a pořád mě nic nenapadlo. Vlastní pausa, setInterval(vykresli,10) ani obojí dohromady. Předem dík za odpovědi.Tady je můj kod:<script type="text/javascript">var canvas = document.getElementById("platno");var kontext = canvas.getContext("2d");w = canvas.width;h = canvas.height; y=249;x= 30 ;g=-5//y= (250-30)/2;function pause(millis) {var date = new Date();var curDate = null;do { curDate = new Date(); } while(curDate-date < millis);} function kruh(x,y,r) { kontext.beginPath(); kontext.arc(x,y,r, 60, Math.PI*2, true); kontext.closePath(); kontext.fill();}function prekresli() { kontext.clearRect(0,0,w,h); kontext.fillStyle = "black"; kontext.strokeRect(0,0,800,300); kruh(x,y,30); kontext.fillRect(0,250,w,250); }var kliknuti = function () {//Co se děje při kliknutísetInterval(prekresli,10);for (y=250;y>30;y--){pause(10);}}setInterval(prekresli,10) $("#platno").click(kliknuti); </script>

Odpovědi na otázku

 |   |  Microsoft Windows 7 Chrome 45.0.2454.85  |  [85.70.41.---]

Kde jsou ty doby kde odepisoval každý..

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.85

A proč by měla měnit polohu? Nikdy nevidím, že bys měnil její souřadnice.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 40.0

for (y=250;y>30;y--){ // tady ne? y--

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 40.0

nemělo by tam být v tom prekresleni() ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Chrome 44.0.2403.157  |  [94.228.83.---]

je to lahke a navyse ti to nezablokuje kod, zaver prepis takto (problem je inak v samotnom for..):function prekresli() {kontext.clearRect(0,0,w,h);kontext.fillStyle = "black";kontext.strokeRect(0,0,800,300);kruh(x,y,30);kontext.fillRect(0,250,w,250);document.getElementById("stat").innerHTML = "whatever "+y;}function nextFrame() { if(y > n) { prekresli(); y--; // Continue the loop in 0.5s setTimeout(nextFrame, 500); }}var kliknuti = function () {//Co se děje při kliknutísetTimeout(nextFrame, 0);}prekresli(); // init$("#platno").click(kliknuti);</script>

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Kontext, Canvas



Určitě si přečtěte