2016-08-23 10 views
0

それは一口だから説明するのはいくらか難しいですが、私はできる限り文脈を伝えようとします。CSSスプライトシートの動きの遷移。

CSSスプライトシートに、北、南、東、西に面した小さな文字があります。私のゲームで。 WASDで彼の動きをコントロールすることができます。これにより、Xピクセルを視覚的に上下、左右、または右に移動させることができます。その方向に応じて、CSSのスプライトはそれに応じて変更され、移動する方向に常に「向き」ます。

私の問題は、CSSトランジションプロパティを使用したいのですが、そうしたときに動きが発生しますが、CSSスプライトをスクロールしてしまいます。

私の質問は、「すべて」に設定すると、必要のないバックグラウンドの位置を含め、すべてが遷移するため、画面上のピクセルの動きを制御するCSSのプロパティです。

私は、次のCSSコードを持っている:私が働いているいずれも可能性...の様々な試みた

player.className = 'player playerRight'; 
player.style.left = parseInt(player.style.left) + 48 + 'px'; // Example of the JS when the player moves right 

.player { 
    background: url(character.png) no-repeat top left; 
    width: 48px; 
    height: 48px; 
    position: absolute; 
    margin: 0; 
    z-index: 100; 
    transition: all .25s ease; 
} 

.player.playerFront { 
    background-position: 0 0; 
} 

.player.playerBack { 
    background-position: -48px 0; 
} 

.player.playerLeft { 
    background-position: -96px 0; 
} 

.player.playerRight { 
    background-position: -144px 0; 
} 

Javascriptを。 StackOverflowとオンライン上のすべてのものは、アニメーションやホバー効果についてのみ話し、私の特定の問題には当てはまりません。

+0

あなたが何を求めているのか不明です。 _ "どのCSSプロパティが画面上のピクセルの動きを制御するか" _ - 私はあなたが左のプロパティを使ってプレーヤーオブジェクトを移動するのを見るだけですが、それは背景イメージとはほとんど関係ありません。 CSSプロパティの変更を変更することも、変更しないこともできます。バックグラウンドの位置を変えると、あなたが見ている効果が期待されます。あなたがそれを望んでいない場合は、そのプロパティを移行しないでください。代わりにあなたが移行したいという欲求を特定してください。 – CBroe

+0

このようなことについて[steps()](http://designmodo.com/steps-css-animations/)を使用してください。 – Scott

+0

CBroe、私は、背景画像の遷移なしでプレーヤーオブジェクトの移動を移行したいと思います。私はトランジションのジェネリック "オール"以外のものを何が決定するのだろうかと思っています。 – Timble

答えて

2

動きがスムーズに表示されない理由は、JSが48ピクセル単位で文字を移動しているためです。 JSのようなスタイルを直接設定すると、transitionプロパティを設定しても、新しい値にすぐに設定されるため、アニメーション化されません。

編集: あなたが唯一の位置ではなく、バックグラウンドポジションを移行したい場合、あなたはこのようにそれを行うだろう:

transition-property: top, bottom, left, right; 
transition-duration: 0.25s; 
transition-timing-function: ease; 

それはまだ効果はありません、と述べましたスタイルを設定するためにJSを使用している場合。 style.left += 48pxと設定すると、その48pxがすべて1つに移動します。

また、スプライトシートの設定方法に問題がある可能性があります。それぞれの「スプライト領域」(つまり、一度に表示される可能性のあるシートの各セグメント)には、スプライトが中央に配置され、エッジのいずれにも配置されないようにしてください。 (詳細な回答が必要な場合は、入手したものを示すコードを作成すると役に立ちます)

+0

私のコードではすでにスムーズに移行しています。しかし、新しい背景の位置に移動するので、移動方向を変更するとちらつきもあります。 CSSのスプライトの変化がちらつくことなくスムーズに移行したいと思っています。 – Timble

+0

また、48ピクセルの動きは、プレイヤーをグリッドの別のタイルに移動させているため、その距離である必要があります。また、トランジションなしで突然動いたときには、私はCSSの移行を行うとき – Timble

+0

ああ - 私は私の答えを更新するつもりです。 – jack