2016-11-05 47 views
1

easeljs-0.8.2.min 使用平鋪JSON導出瓷磚地圖。EaselJS(0.8.2.min及以上) - 當字符移動時移動JSON生成Sprite地圖XY

我有使用精靈類已經生成的瓷磚地圖(位圖類已被棄用,現在雅需要一段時間來弄清楚)。所以它是標準的32x32正方形產生的。

我有一個角色SpriteSheet,通過鍵盤監聽事件來移動。當我移動角色Right時,我希望生成的地圖可以在角色移動時進行平移和移動,因此看起來角色正在旅行,並且您可以看到地圖的其餘部分在畫布外。

spriteContainer = new createjs.Container(); 

    for (var y = 0; y < layerData.height; y++) { 
    for (var x = 0; x < layerData.width; x++) { 
     // create a new Bitmap for each cell 
     currentMap = new createjs.Sprite(tilesetSheet); 

     // layer data has single dimension array 
     var idx = x + y * layerData.width; 
     // tilemap data uses 1 as first value, EaselJS uses 0 (sub 1 to load correct tile) 
     tileLoad = layerData.data[idx] - 1; 
     currentMap.gotoAndStop(tileLoad); 

    // orthogonal tile positioning based on X Y order from Tiled 
     if(moveX == undefined || moveX == 0){ 
     moveX= 0; 
     } else {} 
     if(moveY == undefined || moveY == 0){ 
     moveY= 0; 
     } else {} 

     currentMap.x = (x * tilewidth - x) + moveX; 
     currentMap.y = (y * tileheight) + moveY; 

     // Pan X & Y 
     // X Minus Pans Right 
     // Y Minus Pans Down 
     // currentMap.x = currentMap.x + 1; 
     // currentMap.y = currentMap.y - 2; 

     mapX = currentMap.x; 
     mapY = currentMap.y; 

     currentMap.setBounds(mapX, mapY, tilewidth, tileheight); 

     spriteContainer.addChild(currentMap); 

     // Add bitmap to stage 
     stage.addChild(currentMap); 

    } 
    } 

所以我在EaselJS發現有一個叫,SpriteContainer,我想這個類是我需要得到這個工作的解決方案。因此,地圖得到生成,現在按右箭頭鍵監聽器我試過了:

//設置地圖 spriteContainer.x = spriteContainer.x + = charWalkSpeed;

我的調試器顯示當我按下右箭頭鍵時X座標確實上升,但是,地圖不移動並且它保持靜止。一直呆在這一個月,我絕對堅持。我有一個我迄今爲止的工作示例,但我認爲所提供的源代碼可能已經足夠了

+0

SpriteContainer是使用WebGL方法渲染速度更快的替代容器。我會堅持使用雪碧。 – Lanny

+0

你如何移動精靈?你在按鍵上增加x位置嗎?更改後你是否更新了舞臺?你可以發佈該代碼嗎? – Lanny

+0

是的,Sprite類被反覆迭代。 該字符被添加如下: 'code' HeroXCoordinates = HeroPlay0.x + = charWalkSpeed; '/ code' 是的,在新聞發佈上執行gotoAndPlay的按鍵上,字符使用SpriteSheet類,因爲它具有特定的動畫。
我對容器的想法是容納所有這些方塊,然後移動x或y。在之前發佈的代碼中,該位置是: 'code' currentMap.x = currentMap.x + 1; // currentMap.y = currentMap.y - 2; '/ code' – l3l00

回答

0

嘿,算出來了。兩個該死的月份,終於!

currentMap.parent.x!所以事情是平移的,我甚至喜歡它也會移動Collision對象!不幸的是它會移動標題欄,所以創建一個新的函數來告訴標題欄它需要保持靜態。不錯。

我的下一個任務是獲取瓷磚地圖,如果它到達瓷磚地圖的末端不平移。所以你沒有看到畫布背景。我的標題是靜態的,所以我如何才能平息發生,可能會讓我知道如何防止泛出血。