章节
问答
课签
笔记
评论
占位
占位

小男孩部分代码的封装

前端充斥着大量的异步操作,动画就是异步的逻辑,七夕主题的整个设计都是以小男孩走路为主线。在走到不同的路段就会有不同的操作,走路是通过CSS3的transition与animation结合完成的,所以针对这类异步的处理我采用了jQuery的Deferred封装起来。

除此之外,在整个结构中都是采用面向接口编程,简单的说就是将行为分布在各个对象中,并让这些对象自己各自负责自己的行为。那么小孩男的整个行为逻辑我都将会封装成一个独立的对象,通过接口调用

说了半天,我们看右边的代码最直接,我单独用了个BoyWalk.js把小男孩的动作给封装了起来,暴露了walkTo、stopWalk、setColoer三个接口,提供给外部调用。 接口的命名与数量是需要根据具体的业务逻辑的需要,随着人物的动作变化的增加,接口也会增加

以小男孩走路为变化,不同的路段有不同的速率与距离,所以会提供一个走路的walkTo接口给外部。在第三章的时候我把走路动作的一些细节与实现都分解了一遍,这里主要看下怎么融入Deferred的处理

index.html中的代码调用,可以这样理解:

  • 生成一个小男孩对象
  • 开始走路,2秒走到页面的20%的距离
  • 完成了设置一个颜色效果
  • 继续走路,走到40%的区域
  • 完成了设置一个颜色效果
  • 继续走路,走到60%的区域
  • 完成了设置一个颜色效果

通过加入Deferred的处理,让我们的流程就跟同步一样,这件事完成了就开始下一件事,非常合适人类的线性编程的逻辑,之后的整个流程都会基于then的方式书写

任务

打开index.html文件,在代码的68行填入相应代码,可以观察到之后的更多动作

.then(function() {
    //第二次走
    return boy.walkTo(2000, 0.4)
}).then(function() {
    //第二次走路完成
    boy.setColoer('yellow')
}).then(function() {
    //第三次走路
    return boy.walkTo(2000, 0.6)
}).then(function() {
    //第三次走路完成
    boy.setColoer('blue')
});
?不会了怎么办
||
1
2
<!DOCTYPE html>
<html>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/////////
// //
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/**
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/**/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
* {
padding
       : 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 慕仙7331158
因为函数里面是闭包,你看看闭包就知道了

最新回答 / qq_温书_0
可能是调用transition做运动出问题,你可以使用animate这个方法试一下

最新回答 / 慕丝2282468
封装返回的是一个对象,对象里面没有的方法Html里面是调用不了

最新回答 / 慕虎5292548
在index.html中,引入
<script src="https://cdn.bootcss.com/jquery.transit/0.9.12/jquery.transit.js"></script>

最赞回答 / 慕的地2446357
这里要了解3个步骤
var dtd = $.Deferred();  //创建
dtd.resolve();          //成功
dtd.then()              //执行回调
=====以上代码中then()是通过dtd来执行的,同理boy.walkTo(2000, 0.2).then(...

最新回答 / 凌泷时代
后面的函数名要写对

已采纳回答 / 慕粉4328113
返回$.Deferred(),保证上一个动画执行完成之后再执行下一个动画,不返回两个动画会一起执行

最新回答 / 蛋黄酱
0.2=20%,不是这样的吗?

最赞回答 / weibo_深蓝和深蓝_0
这边应该是使用了jQuery的一个插件,translate.js,所以才会有这段代码。里面的参数应该去看下这个插件的描述就知道。比如runTime时动画时间,函数是回调函数等

最赞回答 / 我想做前端大牛
希望理解正确,大神们觉得对的给个赞吧,就更加有动力学习了
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言