Pārlūkot izejas kodu

✨ Add AudioPlayer game object

Pedro Schneider 3 gadi atpakaļ
vecāks
revīzija
916a873ffe
3 mainītis faili ar 59 papildinājumiem un 6 dzēšanām
  1. 1 0
      index.html
  2. 37 0
      pandora/game_objects/AudioPlayer.js
  3. 21 6
      src/sketch.js

+ 1 - 0
index.html

@@ -25,6 +25,7 @@
     
     <!-- Game Objects -->
     <script type="text/javascript" src="pandora/game_objects/GameObject.js"></script>
+    <script type="text/javascript" src="pandora/game_objects/AudioPlayer.js"></script>
     
       <!-- 2D Game Objects -->
       <script type="text/javascript" src="pandora/game_objects/2d_objects/Object2D.js"></script>

+ 37 - 0
pandora/game_objects/AudioPlayer.js

@@ -0,0 +1,37 @@
+class AudioPlayer extends GameObject
+{
+    constructor(name, p5Audio = null)
+    {
+        super(name);
+
+        this.p5Audio = p5Audio;
+    }
+
+    setP5Audio(p5Audio)
+    {
+        if (this.p5Audio) this.p5Audio.stop();
+        this.p5Audio = p5Audio;
+    }
+
+    getP5Audio()
+    {
+        return this.p5Audio;
+    }
+
+    play()
+    {
+        if (this.p5Audio) this.p5Audio.play();
+    }
+
+    stop()
+    {
+        if (this.p5Audio) this.p5Audio.stop();
+    }
+
+    // TODO: This don't worky, make it worky
+    // Something to do with new browser audio policy
+    autoplay()
+    {
+        if (this.p5Audio) this.p5Audio.autoplay(true);
+    }
+}

+ 21 - 6
src/sketch.js

@@ -1,11 +1,26 @@
 let test, test2;
 let monke;
 
-class TestObject extends Object2D
+class TestAudio extends AudioPlayer
+{
+
+}
+
+class TestButton extends Button
 {
     _setup()
     {
-        console.log(this.name);
+        this.setPosition(100, 100);
+    }
+
+    _onMousePressed()
+    {
+        this.getParent().play();
+    }
+
+    _onMouseReleased()
+    {
+        this.getParent().stop();
     }
 }
 
@@ -14,6 +29,7 @@ function preload()
     AssetHandler.loadTexture("monke", "/assets/textures/monke.png");
     AssetHandler.loadFont("Lato", "/assets/fonts/Lato-Regular.ttf");
     AssetHandler.loadAudio("bonk", "/assets/audio/thonk.wav");
+    AssetHandler.loadAudio("music", "/assets/audio/music.ogg");
 }
 
 function setup()
@@ -23,11 +39,10 @@ function setup()
     GameHandler.init();
     textFont(AssetHandler.getP5FontByName("Lato"));
 
-    test = new TestObject("myTest");
-    test.addChild(new TestObject("myTest2"));
+    test = new TestAudio("myTestAudio", AssetHandler.getP5AudioByName("music"));
+    test.autoplay();
+    test.addChild(new TestButton("myTestButton", "play audio"));
     GameHandler.addRootObject(test);
-    test.addChild(new TestObject("myTest3"))
-
 }
 
 function draw()