动画实现不了

来源:6-2 封装形变类(2)

慕婉清6323512

2020-12-27 10:15:51

# 具体遇到的问题
老师看下 为啥动不了
# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>index</title>
<style type="text/css">
.ball {
background: linear-gradient(#ff9b9b 50%, #106dbb 50%);
width: 100px;
height: 100px;
border-radius: 50%;
}
</style>
</head>

<body>
<div class="ball">

</div>
<script type="text/javascript">
//形变类
class Transform {
constructor(selector) {
this.el = document.querySelector(selector);
this._quene = [];
this.el.style.transition = ` all ${ .3 }s`;
}
//位移
translate(value, time) {
return this._add('translate,value,time');
}
//缩放
scale(value, time) {
return this._add('scale,value,time');
}
//形变
rotate(value, time) {
return this._add('rotate,value,time');
}
//添加动画
_add(type, value, time) {
this._quene.push({
type,
value,
time
});
return this;
}
//添加动画完成 可以开始动了
done() {
this._start();
}
//动画开始 从 _quene中把动画一个一个拿出来
_start() {
//先进先出
setTimeout(() => {
const info = this._quene.shift();
this.el.style.transform = this._getTransform(info);
}, 0);
}
_getTransform({
type,
value,
time
}) {
switch (type) {
case 'translate':
return `translate(${ value })`;
break;
case 'scale':
return `scale(${ value })`;
break;
case 'rotate':
return `rotate(${ value })`;
break;
}
}
}
const tf = new Transform(".ball");
tf
.translate('200px,200px')
.scale(2)
.done;
console.log(tf);
</script>
</body>

</html>

​代码,可通过选择【代码语言】突出显示

写回答

1回答

好帮手慕夭夭

2020-12-27

同学你好,代码的问题与修改如下:

1、this._add调用时,传入的参数不对,导致类型里面保存的信息错误。如下:

http://img.mukewang.com/climg/5fe7f1ff09e424b306540060.jpg

这里不要把另外两个参数也放在引号中,否则会当成一个参数(即一个字符串)。


http://img.mukewang.com/climg/5fe7f2860954e2a204260049.jpg

如下修改:

http://img.mukewang.com/climg/5fe7f27909a64a3e05310290.jpg

2、done方法没有加括号调用,如下调用:

http://img.mukewang.com/climg/5fe7f2a409a0e75403140103.jpg

3、如下代码中,因为定时器只执行一次,所以拿到第一个动画之后,不会再次执行了。

http://img.mukewang.com/climg/5fe7f381096728fd05480174.jpg

所以在本次动画执行完毕之后,需要再次调用_start方法,让它继续拿后面的动画并执行。如下:

这个后面小节就会讲解了哦

http://img.mukewang.com/climg/5fe7f3ff0991689c06620292.jpg

祝学习愉快~


0

0 学习 · 10739 问题

查看课程