admin管理员组文章数量:1420228
I used PIXI.js (for the first time!) to set up a rendering of a rudimentary transition, where a sprite moves diagonally across the canvas. Almost half way during the transition, I am changing the texture to use another image. It works as expected. But I want to know how to get a fadeIn effect, so the change in the image does not look abrupt. Below is the code I am using (and here is the jsfiddle).
var stage = new PIXI.Container();
var renderer = PIXI.autoDetectRenderer(150, 150, rendererOptions);
document.body.appendChild(renderer.view);
var texture = PIXI.Texture.fromImage('._OU01_AC_UL160_SR160,160_.png', true);
var texture2 = PIXI.Texture.fromImage('._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);
}
I used PIXI.js (for the first time!) to set up a rendering of a rudimentary transition, where a sprite moves diagonally across the canvas. Almost half way during the transition, I am changing the texture to use another image. It works as expected. But I want to know how to get a fadeIn effect, so the change in the image does not look abrupt. Below is the code I am using (and here is the jsfiddle).
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./images/I/81W02uGnuLL._OU01_AC_UL160_SR160,160_.png', true);
var texture2 = PIXI.Texture.fromImage('https://images-na.ssl-images-amazon./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);
}
Share
Improve this question
asked Jul 29, 2016 at 21:51
Web UserWeb User
7,77615 gold badges70 silver badges101 bronze badges
1 Answer
Reset to default 2Well, since you are reassigning the texture reference, this can be pretty hard to animate a fade.
If you are able to make two sprites, one for each texture, then you can manipulate the .alpha field. I forked your jsfiddle to demonstrate this:
https://jsfiddle/55zvq716/
Add a second sprite to hold texture 2; Make it start with alpha = 0 (fully transparent).
var sprite2 = new PIXI.Sprite(texture2);
sprite2.alpha = 0;
sprite2.position.x = 0;
sprite2.position.y = 0;
Instead of swapping textures, trigger an alpha change at the desired point.
if (sprite.position.x >= 35 && sprite2.alpha < 1) {
sprite.alpha -= .01;
sprite2.alpha += .01;
}
本文标签: javascriptAdding fadeIn transition to PIXI spriteStack Overflow
版权声明:本文标题:javascript - Adding fadeIn transition to PIXI sprite - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745309242a2652836.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论