2013-07-08 167 views
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庫想要使用字符串訪問同一資源。我曾嘗試過:未找到Android資源異常。按字符串指定資源

"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; 
} 

回答

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可以幫助

+0

我理解,但如果你看看min3d你會發現這個調用是「」min3d.sampleProject1:raw/test2_obj「,它可以在示例項目中正常工作,在這種情況下,我必須提供一個類似於示例項目中的字符串的字符串 – Giuseppe

+0

我想知道如果我應該只需重命名並移動正在工作的示例項目...出於某種原因,當我移動到一個新項目時,我很難重複資源的訪問方式。 – Giuseppe

+0

我不確定如果它很重要,但示例項目需要android-4,我創建的新項目是android-17。傳統中可能會有一些變化嗎? – Giuseppe