我正在尝试创建一个gradle任务,该任务根据说明运行texturepackerhere。(注意,我使用的是android studio及其目录结构,而不是eclipse。)我首先在androidstudio项目的build.gradle中添加了以下内容:

import com.badlogic.gdx.tools.texturepacker.TexturePacker
task texturePacker << {
  if (project.ext.has('texturePacker')) {
    logger.info "Calling TexturePacker: "+texturePacker
    TexturePacker.process(texturePacker[0], texturePacker[1], texturePacker[2])
  }
}

这就产生了错误
无法解析类com.badlogic.gdx.tools.texturepacker.texturepacker
将桌面项目中的texturePacker任务移动到build.gradle会产生相同的错误。根据http://www.reddit.com/r/libgdx/comments/2fx3vf/could_not_find_or_load_main_class_texturepacker2/,我还需要将compile "com.badlogicgames.gdx:gdx-tools:$gdxVersion"添加到桌面项目依赖项下的根build.gradle中。当我这样做的时候,我仍然会得到同样的错误。
所以我有几个问题:
texturePacker任务的正确位置在哪里?我该把这个放在哪个地方?
如何解决依赖关系问题和build.gradle错误?
使用gradle运行时,如何指定输入和输出目录以及atlas文件?(假设前两个问题都解决了。)

最佳答案

我通过将gdx工具添加到buildscript依赖项中来实现它:

buildscript{
    dependencies {
       ...
       classpath 'com.badlogicgames.gdx:gdx-tools:1.5.4'
    }
}

通过这样做,我的桌面build.gradle可以导入纹理打包程序类:
import com.badlogic.gdx.tools.texturepacker.TexturePacker
task texturePacker << {
    if (project.ext.has('texturePacker')) {
        logger.info "Calling TexturePacker: "+ texturePacker
        TexturePacker.process(texturePacker[0], texturePacker[1], texturePacker[2])
    }
}

请注意,您的桌面项目的ext需要定义texturepacker:
project.ext {
    mainClassName = "your.game.package.DesktopLauncher"
    assetsDir = new File("../android/assets");
    texturePacker = ["../images/sprites", "../android/assets", "sprites"]
}

07-27 13:29