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?
a google maps to nie wystarczający "kawałek kodu" ?
Nie rozumiem bo nigdy tego nie używałem...
Jakby ktoś nie kumał to ja chcę zwykłe IMG przesunąć.
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
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
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().