Andengine 瓦片地图1

 

使用Tiled编辑器   制作出地图 然后导出对应的tmx 和tsx 文件 。

然后导入到对应android项目的assets文件夹下,

修改这2个文件的source属性(就是这2个文件现在的路径) 可以直接文本的形式打开修改。

不同版本的andengine 可能有些细微不同  大家可以看下具体源码 修改下

TMXLoader类:

       用来将TMX,TSX文件加载到TMXTiledMap对象中去。


       TMXLoader(Context pContext, TextureManager pTextureManager, TextureOptions pTextureOptions,

       VertexBufferObjectManager pVertexBufferObjectManage , ITMXTilePropertiesListener pTMXTilePropertyListener)



TMXTiledMap类:
    
   用于表示整个瓦片地图的文件的类。它包括了所有的图层,瓦片及其相关属性。
       使用TMXLoader.loadFromAsset(Context pContext, String pAssetPath)方法来获得

TMXLayer类:
        瓦片地图由图层组成,每个图层上都有自己的瓦片。
       TMXTiledMap.getTMXLayers().get(int X);用来获得图层,X为图层的引索值。

TMXTile类:
     瓦片
     可以用
     getTMXTile(int pTilteColumn, int pTileRow)
     getTMXTileAT(float pX,float pY)来获得瓦片。
     当瓦片的贴图需要改变时,可以
     setGlobalTileID(TMXTileMap pTMXTileMap , int pGlobalTileID)
     pGlobalTileID是Tiled编辑器赋予瓦片图片的全局ID

代码

 

package com.testsprite;

import org.andengine.engine.camera.Camera;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.andengine.entity.scene.Scene;
import org.andengine.extension.tmx.TMXLayer;
import org.andengine.extension.tmx.TMXLoader;
import org.andengine.extension.tmx.TMXLoader.ITMXTilePropertiesListener;
import org.andengine.extension.tmx.TMXProperties;
import org.andengine.extension.tmx.TMXTile;
import org.andengine.extension.tmx.TMXTileProperty;
import org.andengine.extension.tmx.TMXTiledMap;
import org.andengine.extension.tmx.util.exception.TMXLoadException;
import org.andengine.opengl.texture.TextureOptions;
import org.andengine.ui.activity.SimpleBaseGameActivity;

public class TMXTiledMapExample extends SimpleBaseGameActivity {
    // ===========================================================
    // Constants
    // ===========================================================

    private static final int CAMERA_WIDTH = 1280;
    private static final int CAMERA_HEIGHT = 768;
    
    private  Camera mCamera;
    private TMXTiledMap mTMXMap;
    private TMXLayer mTMXLayer1;
    @Override
    public EngineOptions onCreateEngineOptions() {
        
        mCamera=new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
        
        EngineOptions mEngineOptions = new EngineOptions(true,
                ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(
                        CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);
        return mEngineOptions;
        
    }
    @Override
    protected void onCreateResources() {
        
    }
    @Override
    protected Scene onCreateScene() {
    Scene scene=new Scene();
    try {
        
        final TMXLoader tmxLoader = new TMXLoader(this.getAssets(),
                this.mEngine.getTextureManager(),
                TextureOptions.BILINEAR_PREMULTIPLYALPHA,
                this.getVertexBufferObjectManager(),
                new ITMXTilePropertiesListener() {

                    @Override
                    public void onTMXTileWithPropertiesCreated(
                            final TMXTiledMap pTMXTiledMap,
                            final TMXLayer pTMXLayer,
                            final TMXTile pTMXTile,
                            final TMXProperties<TMXTileProperty> pTMXTileProperties) {

                    }
                });
        
        this.mTMXMap=tmxLoader.loadFromAsset("map/sprite.tmx");
    } catch (final TMXLoadException tmxle) {
           
    }
    mTMXLayer1=this.mTMXMap.getTMXLayers().get(0);
    scene.attachChild(mTMXLayer1);
        return scene;
    }

}

 

 

 代码下载链接 http://mail.sina.com.cn/netdisk/download.php?id=613fdf6ff09d6966e87d3d5d2b970e18d9

 

 

 

 

参考至 http://www.apkbus.com/forum.php?mod=viewthread&tid=140144 

 

 

posted @ 2014-02-19 20:03  流动的存在  阅读(562)  评论(0编辑  收藏  举报