Autor Zpráva
Darker
Profil
Mám "herní plán" a v něm jednotky. Když kliknu na jednotku, zobrazí se její dosah a dostřel. Vizte CSS dole.
No problém je v tom, že když mapu posouvám pomocí posuvníků (mapa má overflow, jinak by to bylo velké jak kráva) tak se ta plocha z dosahem nehne z místa. Nicméně když odevřu okno s chatem, tak to skočí kam má. Takže by stačilo překreslovat obraz pokažé, když to člověk posune (optimalizace na rychlost) a nebo už během posouvání (to smrdí lagama).
Link:http://jmareda.tk/hra/
Bohužel, aby jste to viděli, musíte nějakou hru vytvořit. Nemáme tam moc vychytané textovací prostředí.
Vítám i návrh jiného řešení zvýraznění dosahu, než moje absolutně nastavené spany.
#tabMapa td span {
             width:0px;
             height:0px;
             background:transparent;
             z-index:0;
             
             display:none;
}
#tabMapa td.zobrDosah span {
             background:transparent url('../transparentbg.php?alpha=80&R=0&G=7&B=100');
             z-index:0;
             position:absolute;
             float:left;
             width:23px;
             height:23px;
             display:block;
}
#tabMapa td.zobrDostrel span {
             background:transparent url('../transparentbg.php?alpha=80&R=100&G=7&B=0');
             z-index:0;
             position:absolute;
             float:left;
             width:23px;
             height:23px;
             display:block;
             border:1px solid red;
}
joe
Profil
Asi jsem se nedostal na místo, o kterém píšeš. Objevila se mi tam nějaká chyba z PHP.

Nicméně pokud chápu dobře, tak se snažíš posouvat i absolutně pozicované elementy na nějakém poli, pokud hýbeš s posuvníkem. Nejjednodušší bude, když to pole bude mít pevný rozměr a obalíš ho do divu, který bude mít rozměry menší a také overflow: scroll, tím pak budeš hýbat s polem a absolutně pozicované elementy zůstanou tam, kde skutečně mají být.
Darker
Profil
Měly by, ale není tomu tak.
Witiko
Profil
Zkoušel sis namapovat onscroll event a pri scrollování pak změnit pozicování toho elementu na nějakou hodnotu a z5?
joe
Profil
Darker:
Měly by, ale není tomu tak.
Je:

<div style="height: 250px; overflow-y: scroll; position: relative;">
	<div style="width: 300px; height: 300px; background: yellow; position: relative;">
		<div style="position: absolute; left: 5px; top: 5px; width: 30px; height: 30px; background: blue;">
		</div>
	</div>
</div>


Witiko:
Na jednu stranu šetříš JavaScript a bráníš se použitím třeba jQuery (viz ostatní témata), ale na takovouhle triviální věc bys použil překreslování všech elementů závislé na JavaScriptu?!
Darker
Profil
To by fungovalo
Ale není to konzistentní element. Jsou to spany v jednotlivých buňkách. 3lo mi právě o to, že když prohlížeč musí něco vykreslit nově (třeba ten chat) tak to hodí kam to patří. Screenshoty:
Vyberu jednotku
Posunu mapu
Zmáčknu esc...
Tohle funguje. Já se v podstatě ptal po nějakém konvenčním řešení...
Witiko
Profil
joe:
na takovouhle triviální věc bys použil překreslování všech elementů závislé na JavaScriptu?!
Ne, já pouze odpovídám na původní otázku tématu, jak "vynutit překreslení". Navíc odpovídám z mobilu a proto nemám možnost posoudit stav daného dokumentu.

Darker:
OT: Celkem pěkná hra, líbí se mi to, jen ten ajax spam je mírně brutální. O Comet už tu byla řeč. :)
joe
Profil
Darker:
Popravdě, vůbec nechápu na co se ptáš a jak už jsem psal, ukazuje to pořád chybu:

Warning: Cannot modify header information - headers already sent by (output started at /home/users/darker/jmareda.tk/web/hra/inc/lobby.php:107) in /home/users/darker/jmareda.tk/web/hra/inc/lobby.php on line 249

Navíc ani nevím, jak se na mapu, co ukazuješ na screenshotech dostanu. Zdá se mi to celé zmatené.
Witiko
Profil
Darker:
Nebylo by mnohem snažší buď:

1) Mít dvě / víc tabulek pro jednotlivé vrstvy zobrazení (pozadí -> UI -> jednotky)
2) Měnit rovnou styl té podložní tabulky místo pozicování nových políček navrch tabulky?
joe
Profil
A asi bych pro něco takového nepoužíval tabulku.
Witiko
Profil
joe:
Koneckonců může použít i canvas, pokud se na to cítí, to neřešme. ;)
Darker
Profil
Witiko:
Nebylo by mnohem snažší...
To právě nevím, moc jsem se na to necítil...

ajax spam je mírně brutální
To jsem nějak nepochytil. Ale slovo "Comet" už hledám :)
EDIT:Tohle jsem přesně potřeboval už dávno. Nedáš mi link na domovskou stránku?
Witiko
Profil
Darker:
Nemyslím, že je nějaká domovská stránka. Comet není název produktu, ale řešení. :)
Darker
Profil
Witiko:
Tak dokumentaci, jak nato.
Zkoušel jsem hledat "hele kometa", protože v téhle souvislosti jsem to tu viděl (na DJPW) ale nic. A myslím, že to byl tvůj post.
Witiko
Profil
Darker:
Jedná se o standardní HTTP požadavek se specifickým mime type, víc informací najdeš třeba na stránce z wikipedie v kapitole XMLHttpRequest: http://en.wikipedia.org/wiki/Comet_(programming)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: