2016-07-29 17 views
0

私はPIXI.jsを使って、スプライトがキャンバスを斜めに移動する初歩的なトランジションのレンダリングを設定しました。移行の途中で、私は別のイメージを使用するようにテクスチャを変更しています。それは期待どおりに動作します。しかし、私はfadeIn効果を​​得る方法を知りたいので、画像の変化が突然見えません。以下は私が使用しているコードです(そしてここにはjsfiddleです)。PIXIスプライトへのfadeInトランジションの追加

var stage = new PIXI.Container(); 
var renderer = PIXI.autoDetectRenderer(150, 150, rendererOptions); 
document.body.appendChild(renderer.view); 
var texture = PIXI.Texture.fromImage('https://images-na.ssl-images-amazon.com/images/I/81W02uGnuLL._OU01_AC_UL160_SR160,160_.png', true); 
var texture2 = PIXI.Texture.fromImage('https://images-na.ssl-images-amazon.com/images/I/81887k9tnQL._OU01_AC_UL160_SR160,160_.png', true); 
var sprite = new PIXI.Sprite(texture); 
sprite.position.x = 0; 
sprite.position.y = 0; 
stage.addChild(sprite); 

animate(); 

function animate() { 
    if (sprite.position.x < renderer.width 
     || sprite.position.y < renderer.height) { 

     if (sprite.position.x == 35) { 
      sprite.texture = texture2; 
     } 
     requestAnimationFrame(animate); 
    } 

    sprite.position.x += 0.5; 
    sprite.position.y += 0.5; 
    renderer.render(stage); 
} 

答えて

1

テクスチャ参照を再割り当てするので、フェードをアニメーション化するのはかなり難しいかもしれません。

テクスチャごとに1つずつ2つのスプライトを作成できる場合は、アルファフィールドを操作できます。私はこれを証明するためにあなたのjsfiddleをフォーク:テクスチャ2を保持するために第2のスプライトを追加

https://jsfiddle.net/55zvq716/

を。アルファ= 0(完全に透明)で始めるようにしてください。代わりに、テクスチャをスワップの

var sprite2 = new PIXI.Sprite(texture2); 
    sprite2.alpha = 0; 
    sprite2.position.x = 0; 
    sprite2.position.y = 0; 

、所望の時点でアルファ変化を誘発します。

if (sprite.position.x >= 35 && sprite2.alpha < 1) { 
     sprite.alpha -= .01; 
     sprite2.alpha += .01; 
    } 
+0

ので、2つのスプライトは、他の上に1と一緒に移動され、1はフェードイン、もう一方は同時に彼らのアルファを使用してフェードアウト?それは働く...ありがとう! –

+0

私は、指定された時間持続するトランジションをレンダリングしようとしています。つまり、クロスフェードを10秒間持続させたいとします。私はグラフィックス(ウェブまたはそれ以外の場合)、フレームレートなどの経験はほとんどありませんが、フレームレートとアルファの各操作間のタイミングとの間には相関関係があると思います。時間切れの移行を実装するにはどうしたらよいですか?つまり、N秒間持続する移行ですか? –

関連する問題