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

Interaktywne opowiadanie JavaScript

Object Storage Arubacloud
+1 głos
185 wizyt
pytanie zadane 12 marca 2019 w JavaScript przez PROFF Obywatel (1,180 p.)

Witam. Rzuciłem się na głęboką wodę, czy to dobrze czy źle, chciałbym jednak doprowadzić swój projekt do końca.

Zamysł jest taki, że na ekranie wyświetla się tekst, mam do wyboru 3 przyciski, każdy to inna opcja. Jeśli wybiorę "idę w lewo" historyjka toczy się dalej, a 3 buttony zmieniają swoje opcje. Swoje opcje, mam na myśli instancje biblioteki typed.js. Czyli przykładowo: "Idę ulicą, widzę to i to... Co robię? " i mam trzy guziki : idę w lewo, przed siebie i w prawo. Po kliknięciu wyświetla się tekst zdefiniowany wcześniej w instancji którą kliknąłem, "na mojej drodze pojawia się to i to, co robię?" i znów 3 opcje każdy button zawiera instancję wywołującą inny tekst.

Pokażę teraz obecny kod, zamieszczony obecnie na stronie ( STRONA )

<html>
    <head>
        <meta charset="utf-8">
        <title>Interactive</title>
        <meta author="Damian Pasternak">
        <link rel="stylesheet" href="main_int.css">
        <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
        
        <script src="https://unpkg.com/scrollreveal"></script>

    </head>
    <body>
        
        
        <div id="tekst-block">
            <p class="tekst">
             
            </p>
            <div id="opcje-row">
              
            <input type="button" id="btn1" class="btn" value="Idę w lewo">
            <input type="button" id="btn2" class="btn" value="Idę prosto">
            <input type="button" id="btn3" class="btn" value="Idę w prawo"> 
        
        </div>
        </div>






        
        <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
        <script src="typed.min.js"></script>
        
        <script src="script_int.js"></script>
        

    </body>
</html>
body{
    background-color:rgba(46, 49, 49, 1);
    letter-spacing:1px;
    font-family: 'Roboto Mono', monospace;
    color:rgb(255, 255, 255);
}

#tekst-block{
    position:relative;
    left:220px;
    top:220px;
    width:40%;
    height:35%;
    border:1px solid rgba(255, 255, 255, 0.651);
     
}

#opcje-row{
    height:12%;
   
    background-color: rgba(95, 95, 95, 0.534);

    background: transparent;
    width:100%;
    position:absolute;
    top:105%;
}


.tekst{
    font-size:14px;
    padding:20px;
     
    width:75%;
}

.btn{
        width:25%;
        display:inline-block;
       
       
      background-color: transparent;
  color:rgba(255, 255, 255, 0.884);
  border:none;
  cursor:pointer;
  height:100%;
  font-family: 'Roboto Mono', monospace;
  font-size:11px;;
  letter-spacing:2px;

  outline: none;
}

.btn:first-child{
    margin-left:10%;
}

.btn:hover{
 
    font-size:12px;
    color:white;
}

var typed = new Typed('.tekst', {
    strings: ["", "Lorem Ipsum jest tekstem stosowanym jako przykładowy wypełniacz w przemyśle poligraficznym."],
    typeSpeed: 0.1
   
  });



  const button = document.querySelector('#btn1','#btn2','#btn3');
  button.addEventListener('click', test);

   
  let value = 1;
   
  function test() {

    if(value === 1) {
      console.log('action for 1')
      value = 2
      var typed = new Typed('.tekst', {
        strings: ["", " tekst po kliknieciu raz "],
        typeSpeed: 30
       
      });
      document.getElementById('btn1').value = 'Idę w lewo'+value;

    } else if(value ===2) {
      console.log('action for 2')
      value = 3;
      var typed = new Typed('.tekst', {
        strings: ["", " tekst po kliknieciu drugi raz "],
        typeSpeed: 30
       
      });
      document.getElementById('btn1').value = 'Idę w lewo'+value;
    }

    else if(value ===3) {
      console.log('action for 3')
      value = 4;
      var typed = new Typed('.tekst', {
        strings: ["", " tekst po kliknieciu trzeci raz "],
        typeSpeed: 30
       
      });
      document.getElementById('btn1').value = 'Idę w lewo'+value;
  }

  }


  //////////////////////////////scroll reveal//////////////////////
  window.sr = ScrollReveal();
  
  sr.reveal('.btn', {
      reset: true,
      delay: 1000,
      duration: 1500,
      interval: 700 
  });
      ////////////////////////////////////////////////////////////////

 

 

Biblioteki Typed już nie będę załączał, ma się zmieniać tylko tekst z instancji.

Nie mam jeszcze zbyt obszernej wiedzy, dlatego zwracam się z prośbą o pomoc. Zastanawiałem się nad wieloma ifami, jednak może jest jakieś inne, lepsze rozwiązanie.

2 odpowiedzi

0 głosów
odpowiedź 25 marca 2019 przez PROFF Obywatel (1,180 p.)
Odświeżam
0 głosów
odpowiedź 8 kwietnia 2019 przez Lukasxxz Nowicjusz (140 p.)
edycja 9 kwietnia 2019 przez Lukasxxz
A może spróbuj coś w ten deseń(JQuery):

$('.btn').on('click', function(){test(this) });

function test($this) {
 var p =$($this);
 value= p.data("value");

}

Buttony powinny mieć parametr data-value kolejno 1,2,3. Za każdym razem będziesz miał zidentyfikowane który button został wciśnięty.  Trzeba pewnie będzie zrobić tablicę z tekstami i pobierać odpowiedni indeks. Tylko nie wiem jak dobierać odpowiedni indeks dla kolejnych etapów gry. Może trzeba by rozpisać tą historyjkę i pod nią na sztywno napisać kod?

If(value==1){

var typed = new Typed('.tekst', {

        strings: ["", tab[index]],  

        typeSpeed: 30});

}else{

If(value==2{

//Wyświetl odpowiedni tekst

}else{

//Tekst dla trzeciego buttona

}

}

Podobne pytania

+1 głos
1 odpowiedź 262 wizyt
pytanie zadane 27 lipca 2020 w JavaScript przez Pauula Początkujący (290 p.)
0 głosów
2 odpowiedzi 195 wizyt
pytanie zadane 21 marca 2019 w JavaScript przez Kacperhehe Bywalec (2,930 p.)
0 głosów
1 odpowiedź 262 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...