2016-11-05 11 views
1

easeljs-0.8.2.min タイルマップのTile-mapを使用しました。EaselJS(0.8.2.min以上) - 移動するJSONの移動文字の移動時にスプライトマップの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、というクラスを持って、私はこれは私がこの作業を取得する必要があるかもしれませんソリューションです考えています。マップが生成され、右矢印のキーリスナーに、私は試しました:

//セットマップ spriteContainer.x = spriteContainer.x + = charWalkSpeed;

私の右の矢印キーを押したときにX座標が上がっているのをデバッガが示していますが、マップは移動せず、静止したままです。これで1ヶ月間これに固執してしまいました。私は今までのものの実例を持っていますが、十分なソースコードが提供されていると思います。

+0

SpriteContainerはWebGLアプローチを使用してより高速にレンダリングするコンテナです。私はスプライトにこだわるだろう。 – Lanny

+0

どのようにスプライトを動かしていますか? keypressでxの位置をインクリメントしていますか?あなたはそれを変更した後でステージを更新していますか?あなたはそのコードを投稿できますか? – Lanny

+0

さて、Spriteクラスは、1平方メートルあたり何度も反復されます。 文字が次のように追加されます。 'code' HeroXCoordinates = HeroPlay0.x + = charWalkSpeed; '/ code' プレスリリースでgotoAndPlayを実行するキープレスでは、文字はSpriteSheetクラスを使用します。これは、その動作に固有のアニメーションを持つためです。
私のアイデアは、すべての四角形を保持してからxまたはyに移動することです。以前に投稿されたコードでは、位置は次のようになります。 'code' currentMap.x = currentMap.x + 1; // currentMap.y = currentMap.y - 2; '/ code' – l3l00

答えて

0

Heh、考え出しました。 2つのくそった月とついに!

currentMap.parent.x!だから、物事はパニングする必要があります、私はそれがあまりにも衝突オブジェクトを移動することが好きです!悲しいことにヘッダーバーを動かすので、ヘッダーバーに静的に留まる必要があることを伝える新しい機能を作ります。悪くない。

次のタスクでは、タイルマップの最後に到達すると、タイルマップがパンしないようになります。キャンバスの背景は見えません。私は静的なヘッダーを持っているので、どうやってパンが起こるのかは、パンの出血を防ぐ方法を私に手がかりにするかもしれません。

関連する問題