OSDN Git Service

[changed] minor fixes to cuboc/super jumper. seems like keyboard events don't get...
authorbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Wed, 14 Mar 2012 10:35:52 +0000 (10:35 +0000)
committerbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Wed, 14 Mar 2012 10:35:52 +0000 (10:35 +0000)
demos/cuboc/cuboc/src/com/badlogic/cubocy/Map.java
demos/cuboc/cuboc/src/com/badlogic/cubocy/MapRenderer.java
demos/superjumper/superjumper-html/war/Voices.as [new file with mode: 0644]
demos/superjumper/superjumper-html/war/superjumper.html
demos/superjumper/superjumper/src/com/badlogicgames/superjumper/HelpScreen5.java

index 74e5f44..d16217c 100644 (file)
@@ -2,7 +2,6 @@
 package com.badlogic.cubocy;\r
 \r
 import com.badlogic.gdx.Gdx;\r
-import com.badlogic.gdx.Application.ApplicationType;\r
 import com.badlogic.gdx.graphics.Pixmap;\r
 import com.badlogic.gdx.utils.Array;\r
 \r
@@ -38,7 +37,7 @@ public class Map {
                        for (int x = 0; x < 150; x++) {                         \r
                                int pix = (pixmap.getPixel(x, y) >>> 8) & 0xffffff;\r
                                Gdx.app.log("Map", x + ", " + y + ", " + Integer.toHexString(pix));\r
-                               if (pix == START) {\r
+                               if (match(pix, START)) {\r
                                        Dispenser dispenser = new Dispenser(x, pixmap.getHeight() - 1 - y);\r
                                        dispensers.add(dispenser);\r
                                        activeDispenser = dispenser;\r
@@ -46,17 +45,17 @@ public class Map {
                                        bob.state = Bob.SPAWN;\r
                                        cube = new Cube(this, activeDispenser.bounds.x, activeDispenser.bounds.y);\r
                                        cube.state = Cube.DEAD;\r
-                               } else if (pix == DISPENSER) {\r
+                               } else if (match(pix, DISPENSER)) {\r
                                        Dispenser dispenser = new Dispenser(x, pixmap.getHeight() - 1 - y);\r
                                        dispensers.add(dispenser);\r
-                               } else if (pix == ROCKET) {\r
+                               } else if (match(pix, ROCKET)) {\r
                                        Rocket rocket = new Rocket(this, x, pixmap.getHeight() - 1 - y);\r
                                        rockets.add(rocket);\r
-                               } else if (pix == MOVING_SPIKES) {\r
+                               } else if (match(pix, MOVING_SPIKES)) {\r
                                        movingSpikes.add(new MovingSpikes(this, x, pixmap.getHeight() - 1 - y));\r
-                               } else if (pix == LASER) {\r
+                               } else if (match(pix, LASER)) {\r
                                        lasers.add(new Laser(this, x, pixmap.getHeight() - 1 - y));\r
-                               } else if (pix == END) {\r
+                               } else if (match(pix, END)) {\r
                                        endDoor = new EndDoor(x, pixmap.getHeight() - 1 - y);\r
                                } else {\r
                                        tiles[x][y] = pix;\r
@@ -72,6 +71,10 @@ public class Map {
                }\r
        }\r
        \r
+       boolean match(int src, int dst) {\r
+               return src == dst;\r
+       }\r
+       \r
        public void update (float deltaTime) {\r
                bob.update(deltaTime);\r
                if (bob.state == Bob.DEAD) bob = new Bob(this, activeDispenser.bounds.x, activeDispenser.bounds.y);\r
index f981737..5a2f23d 100644 (file)
@@ -67,8 +67,8 @@ public class MapRenderer {
                                                if (y > height) continue;\r
                                                int posX = x;\r
                                                int posY = height - y - 1;\r
-                                               if (map.tiles[x][y] == Map.TILE) cache.add(tile, posX, posY, 1, 1);\r
-                                               if (map.tiles[x][y] == Map.SPIKES) cache.add(spikes, posX, posY, 1, 1);\r
+                                               if (map.match(map.tiles[x][y], Map.TILE)) cache.add(tile, posX, posY, 1, 1);\r
+                                               if (map.match(map.tiles[x][y], Map.SPIKES)) cache.add(spikes, posX, posY, 1, 1);\r
                                        }\r
                                }\r
                                blocks[blockX][blockY] = cache.endCache();\r
diff --git a/demos/superjumper/superjumper-html/war/Voices.as b/demos/superjumper/superjumper-html/war/Voices.as
new file mode 100644 (file)
index 0000000..22a2ba1
--- /dev/null
@@ -0,0 +1,193 @@
+/*\r
+ * Copyright 2011 Fred Sauer\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
+ * use this file except in compliance with the License. You may obtain a copy of\r
+ * the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+ * License for the specific language governing permissions and limitations under\r
+ * the License.\r
+ */\r
\r
+ // See http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/media/Sound.html\r
+\r
+ package {\r
+  import flash.external.ExternalInterface;\r
+  import flash.media.Sound;\r
+  import flash.display.Sprite;\r
+  import flash.events.Event;\r
+  import flash.events.IOErrorEvent;\r
+  import flash.media.SoundChannel;\r
+  import flash.media.SoundLoaderContext;\r
+  import flash.net.URLRequest;\r
+  import flash.media.SoundTransform;\r
+  \r
+  public class Voices extends Sprite\r
+  {\r
+    private var sounds:Array = [];\r
+    private var volume:Array = [];\r
+    private var panning:Array = [];\r
+    private var channel:Array = [];\r
+    private var loop:Array = [];\r
+    private var domId:String;\r
+    \r
+    public function Voices() {\r
+      ExternalInterface.marshallExceptions = true;\r
+      \r
+      domId = this.root.loaderInfo.parameters.id;\r
+      log("***************************************************************************************************");\r
+      log("Creating Voices '" + domId + "' ...");\r
+      \r
+      log("ExternalInterface.available = " + ExternalInterface.available);\r
+      log("ExternalInterface.objectID = " + ExternalInterface.objectID);\r
+      \r
+      var result:Object;\r
+      \r
+      ExternalInterface.addCallback("createSound", createSound);\r
+      log("addCallback(createSound) -> done");\r
+      \r
+      ExternalInterface.addCallback("playSound", playSound);\r
+      log("addCallback(playSound) -> done");\r
+      \r
+      ExternalInterface.addCallback("stopSound", stopSound);\r
+      log("addCallback(stopSound) -> done");\r
+      \r
+      ExternalInterface.addCallback("setLooping", setLooping);\r
+      log("addCallback(setLooping) -> done");\r
+  \r
+      ExternalInterface.addCallback("setVolume", setVolume);\r
+      log("addCallback(setVolume) -> done");\r
+  \r
+      ExternalInterface.addCallback("setPanning", setPanning);\r
+      log("addCallback(setPanning) -> done");\r
+  \r
+      log("Voices created.");\r
+  \r
+      // notify JavaScript that we are ready\r
+      result = ExternalInterface.call("document.VoicesMovie['" + domId + "'].ready");\r
+      log("document.VoicesMovie['" + domId + "'].ready() -> " + result);\r
+    }\r
+\r
+    private function createSound(id:Number, url:String, checkPolicyFile:Boolean):void {\r
+      var func:String = "createSound(id=" + id + ", url='" + url + "')";\r
+      logStart(func);\r
+\r
+      // default to false\r
+      loop[id] = 0;\r
+\r
+      var bufferTime:Number = 1000; // default\r
+      var context:SoundLoaderContext = new SoundLoaderContext(bufferTime, checkPolicyFile);\r
+\r
+      sounds[id] = new Sound();\r
+      volume[id] = 1;\r
+      panning[id] = 0;\r
+      sounds[id].addEventListener(Event.COMPLETE, function(event:Event):void {\r
+        var func:String = "Event.COMPLETE (=Sound Loaded) id=" + id;\r
+        logStart(func);\r
+        try {\r
+          var result:Object = ExternalInterface.call("document.VoicesMovie['" + domId + "'].soundLoaded", id);\r
+        } catch(e:Error) {\r
+          logError(func, e);\r
+        }\r
+        log("document.VoicesMovie['" + domId + "'].soundLoaded(" + id + ") -> " + result + " // " + typeof result);\r
+        logEnd(func);\r
+      });\r
+      // TODO handle IO_ERROR\r
+//      sounds[id].addEventListener(IOErrorEvent.IO_ERROR, function(event:Event):void {\r
+//        log("IOErrorEvent.IO_ERROR id=" + id);\r
+//        var result:Object = ExternalInterface.call("document.VoicesMovie['" + domId + "'].soundLoaded", id);\r
+//        log("document.VoicesMovie['" + domId + "'].soundLoaded(" + id + ") -> " + result);\r
+//      });\r
+      sounds[id].load(new URLRequest(url), context);\r
+      logEnd(func);\r
+    }\r
+    \r
+    private function playSound(id:Number):Boolean {\r
+      var func:String = "playSound(id=" + id + ")";\r
+      logStart(func);\r
+      var success:Boolean;\r
+      \r
+      if (channel[id] != null) {\r
+        channel[id].stop();\r
+      }\r
+      var transform:SoundTransform = new SoundTransform(volume[id], panning[id]);\r
+      /*\r
+       * Sound#play() returns null if there is no sound card, or if the maximum number of sound channels (32) has been reached.\r
+       * See http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html#play()\r
+       */\r
+      channel[id] = sounds[id].play(0, loop[id], transform);\r
+      if (channel[id] == null) {\r
+        log("No (more) channel(s) available to play sound id " + id);\r
+        success = false;\r
+      } else {\r
+        channel[id].addEventListener(Event.SOUND_COMPLETE, function(event:Event):void {\r
+          var func:String = "Event.SOUND_COMPLETE (=Playback Completed) id=" + id;\r
+          logStart(func);\r
+          var method:String = "document.VoicesMovie['" + domId + "'].playbackCompleted";\r
+          try {\r
+            var result:Object = ExternalInterface.call(method, id);\r
+            logResult(method, result);\r
+          } catch(e:Error) {\r
+            logError(method, e)\r
+          }\r
+        });\r
+        success = true;\r
+      }\r
+      logEnd(func);\r
+      return success;\r
+    }\r
+    \r
+    private function stopSound(id:Number):void {\r
+      var func:String = "stopSound(id=" + id + ")";\r
+      logStart(func);\r
+      channel[id].stop();\r
+      logEnd(func);\r
+    }\r
+\r
+    private function setLooping(id:Number, loopCount:Number):void {\r
+      var func:String = "setLooping(id=" + id + ", loopCount=" + loopCount + ")";\r
+      logStart(func);\r
+      loop[id] = loopCount;\r
+      logEnd(func);\r
+    }\r
+    \r
+    private function setVolume(id:Number, volume:Number):void {\r
+      var func:String = "setVolume(id=" + id + ", volume=" + volume + "%)";\r
+      logStart(func);\r
+      this.volume[id] = volume;\r
+      logEnd(func);\r
+    }\r
+    \r
+    private function setPanning(id:Number, panning:Number):void {\r
+      var func:String = "setPanning(id=" + id + ", panning=" + panning + ")";\r
+      logStart(func);\r
+      this.panning[id] = panning;\r
+      logEnd(func);\r
+    }\r
+\r
+    private function logStart(func:String):void {\r
+      log(">> " + func);\r
+    }\r
+\r
+    private function logEnd(func:String):void {\r
+      log("<< " + func);\r
+    }\r
+\r
+    private function logResult(method:String, result:Object):void {\r
+      log(method + " -> " + (typeof result) + ": " + result);\r
+    }\r
+    \r
+    private function logError(func:String, e:Error):void {\r
+      log(func + " -> ERROR(" + e + "): " + e.getStackTrace());\r
+    }\r
+    \r
+    private function log(text:String):void {\r
+      //ExternalInterface.call("document.VoicesMovie['" + this.root.loaderInfo.parameters.id + "'].log", text);\r
+    }\r
+  }\r
+}
\ No newline at end of file
index 16d994b..0963c59 100644 (file)
@@ -4,7 +4,6 @@
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">\r
   </head>\r
   <body>\r
-  <div id="embed-com.badlogicgames.superjumper.SuperJumperGwt"></div>\r
   <script type="text/javascript" language="javascript" src="com.badlogicgames.superjumper.SuperJumperGwt/com.badlogicgames.superjumper.SuperJumperGwt.nocache.js"></script>\r
   </body>\r
 </html>\r
index b348a63..67fbfce 100644 (file)
@@ -82,6 +82,8 @@ public class HelpScreen5 implements Screen {
 \r
        @Override\r
        public void render (float delta) {\r
+               update(delta);\r
+               draw(delta);\r
        }\r
 \r
        @Override\r