• 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.

Object Storage Arubacloud
0 głosów
181 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,759 wizyt
pytanie zadane 14 grudnia 2015 w HTML i CSS przez artimal Gaduła (4,800 p.)
0 głosów
2 odpowiedzi 4,877 wizyt
0 głosów
0 odpowiedzi 411 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...