• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaScript - Poruszanie plikiem SVG za pomocą klawiatury.

Hosting forpsi easy 1 pln
0 głosów
159 wizyt
pytanie zadane 17 maja 2020 w JavaScript przez Bakkit Dyskutant (7,600 p.)

Witam mam kod na poruszanie się postaci, wygląda następująco:

const player = document.querySelector('.player');

    //Sprawdzanie rotacji postaci
    var rotation = 0;

    //Ruchliwosc postaci
    var distance = 30;
    var distance2 = 20;

    //Ładowanie strzału
    var shotLoading = 0;

const move = (e) => {

    switch(e.keyCode) {

        case 65: //Strzałka w lewo
            if (rotation == -90) {
                player.style.left = player.offsetLeft - distance +'px';
                break;
            } else {
                player.style.transform = "rotate(-90deg)";
                rotation = -90;
                break;
                }

        case 68: //Strzałka w prawo
            if (rotation == 90) {
                player.style.left = player.offsetLeft + distance2 +'px';
                break;
            } else {
                player.style.transform = "rotate(90deg)";
                rotation = 90;
                break;
                }

        case 87: //Strzałka w górę
            if (rotation == 0) {
                player.style.top = player.offsetTop - distance +'px';
                break;
            } else {
                player.style.transform = "rotate(0deg)";
                rotation = 0;
                break;
                }

        case 83:  //Strzałka w dół
            if (rotation == 180) {
                player.style.top = player.offsetTop + distance2 +'px';
                break;
            } else {
                player.style.transform = "rotate(180deg)";
                rotation = 180;
                break;
                }

        case 32:  //Spacja
            if (shotLoading == 0) {
                shotLoading = 10;
                break;
            } else {
                alert('noShot');
                break;
                }
    }
}
window.addEventListener("keydown", move);

Cały kod działa poprawnie, gdy obiekt klasy "player" jest wczytywany za pomocą: <img class="player" src="img/tank.svg"> .

Natomiast, gdy chcę animować poszczególną sekcje obrazka svg (Dodaję cały kod svg do pliku html i nadaję mu klasę "player") wykonuje się tylko rotate, a przesuwanie się obiektu nie działa.

 

Proszę o pomoc.

komentarz 17 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

Czy w konsoli są jakieś błędy? Sprawdź jakie wartości mają propertisy odpowiedzialne za przesuwanie (player.style.top itd.) - może nie są prawidłowo konkatenowane przy obsłudze eventu.

komentarz 17 maja 2020 przez Bakkit Dyskutant (7,600 p.)
Konsola nie wyrzuca błędów.

Domyślnie top i left mam ustawione na 50% ale gdy plik svg jest wczytywany poprzez <img> porusza się poprawnie.

Przy próbie poruszania się top i left nie zmieniają swoich wartości w pliku css.
komentarz 17 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

Przy próbie poruszania się top i left nie zmieniają swoich wartości w pliku css.

Modyfikacji styli obiektu player dokonujesz w formie inline, a takie style nie są widoczne w arkuszu CSS, a na poszczególnych elementach HTML. Jeśli chcesz zobaczyć czy zmienia się styl inline obiektu, to sprawdź przez inspektor elementów (prawym przycisk na element na stronie i "zbadaj element"). Możesz też wypisać w konsoli poszczególne style po ich modyfikacji.

komentarz 17 maja 2020 przez Bakkit Dyskutant (7,600 p.)
No to i tak właściwości się nie zmieniają.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 2,604 wizyt
pytanie zadane 14 grudnia 2015 w HTML i CSS przez artimal Gaduła (4,800 p.)
0 głosów
2 odpowiedzi 4,667 wizyt
0 głosów
0 odpowiedzi 401 wizyt

92,125 zapytań

140,785 odpowiedzi

317,805 komentarzy

61,446 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 1468p. - Łukasz Eckert
  2. 1444p. - Dawid128
  3. 1430p. - CC PL
  4. 1419p. - rafalszastok
  5. 1418p. - Marcin Putra
  6. 1373p. - Mikbac
  7. 1362p. - rucin93
  8. 1351p. - sefirek
  9. 1325p. - Michal Drewniak
  10. 1296p. - Adrian Wieprzkowicz
  11. 1267p. - Eryk Andrzejewski
  12. 1260p. - TheLukaszNs
  13. 1239p. - JarekDev
  14. 1188p. - Rafał Trójniak
  15. 1179p. - 13NOONE37
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...