2016-11-05 7 views
1

easeljs-0.8.2.min Tiled JSile export 된 타일 맵이 사용되었습니다.EaselJS (0.8.2.min 이상) - JSON 생성 이동 문자가 이동할 때 Sprite 맵 XY

타일 맵이 이미 Sprite 클래스를 사용하여 생성되었습니다 (비트 맵 클래스는 현재 사용되지 않으므로 나중에 알아 냈습니다). 따라서 표준 32x32 사각형이 직각으로 생성됩니다.

키보드 청취 이벤트로 이동하는 문자 SpriteSheet가 있습니다. 캐릭터를 움직일 때 캐릭터가 움직일 때 생성 된 맵을 이동 및 이동하므로 캐릭터가 이동하고있는 것처럼 보입니다. 캔버스에서 벗어난 나머지 맵을 볼 수 있습니다.

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, 나는이 생각을하고있다라는 클래스를 가지고하는 것은 내가이 일을 얻을 필요가있다 솔루션입니다. 그래서 Map이 생성되고 오른쪽 화살표 키 리스너에서 지금 시도했습니다 :

//지도 설정 spriteContainer.x = spriteContainer.x + = charWalkSpeed;

My Debugger가 오른쪽 화살표 키를 누를 때 X 좌표가 올라가는 것을 보여 주지만지도가 움직이지 않고 고정되어 있습니다. 지금이 달에 붙어있어 절대적으로 붙어 있습니다. 나는 지금까지 가지고있는 것을 잘 보여주고 있지만, 충분한 소스 코드가 충분하다고 생각한다.

+0

SpriteContainer는 WebGL 방식을 사용하여 더 빨리 렌더링하는 대체 컨테이너입니다. 나는 Sprite를 고집 할 것이다. – Lanny

+0

어떻게 스프라이트를 움직입니까? keypress에서 x 위치를 증가시키고 있습니까? 스테이지를 변경 한 후 스테이지를 업데이트하고 있습니까? 그 코드를 게시 할 수 있습니까? – Lanny

+0

그렇습니다. Sprite 클래스가 반복해서 반복됩니다. 문자가 다음과 같이 추가됩니다. 'code' HeroXCoordinates = HeroPlay0.x + = charWalkSpeed; '/ code' 보도 자료에서 gotoAndPlay를 수행하는 키 누르기에서 문자는 SpriteSheet 클래스의 용도와 관련된 애니메이션을 가지고 있기 때문에 SpriteSheet 클래스를 사용합니다.
컨테이너에 대한 나의 생각은 모든 사각형을 잡고 x 또는 y로 이동하는 것입니다. 이전에 게시 된 코드에서 위치는 다음과 같이 표시됩니다. 'code' currentMap.x = currentMap.x + 1; // currentMap.y = currentMap.y - 2; '/ code' – l3l00

답변

0

Heh, 알아 냈어. 마침내 두 달이 지났어!

currentMap.parent.x! 그래서 것들은 패닝입니다, 나는 심지어 그것이 Collision 객체를 움직인다는 사실조차 알고 있습니다! 안타깝게도 헤더 바를 이동하므로 헤더 바를 정적으로 유지해야한다는 새로운 기능을 만듭니다. 나쁘지 않아.

내 다음 작업은 타일 맵이 타일 맵의 끝에 도달하면 이동하지 않도록합니다. 그래서 당신은 캔버스 배경을 보지 못합니다. 정적 인 헤더가있어서 어떻게 팬이 생겨 팬 출혈을 예방할 수 있는지 알 수 있습니다.