首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从scala playn读取图像时出错

从scala playn读取图像时出错
EN

Stack Overflow用户
提问于 2013-01-20 06:17:51
回答 2查看 198关注 0票数 1

我研究并研究了PlayN游戏框架,我非常喜欢它。我用Scala编程,实际上不懂Java,但这通常不是问题,因为他们一起工作很好。

我在eclipse中设置了一个基本项目,并导入了所有库和依赖项。我甚至翻译了基本的maven项目代码。这是两个文件:

Zeitgeist.scala

代码语言:javascript
复制
package iris.zeit.core

import playn.core.PlayN._

import playn.core.Game
import playn.core.Image
import playn.core.ImageLayer

class Zeitgeist extends Game {

  override def init (){
    var bgImage: Image = assets().getImage("images/bg.png")
    var bgLayer: ImageLayer = graphics().createImageLayer(bgImage)
    graphics().rootLayer().add(bgLayer)
  }

  override def paint (alpha: Float){
    //painting stuffs
  }

  override def update(delta: Float){

  }

  override def updateRate(): Int = {
    25
  }

}

Main.scala

代码语言:javascript
复制
package iris.zeit.desktop

import playn.core.PlayN
import playn.java.JavaPlatform
import iris.zeit.core.Zeitgeist

object Main {
    def main(args: Array[String]){
        var platform: JavaPlatform = JavaPlatform.register()
        platform.assets().setPathPrefix("resources")
        PlayN.run(new Zeitgeist())
    }
}

最酷的是它能工作!一扇窗户开得很好。唯一的问题是我似乎不能加载图像。在上面的一行中,“assets().getImage(”映像/bg.png“)”弹出

代码语言:javascript
复制
Could not load image: resources/images/bg.png [error=java.io.FileNotFoundException: resources/images/bg.png]

我一直在玩我的资源文件的位置,但没有结果。我甚至和java.io.File一起找到了java.io.File。,我是不是做错什么了?有什么东西我忘了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-20 11:18:24

查看JavaAssetsManage代码r,它看起来像是在加载资源,而不是文件。因此,您应该检查您的图像实际上在类路径中,并位于您提供的路径上("resources/ images /bp.png")。

或者,您可以使用getRemoteImage并传递一个文件URL。当您成功地使用了java.io.File时,您只需使用文件的toUri方法获得URL (不推荐toUrl)。

票数 1
EN

Stack Overflow用户

发布于 2018-11-03 12:01:30

这几乎肯定是行不通的,因为你要这样做:

代码语言:javascript
复制
platform.assets().setPathPrefix("resources")

这意味着您的源文件夹如下所示:

代码语言:javascript
复制
src/main/resources/resources/images/bg.png
src/main/resources/resources/images/pea.png
src/main/resources/resources/images

我想它看起来就像这样的一个:

代码语言:javascript
复制
src/main/resources/assets/images/bg.png  <-- 'assets' the default prefix
src/main/resources/assets/images/pea.png
src/main/resources/assets/images

或者:

代码语言:javascript
复制
src/main/resources/images/bg.png  <-- You have failed to put a subfolder prefix in
src/main/resources/images/pea.png
src/main/resources/images

如果没有前缀,可以这样做:

代码语言:javascript
复制
plat.assets().setPathPrefix("")

或者只需将您的文件放在assets子文件夹中的resources文件夹中。

值得注意的是,当前的实现调用:

代码语言:javascript
复制
getClass().getClassLoader().getResource(...)

不是:

代码语言:javascript
复制
getClass().getResource(...)

差别在其他地方也有,但是tldr是plat.assets.getImage("images/pea.png")可以工作,但是plat.assets.getImage("/images/pea.png")不能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14422215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档