【问题标题】:libgdx on ios GdxRuntimeException couldn't load fileios GdxRuntimeException 上的 libgdx 无法加载文件
【发布时间】:2013-05-10 08:49:18
【问题描述】:

我决定将我的应用程序从 Android 转移到 iOS。应用程序使用 libgdx 库。我使用 libgdx 生成 ios 子项目并使用 Xamarin Studio 打开它。所有图像都链接自 my-project-android/assets/data。所有图像都设置了构建操作 > 内容。现在每次从 xamarin studio 运行项目时,我都会得到 GdxRuntimeException Coldn't load file: data/background.png。这个文件是我在我的应用程序中加载的第一个图像。

我在 Mac 上使用模拟器和 iPhone 设备完成的所有操作。

堆栈跟踪:

    com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: /data/background.png ---> System.Exception: unknown protocol: file
at java.net.URL..ctor (java.net.URL context, System.String spec, java.net.URLStreamHandler handler) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at com.badlogic.gdx.graphics.Pixmap..ctor (com.badlogic.gdx.files.FileHandle file) [0x0004c] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src/com/badlogic/gdx/graphics/Pixmap.java:140
at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare () [0x00052] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src/com/badlogic/gdx/graphics/glutils/FileTextureData.java:64
at com.badlogic.gdx.graphics.Texture.load (TextureData data) [0x00036] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src/com/badlogic/gdx/graphics/Texture.java:175
at com.badlogic.gdx.graphics.Texture.create (TextureData data) [0x0000d] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src/com/badlogic/gdx/graphics/Texture.java:159
at com.badlogic.gdx.graphics.Texture..ctor (com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Format format, Boolean useMipMaps) [0x00060] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src/com/badlogic/gdx/graphics/Texture.java:133
at com.badlogic.gdx.graphics.Texture..ctor (com.badlogic.gdx.files.FileHandle file) [0x00001] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src/com/badlogic/gdx/graphics/Texture.java:122
at com.kaproel.trafficControlManager.MainMenuScreen..ctor (com.kaproel.trafficControlManager.trafficControl game) [0x00088] in /Users/Piotr/Developer/mono-iOS/trafficControl/src/com/kaproel/trafficControlManager/MainMenuScreen.java:64
at com.kaproel.trafficControlManager.trafficControl.create () [0x00024] in /Users/Piotr/Developer/mono-iOS/trafficControl/src/com/kaproel/trafficControlManager/trafficControl.java:32
at com.badlogic.gdx.backends.ios.IOSGraphics.OnLoad (System.EventArgs arg0) [0x00010] in /Users/badlogic/jenkins/workspace/libgdx-mac/backends/gdx-backend-iosmonotouch/src/com/badlogic/gdx/backends/ios/IOSGraphics.java:133
at OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunWithFrameInterval (Int32 frameInterval) [0x00041] in /Developer/MonoTouch/Source/monotouch/src/OpenGLES/OpenTK_1.0/Platform/iPhoneOS/iPhoneOSGameView.cs:694
at OpenTK.Platform.iPhoneOS.iPhoneOSGameView.Run () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/OpenGLES/OpenTK_1.0/Platform/iPhoneOS/iPhoneOSGameView.cs:652
at com.badlogic.gdx.backends.ios.IOSApplication.FinishedLaunching (MonoTouch.UIKit.UIApplication uiApp, MonoTouch.Foundation.NSDictionary options) [0x0023e] in /Users/badlogic/jenkins/workspace/libgdx-mac/backends/gdx-backend-iosmonotouch/src/com/badlogic/gdx/backends/ios/IOSApplication.java:166
at at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
at com.kaproel.trafficControlManager.Application.Main (System.String[] args) [0x00000] in /Users/Piotr/Developer/mono-iOS/trafficControl-ios/Main.cs:33

请给我同样的解决方案

代码截图:

  public MainMenuScreen(final trafficControl game) {
    this.game = game;
    this.stage = new Stage(0, 0,true);
    batch = new SpriteBatch();

    this.camera = new OrthographicCamera();
    this.camera.setToOrtho(false, 800, 480);


    texture = new Texture(Gdx.files.local("data/background.png")); // <!-- this line make runtime error

【问题讨论】:

  • 加载“data/background.png”的代码是什么样的?
  • 这看起来相关(虽然不是很有帮助):stackoverflow.com/questions/14660951/…
  • @P.T.我在这个链接之前看到了stackoverflow.com/questions/14660951/… - 但没有任何充分的理由
  • 如果使用 Gdx.files.local("data/").list(); 列出目录会收到什么
  • 此命令返回正确数量的文件,但在调试器中仍然看不到文件。我收到消息未知协议:文件

标签: ios xamarin.ios libgdx ikvm xamarin-studio


【解决方案1】:

这可能是 png 优化的问题。你检查过这个链接吗

http://code.google.com/p/libgdx/wiki/IOSWIP

在此页面中阅读 PNG 优化。可能对你有帮助。

【讨论】:

  • 我也检查了这个网站。优化 PNG 的建议并没有解决我的问题。
  • 只需尝试加载任何 jpg 文件来代替此 png 文件。或加载非 png 格式的任何内容。告诉我该文件是否加载或成功与否???
  • 将 png 更改为 jpg 没有任何变化。我仍然有错误“未知协议:文件”
猜你喜欢
  • 2011-12-08
  • 1970-01-01
  • 2013-05-17
  • 2014-08-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多