[JS] Przesuwanie obrazu

0

Witam!
Piszę grę w JS, AJAX i PHP. Bazuje ona na obrazkach - każdy gracz jest osobnym obrazkiem i na to jeszcze nakłada się mapa. Moim problemem jest to, iż nie mogę za chiny zrobić funkcji przesuwającej obraz, która płynnie zmieniałaby jego style.top i style.left, aż do określonego miejsca. Po prostu zablokowałem się na tym i nie mogę napisać działającej funkcji. Wszystko chcę wykonać rekurencyjnie. Mógłby ktoś podrzucić jakiś kawałek kodu?

0

a google maps to nie wystarczający "kawałek kodu" ?

0

Nie rozumiem bo nigdy tego nie używałem...
Jakby ktoś nie kumał to ja chcę zwykłe IMG przesunąć.

0

no w google maps też masz zwykłe img, a właściwie cały świat podzielony na małe obrazki i wczytują się one dodatkowo w miarę potrzeby tak żeby nie trzeba było wszystkiego ściągać
jak byś chciał w swojej grze zrobić dużą mapę to też byś musiał coś takiego zrobić

no to skoro po prostu chcesz przesunąć pojedynczy obrazek to powiedz w czym dokładnie masz problem ? bo nie za bardzo rozumiem co w tym jest trudnego
pokaż swój kod i powiedz jak działa a jak powinien działać

i w ogóle co ma do tego rekurencja ? gdzie ty chcesz tu rekurencji użyć bo tego też nie za bardzo jarzę :O

0

Chcę płynnie przesunąć jeden obrazek z miejsca XY do miejsca AB. Problem w tym że żadna moja próba nie przynosi pożądanych skutków. Używam tego:

function moveObjectTop(obj, actualPos, maxPos) {
	if (maxPos > actualPos) {
	actualPos = actualPos+1;
	document.getElementById(obj).style.top = actualPos + 'px';
	}
	if (maxPos < actualPos) {
	actualPos = actualPos-1;
	document.getElementById(obj).style.top = actualPos + 'px';
	}
	if (maxPos == actualPos) {
	return true;
	}
setTimeout('moveObjectTop("' + obj + '", "' + actualPos + '", "' + maxPos + '")', 50);
}

I wywołuję tak:

moveObjectTop('char_self', "0", "12");

Wg. tego co pokazuje mi blackbird to on zamiast dodawać jedynki (1+1=2) to je dokleja (1+1=11). Co robię źle? Bo gdzieś coś chyba źle z tymi plusami.

Dodano
Już mam! Wystarczyło dodać po nagłówku:

actualPos = parseFloat(actualPos);

Po tylu godzinach roboty już na prawdę najprostsze rzeczy pomijam :P

0

function moveObjectTop(obj, actualPos, maxPos) {
if (maxPos > actualPos) {
actualPos = actualPos+1;
document.getElementById(obj).style.top = actualPos + 'px';
}
if (maxPos < actualPos) {
actualPos = actualPos-1;
document.getElementById(obj).style.top = actualPos + 'px';
}
if (maxPos == actualPos) {
return true;
}
setTimeout('moveObjectTop("' + obj + '", "' + actualPos + '", "' + maxPos + '")', 50);
}

Rozumiem, że używasz dalej tej funkcji w pętli. Jeśli tak, to można zrobić pewne udoskonalenia (zamiast id, podawać cały obiekt - wtedy niepotrzebne jest wielokrotne document.getElementById().

1 użytkowników online, w tym zalogowanych: 0, gości: 1