0
package com.example.tictactoe3d;

import min3d.core.Object3dContainer;
import min3d.core.RendererActivity;
import min3d.parser.IParser;
import min3d.parser.Parser;

import min3d.vos.Light;

public class MainActivity extends RendererActivity {

    private Object3dContainer objModel;

    @Override
    public void initScene() {

        scene.lights().add(new Light());

        IParser parser = Parser.createParser(Parser.Type.OBJ,getResources(), "res/raw/camaro_obj" , true);
        parser.parse();

        objModel = parser.getParsedObject();
        //objModel.scale().x = objModel.scale().y = objModel.scale().z = .7f;
        scene.addChild(objModel);
    }

    @Override
    public void updateScene() {
        //objModel.rotation().x++;
        //objModel.rotation().z++;
        scene.camera().position.setAll(0,0,5);
    }
}

我在 Eclipse ADT 的日志中出现了一个找不到资源的异常。我使用的 min3d 库需要使用字符串访问资源。我可以使用带有自动完成功能的 R.raw.camaro_obj 访问资源,但是 min3d 库希望使用字符串访问相同的资源。我努力了:

"com.example.tictactoe3d:raw/camaro_obj"

"res/raw/camaro_obj"

"raw/camaro_obj"

有没有办法通过字符串以某种方式访问​​资源“res/raw/camaro_obj”?

谢谢...

min3d 示例项目中的调用如下所示:

        IParser parser = Parser.createParser(Parser.Type.OBJ,getResources(), "min3d.sampleProject1:raw/test2_obj" , true);

该行实际调用的代码正在执行此操作:

    public AParser(Resources resources, String resourceID, Boolean generateMipMap)
{
    this();
    this.resources = resources;
    this.resourceID = resourceID;
    if (resourceID.indexOf(":") > -1)
        this.packageID = resourceID.split(":")[0];
    this.generateMipMap = generateMipMap;
}
4

1 回答 1

1

您通常不使用字符串,而是通过 id 访问它们。R.raw.camaro_obj 将是一个 int,您可以通过调用来获取它的输入流getResources().openRawResources(R.raw.camaro_obj);

编辑:

我做了一些谷歌搜索,这个http://androidbook.blogspot.com/2009/08/referring-to-android-resources-using.html可能会有所帮助

于 2013-07-08T05:52:56.963 回答