Autor | Zpráva | ||
---|---|---|---|
Fortune Rayzor Profil |
#1 · Zasláno: 20. 12. 2009, 17:51:56 · Upravil/a: Fortune Rayzor
Zdravím všechny...
Mám tu tak trochu potíž s Javascriptem (částečně taky proto, že nejsem přes JS odborník). Byl jsem schopen udělat základní algorytmus pro takové pseudo-kinetické scrollování divu, ale narazil jsem na několik bugů. 1. Na hranicích .scrollTop se to chová trochu zvláštně. Např. když je scrollTop == 0, pustí se levé tlačítko, div se chytne myší o něco výš a pohne, tak je najednou scrollTop > 0. 2. Scroll nahoru má jiný průběh než scroll dolů. (Nemám ponětí proč) --prý je tam ještě nějaký jiný bug, ale toho jsem si nevšiml-- Kód: var pohybujeme = false; var rozdil = 0; var tempX = 0; var tempY = 0; var rychlost; var rychlosti_y = [0,0,0]; var temp; Array.prototype.count = function () { return this.length; } function OnDown() { pohybujeme = true; rychlost = 0; rychlost_y = [0,0,0]; } function OnUp() { pohybujeme = false; Pohybuj() } function Pohybuj() { document.getElementById("content").scrollTop += rychlost; rychlost /= 1.05; document.Form.RychlostY.value = document.getElementById("content").scrollTop; if(Math.abs(rychlost) > 0.01 && pohybujeme == false) window.setTimeout("Pohybuj()", 20); } function OnMove(e) { if(pohybujeme == true) { if(window.event) e = window.event; if (e.pageY) { rozdil = tempY - e.pageY; tempY = e.pageY; for(var a = 0; a < rychlosti_y.count(); a++) { if(rychlosti_y[a + 1]) rychlosti_y[a] = rychlosti_y[a + 1]; else rychlosti_y[a] = rozdil; } temp = 0; for(var b = 0; b < rychlosti_y.count(); b++) { temp += rychlosti_y[b]; } rychlost = temp / rychlosti_y.count(); } else if (e.clientY) { rozdil = tempY - e.clientY + document.body.scrollTop + document.documentElement.scrollTop; tempY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; for(var c = 0; c < rychlosti_y.count(); c++) { if(rychlosti_y[c + 1]) rychlosti_y[c] = rychlosti_y[c + 1]; else rychlosti_y[c] = rozdil; } temp = 0; for(var d = 0; d < rychlosti_y.count(); d++) { temp += rychlosti_y[d]; } rychlost = temp / rychlosti_y.count(); } document.getElementById("content").scrollTop += rozdil; document.Form.RychlostY.value = document.getElementById("content").scrollTop; } } Beta na: http://fortunerayzor.wz.cz Omluvte hrozné pojmenování proměnných (dochází fantazie) a taky ošklivě napsaného kódu. :-) Je to částečně přepsaný kód z C# (aspoň jsem se snažil přiblížit), který jsem napsal a funguje docela hezky. Já si s tímhle už bohužel nevím rady, přitom to bude asi banální věc. Prosím Vás o radu. Díky moc. |
||
Fortune Rayzor Profil |
#2 · Zasláno: 21. 12. 2009, 01:06:36
Tak jsem to nakonec vyřešil sám.
|
||
Časová prodleva: 14 let
|
0