PixiJs武术小人滑动淡入淡出动画
今天这节课涉及到了Alloytouch.js,TimelineMax.js,TimelineMax..js,用户需要通过用手上下滑动触发时间轴来改变精灵的变化,这就是一镜到底
的播放方式。
第一步:创建项目,并且导入4js个文件

第二步:导入图片
http://dongyuan.juzhen02.com/2019/dy0426/images/sjg1.png
第三步:创建舞台
const w = document.body.clientWidth,
h = document.body.clientHeight;
let app = new PIXI.Application({width: w, height: h});
第四步:加载资源
const loader = new PIXI.loaders.Loader();
loader.add('sjg1', 'imgs/sjg1.png')
第五步:加载进度,完成加载,并且把舞台添加到body中
loader.on("progress", function(target, resource) { //加载进度
console.log(target.progress+"%")
});
loader.once('complete', function(target, resource) { //加载完成
document.body.appendChild(app.view)
});
loader.load(); // 开始加载资源
第六步:创建精灵
const sprite = {}
sprite.sjg1 = new PIXI.Sprite.fromImage('sjg1')
sprite.sjg1.position.set(w/2,h/2)
sprite.sjg1.alpha = 0;
sprite.sjg1.anchor.set(0.5,0.5)
app.stage.addChild(sprite.sjg1);
第七步:创建时间轴
let allTimeLine = new TimelineMax({
paused:true //默认停止
})
let moveMin = -app.stage.height+图片的高度;
alloyTouch = new AlloyTouch({
touch:"body",//反馈触摸的dom
vertical: true,//true代表监听竖直方向touch,false横向
min: moveMin, //不必需,运动属性的最小值
maxSpeed: 1,
max: 0, //不必需,滚动属性的最大值
bindSelf: false,
initialValue: 0,
change:function(value){
//动画计算进度
let myprogress = value / moveMin;
allTimeLine.seek(myprogress)
}
})
第八步:编写动画
//子时间轴
let timeline1 = new TimelineMax({
delay:0.3 //到时间轴的0.3的位置,让图片从透明到不透明
})
//动画
let tweenMax1 = new TweenMax(sprite.sjg1,0.1,{alpha:1}); //占总时间轴的10%
//将动画添加到子时间轴上
timeline1.add(tweenMax1,0)//把动画添加子时间轴的第0帧
allTimeLine.add(timeline1,0);//把子时间轴添加到主时间轴上
结束
到此在上下滑动屏幕的时候,小人就会从透明度0到1了。
转载自:https://juejin.cn/post/6844903906946842638