Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> andengine的convertLocalCoordinatesToSceneCoordinates方法

andengine的convertLocalCoordinatesToSceneCoordinates方法

編輯:關於Android編程

使用Tile地圖,看過andengine中的例子,都會發現例子中有這麼一段話,以前版本的是convertLocalToSceneCoordinates方法。    
scene.registerUpdateHandler(new IUpdateHandler() {  
            @Override  
            public void reset() { }  
  
            @Override  
            public void onUpdate(final float pSecondsElapsed) {  
                /* Get the scene-coordinates of the players feet. */  
                final float[] playerFootCordinates = player.convertLocalCoordinatesToSceneCoordinates(16, 1);//danielinbiti注1  
                /* Get the tile the feet of the player are currently waking on. */  
                final TMXTile tmxTile = tmxLayer.getTMXTileAt(playerFootCordinates[Constants.VERTEX_INDEX_X], playerFootCordinates[Constants.VERTEX_INDEX_Y]);  
                if(tmxTile != null) {  
                    // tmxTile.setTextureRegion(null); <-- Eraser-style removing of tiles =D  
                    currentTileRectangle.setPosition(tmxLayer.getTileX(tmxTile.getTileColumn()), tmxLayer.getTileY(tmxTile.getTileRow()));  
                }  
            }  
        });  

 

  對於“注1”中的話,始終沒有理解這裡為什麼寫16,1,看上面的英文注釋,表達很清楚,就是轉換成屏幕坐標。 可能是原來沒有用過引擎,理解能力偏低。始終沒有理解這裡填寫16,1是怎麼來的,這兩個數字是隨便寫的還是怎麼計算出來的。看裡面的算法,也沒什麼疑問。   於是網上找資料,上andengine論壇,看著一篇篇的英文帖子,越看越模糊,數字五花八門,沒有任何規律。     哎,沒有規律就對了,一開始就糾結到了傳參上,這已經落入了陷阱,范了錯誤。實際這個函數的意思很好理解,就是把local坐標轉換成scene坐標。這個local相對與誰呢,實際上就是    
player.convertLocalCoordinatesToSceneCoordinates  

 

  這句話的前半部分,player,也就是括號中填寫的坐標是相對於player來說的,坐標系在屏幕的左下角,往後是X軸,往上是Y軸。括號中的參數就是相對於player的偏移量。   經過驗證後,就是這麼一回事。   一開始沒有發現,也是因為這是tilemap,根據格子畫的矩形,因此,如果這個數字的偏移量不大於一個格子的像素的花,矩形一直都在原地,看不出任何變化。也就導致小范圍改動數字都看不出效果來,改動太大了一下子又跑沒了。   特此記錄,以便於自己漲記性,對於一樣的後來者能夠立刻醒悟過來。   總算可以踏實的進行下一步了。  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved