0
使用HTML5画布我想加载图像并创建一个“淡入淡出”效果,第一个图像淡入视图,然后在短暂延迟后,第二个图像淡入第一个图像的顶部等Canvas图像动画(Crossfade)
在这个论坛上的类似问题的答案的帮助下,我有2个单独的代码工作位......一个加载图像数组和第二个动画“淡入”效果。我的问题是,我不知道如何结合这两个脚本来加载一个图像数组,并且还有阵列中的每个图像在加载时都会淡入。
这里有2个独立的脚本我有工作:
负荷的形象数组帆布:
HTML
<canvas id="canvas" width=600 height=350></canvas>
JS
window.onload = function() {
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
var delay=2000;
var nextTime=0;
var nextImage=0;
var imageURLs=[];
imageURLs.push("img/sunflower0.jpg");
imageURLs.push("img/sunflower1.jpg");
imageURLs.push("img/sunflower2.jpg");
var imgs=[];
var imagesOK=0;
loadAllImages(start);
function loadAllImages(callback){
for (var i=0; i<imageURLs.length; i++) {
var img = new Image();
imgs.push(img);
img.onload = function(){
imagesOK++;
if (imagesOK >= imageURLs.length) {
callback();
}
};
img.src = imageURLs[i];
}
}
function start(){
requestAnimationFrame(animate);
}
function animate(currentTime){
requestAnimationFrame(animate);
if(currentTime<nextTime){return;}
ctx.clearRect(0,0,cw,ch);
ctx.drawImage(imgs[nextImage],0,0);
nextTime=currentTime+delay;
nextImage++;
if(nextImage>imgs.length-1){nextImage=0;}
}
} // close window.onload
淡入图像作为他们加入帆布:
我设法得到的代码工作,这是否使用Canvas和使用GreenSock TweenMax单独位:
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenMax.min.js"> </script>
<script>
var ctx, img;
function init() {
ctx = document.getElementById("canvas").getContext("2d");
img = new Image();
img.src = "img/sunflower0.jpg";
img.xpos = 0;
img.ypos = 0;
img.globalAlpha = 0;
img.onload = function() {
TweenMax.ticker.addEventListener("tick",loop);
}
TweenMax.to(img, 5 ,{globalAlpha:1});
}
function loop(){
ctx.clearRect(0,0,500,336);
ctx.globalAlpha = img.globalAlpha;
ctx.drawImage(img, img.xpos, img.ypos);
}
init();
谁能告诉我如何将这两个脚本合并来获得交叉淡入淡出的效果呢?
非常感谢!
Kaiido您好,我不会想到用3个画布。这是我想要的效果。非常感谢! – Mekong