剛開始使用tmx平鋪的地圖文件作爲我的2D平臺遊戲的地圖。這是迄今爲止的代碼。TMX Tiled Andengine Android - FATAL EXCEPTION -
private void loadLevel() {
// TODO Auto-generated method stub
try {
TMXLoader tmxLoader = new TMXLoader(
ResourceManager.getInstance().activity.getAssets(),
engine.getTextureManager(),
TextureOptions.BILINEAR_PREMULTIPLYALPHA, vbom);
this.mTMXTiledMap = tmxLoader.loadFromAsset("tmx/testmap2.tmx");
} catch (final TMXLoadException tmxle) {
Debug.e(tmxle);
}
for (int i = 0; i < this.mTMXTiledMap.getTMXLayers().size(); i++) {
TMXLayer layer = this.mTMXTiledMap.getTMXLayers().get(i);
this.attachChild(layer);
}
for (final TMXObjectGroup group : this.mTMXTiledMap
.getTMXObjectGroups()) {
for (final TMXObject object : group.getTMXObjects()) {
if (group.getName().equals("Unwalkable")) {
Rectangle rect = new Rectangle(object.getX(),
object.getY(), object.getWidth(),
object.getHeight(), vbom);
FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(
0.0f, 0.0f, 1f, false,
CATEGORYBIT_WALL,
MASKBITS_WALL, (short) 0);
PhysicsFactory.createBoxBody(physicsWorld, rect,
BodyType.StaticBody, boxFixtureDef);
rect.setVisible(false);
final PhysicsHandler physicsHandler = new PhysicsHandler(
rect);
rect.registerUpdateHandler(physicsHandler);
attachChild(rect);
}
}
}
}
但它給我這個錯誤 - 致命異常:UpdateThread和java.lang.IllegalArgumenetException:未找到屬性值:「寬度」
這是我的TMX文件有問題?它是如何編碼的或者我如何設置它?還是在編碼結束?謝謝你們,我非常感謝他們的幫助。以下是LogCat的其餘部分,以便您可以使用它。
04-25 08:36:01.716: E/AndroidRuntime(13119): FATAL EXCEPTION: UpdateThread
04-25 08:36:01.716: E/AndroidRuntime(13119): java.lang.IllegalArgumentException: No value found for attribute: 'width'
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.util.SAXUtils.getAttributeOrThrow(SAXUtils.java:47)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.util.SAXUtils.getIntAttributeOrThrow(SAXUtils.java:86)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.extension.tmx.TMXObjectGroup.<init>(TMXObjectGroup.java:37)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.extension.tmx.TMXParser.startElement(TMXParser.java:161)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.apache.harmony.xml.ExpatParser.startElement(ExpatParser.java:143)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.apache.harmony.xml.ExpatParser.appendBytes(Native Method)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:513)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:474)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:321)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:279)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.extension.tmx.TMXLoader.load(TMXLoader.java:117)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.extension.tmx.TMXLoader.loadFromAsset(TMXLoader.java:102)
04-25 08:36:01.716: E/AndroidRuntime(13119): at com.meowcatfighter.goodygreen.scene.GameScene.loadLevel(GameScene.java:96)
04-25 08:36:01.716: E/AndroidRuntime(13119): at com.meowcatfighter.goodygreen.scene.GameScene.createScene(GameScene.java:85)
04-25 08:36:01.716: E/AndroidRuntime(13119): at com.meowcatfighter.goodygreen.scene.SceneManager.setGameScene(SceneManager.java:75)
04-25 08:36:01.716: E/AndroidRuntime(13119): at com.meowcatfighter.goodygreen.scene.MainMenuScene.onMenuItemClicked(MainMenuScene.java:66)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.entity.scene.menu.MenuScene.onAreaTouched(MenuScene.java:139)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.entity.scene.Scene.onAreaTouchEvent(Scene.java:413)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.entity.scene.Scene.onSceneTouchEvent(Scene.java:357)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.entity.scene.CameraScene.onSceneTouchEvent(CameraScene.java:64)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.entity.scene.Scene.onChildSceneTouchEvent(Scene.java:420)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.entity.scene.Scene.onSceneTouchEvent(Scene.java:338)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.engine.Engine.onTouchScene(Engine.java:452)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.engine.Engine.onTouchEvent(Engine.java:438)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.input.touch.controller.BaseTouchController$TouchEventRunnablePoolItem.run(BaseTouchController.java:102)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:54)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:1)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.util.adt.pool.PoolUpdateHandler.onUpdate(PoolUpdateHandler.java:88)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.input.touch.controller.BaseTouchController.onUpdate(BaseTouchController.java:62)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.engine.Engine.onUpdate(Engine.java:584)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.engine.Engine.onTickUpdate(Engine.java:548)
04-25 08:36:01.716: E/AndroidRuntime(13119): at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820)
(編輯 - 大部分得益於馬捷Spili用於編輯的logcat這是對現在的眼睛更容易:!d)
編輯14年4月29日
所以,所以我說話到Tiled的製造商比約恩。
- 我 - 它只是似乎沒有不管我用什麼樣的代碼,但因爲它總是錯誤
我 - 當我看到的例子TMX文件中的一個,在最後它看起來像....
<objectgroup name="Unwalkable" width="400" height="21">
- 我 - 但是當我看出我創建的tmx文件時,沒有高度和寬度的規範。你如何指定對象層的高度/寬度?
- bjorn - dpod:這些屬性不再寫出來。
- bjorn - dpod:AndEngine應該固定不需要它們。由於對象組沒有大小限制,它們基本上總是毫無意義的。
- 比約恩 - 像「getTMXObjectGroupProperties」或「containsTMXProperty」這些函數名是絕對瘋了...
- 比約恩 - 在瓷磚,該代碼會更喜歡「的foreach(對象組*組,MAP-> objectGroups() ){if(group-> hasProperty(「wall」)){...
- IRC - [15:02] == bjorn [〜quassel @ pdpc/supporter/active/bjorn]
- IRC - [15 :02] ==真實姓名:托爾比約恩Lindeijer
- IRC - [15:02] ==渠道:#tiled
- IRC - [15:02] ==服務器:asimov.freenode.net [TX,USA]
- IRC - [15:02] ==帳戶:比約恩
- IRC - [15:02] ==的WHOIS
- 我結束 - 哦,我的天哪你是誰做瓷磚的傢伙?
這很有趣哈哈。但現在我已經有更多的問題!究竟是什麼?
感謝您的支持。我能夠一起移除物體層,並使地圖顯示在GLES2上的屏幕上。示例TMX文件看起來很有趣,並且具有對象層的寬度和高度屬性,我認爲您不能在Tiled應用程序本身中進行配置。雖然我沒有設法在GLES2中創建牆體對象,但我決定在錨中心完成所有這些工作。儘管我遇到了很多不同的問題,但如果你願意幫助我,我會很感激,並會保持更新。感謝您的時間:) – GoodyGreen
好的,所以我陷入了我在GLES 2中的位置。現在我得到了我在GLES 2中收到的同樣的錯誤。「沒有找到屬性的值:'width'」我是尋找一個andengine錨中心示例,展示如何將TMX對象轉換爲矩形和我可以在引擎中操作和使用的項目。我只會放棄我用來實現矩形的示例代碼。如果你熟悉這種想法,那麼你的幫助是非常感謝的( – GoodyGreen
)所以我有幸與製作Tiled的bjorn交談,談話對此太長了,所以我會把它作爲一個編輯發佈給我原來的帖子。 – GoodyGreen