听说你要找前端工作,写一个酷炫的动画的简历呗

这个人就是我!

gihub 求star 求fork DEMO 预加载需要改一下,因为我放在服务器上的 所以是http请求 但是 在本地 就成了 file 请求 所以 各位自己改一下

如果

  • 你刚刚学完前端的DOM,BOM
  • 或者是看完《javascriptDOM编程艺术》这本js里比较优秀的入门书籍
  • 或者你是应届毕业生想找一份前端的工作,并且。。。你又恰好喜欢做动画。。。O__O "…
    (算了---哪有那么多或者。。。。)

此文,不是技术探讨类的文章,只是希望抛砖引玉,看着现在找工作的简历全是模板,模板。。。。
既然都想做前端,那就自己操刀写一个呗。


灵感:

小的时候玩过插卡游戏,大部分都是横屏的,主角单枪匹马穿过重重阻难,最后抱得美人归
有的时候想想,人生何尝不是这样呢?小学初中大学?或许还有硕士博士。。。这是学习上的。。
事业上,(只说工程师啊 主要不清楚 文科的)初级,中级,高级,资深,一级一级就像打怪一样往上面升级。

上上下下左左右右

人艰不拆。。。何不过得诗意一点,让求职也来个不一样吧。


制作过程:

构思整个动画:

我想的整个动画其实很简单,跟横屏游戏如出一辙,人物运动,背景切换,到了某一个位置就会触发一系列动画,并且开始下一个运动模式,

构思动画

这是是在构思动画之前,对整个动画布局的构思

然后就是构思整个动画的细节
整个动画 是对个人的一个简介(当然这是对我个人而言 你们完全可以 介绍其他的东西)
其实跟演讲或者面试的个人简介是差不多的,要有你好,要有自己的名字,要有自己的爱好以及擅长的地方,但是因为我构思了四个动画场景,所以在哪个地方描述关于自己哪些地方的内容就成了一个问题,不能讲完名字就说自己的项目吧?


大地篇

由于是开头,所以还是决定,简单介绍一下自己,所以在开头决定介绍自己的基本情况,爱好

个人简介

对一个人的简介,小心翼翼。。。生怕写错了啥。。 毕竟是求职简历,所以没吹牛。。。(你看 打星最高的是 健身)这里只做展示,因为这里还只是构思,还没到设计,颜色搭配那一步呢。

总结

  • 风车弹出 介绍自己 (需要 风车)
  • 相框出现 介绍家乡(需要 熊猫 相框 竹子)
  • 建筑堆积起来 出现自己学校的名字

海洋篇

因为是技术求职简历嘛,那么肯定就会有类似这样的技术打分。。。


来源:罗礼权的简历

而恰好海里面有鱼,可以实现排列的效果,于是有了

然而,我现在都上面的技能展示,一点也不满意, 说的都是一些不痛不痒的东西,当时出于写代码写累了所以就
随便想了一些内容上去,想想其实这些东西都可以改,倒也没什么。

总结

  • 鱼 各种鱼

社区篇

在这里偏重于介绍自己的项目经历,以及社会经历

总结

  • 这里刚开始没想到该怎么展现。。。 后来决定用车来展现

天空篇

这里 还是自我批评。。。 很多人都在吐槽,我作品最后不了了之,因为时间的关系


本来是想在这 火箭升空的过程中 赋诗一首的。。。结果把发射过程调完了,就又没有文思了

O__O "… 但跟多的人吐槽的是,为什么上了太空!!!!!没有联系方式蹦出来!!!!!!!有大瑕疵!!!!!

silimasei

当时我真的没想到需要这个。。。。。。。我就是想让男主 陆海空。。。。走一遭。。

总结

  • 火箭 升空,飞出大气,飞向太空

设计篇

就放图吧。。。 设计看个人,因为学过画画也算是有点底子

在最初设计以及布局的时候,我是想用lowPoly效果来做山的


C4d制作3d


PS调C4D出的图


不过最后效果还是不近人意,所以放弃了

然后一一切从简!!!!!

人物设计:

背景设计:

搭配调节

对于一些不容易画的(比如火焰)使用素材


将火焰素材,自己用ps导成一帧一帧的透明背景火焰(先是ps 导序列图 然后是选色区 删除色区 再导出图片)

里面的元素设计(最好玩的就是 画自己的学校。。。)


画的像不像!!!


动画篇

这一步倒是很简单,但是要你想好了人物动作与环境的搭配才简单,因为如果后期布好局之后把动画放上去有可能有一些地方人物动画与环境动画不太搭配,还要返回这一步。

有了画好的人物,只需要把它“分尸” 放到DragonBone里面 然后就可以制作你想要的帧动画了。(自己百度怎么用DragonBone)

导出:

后来改用雪碧图的形式
用脚本生成了这样


所以其他的动画部分大部分我都用了这种形式

给大家推荐 这个脚本,我自己谷歌的。。。神器
zerosprites


前端篇

光有点子是不行的,还得把他实现。。。在前端做动画,当然没有在AE上那么爽,全都是自己一个一个代码的去码,我觉得只要大家有耐心,肯定能完成这个作品。

我只讲讲重难点吧

1.该怎么布局?
我选择的的是

结构

可以看到主要的布局在adventure里面
依次是

  • 预加载界面

  • 云层(layer-shu-1)

  • 横向的层 有很多个 分别代表了不同的深度(远近程度吧),这是为了做视差效果才这样弄的

    • hen-1 也是云层(与上面那个云层效果不一样 不过最后都没有采用)
    • hen-2 远处的森林
    • hen-3 这是最重要的一层,所有的运动元素都在这一层(除了 开头标题 还有 男主外)
    • hen-4 远山层
    • hen-5 你看见了飞机还有热气球了吗?

    hen-6,shu-3是我刚开始预留出来可能后面要加一些动画用的,所以一直没删

  • Head层开头的标题(为什么单独放一层,这是因为 我想 刚开始的时候,也是就是人物还没有开始运动的时候,这个标题是一直居中的)

  • keybord层 提示使用空格键

  • fallAnimation 刚开始的下落动画(注意 与后面的运动动画不是同一个。。虽然看上去像是)

  • Karl !!!!!!! 男主在此!!!!

  • stationery 大家是否还记得那个文具铺满的场景 对其实一开始就等在那里的

  • displayword 这里是展示自己想要说的话

  • audio 这个就是后面的后摇音乐的

里面还有很多子层 但都 写了详细的注释


js篇

值得注意的地方:

  • 帧动画控制器
 
 /**
 * 自制了一个帧动画js调用对象
 *
 * @param id     获取对象
 * @param classF   className前缀 
 * @param num    图片的张数
 * @param settime   动画运行快慢
 * @param Callback  当动画完成后 是否有回调? 回调的话就 停止当前动画  继续下一个  如果没有 就进行循环动画
 * @param backnumber    动画第一遍 可能有一个初始化动画  在后面循环的时候可能就没用了
 *          比如火箭发射 初始有一个或图案由小变大的过程
 * @constructor
 */
function C_actor(id,classF,num,settime,Callback,backnumber,startnumber) {
    this.Object=document.getElementById(id);
    this.Onoff = false;
    this.classF = classF;
    this.num = num;
    this.setTime = settime;
    this.callback = Callback;
    this.backnumber = backnumber;
    this.start = startnumber;
    //this.prototype.startAnimation(urlF,urlE,num,settime)
}


C_actor.prototype.itsleft = function () {
    return $(this.Object).offset().left;
};

C_actor.prototype.startAnimation =function () {
    var i= this.start;
    var  that =this;
    that.timer=setInterval(function(){
        i++;
        that.Object.className = that.classF +i;
        // console.log()
        //如果有回调函数那在动画完了之后 关闭动画  开始回调函数
        if(i>=that.num){

            if(that.callback) {
                clearInterval(that.timer);
                that.callback();
            }else {
                // if(that.backnumber){
                //     i=that.backnumber;
                // }else{
                //     clearInterval(that.timer);
                // }
                i = that.start;
            }
        }

    },that.setTime)
};

var O_meetCar1 = new F_crashActor('Car1',function(){
        Baiduyun_Ani();
    F_displayWords(words[5]);
    O_meetBigCar.meet();
});

这个帧动画控制器是基于class也就是改变backgroundPosition来产生动画的,不是更改url(一开始我也是改变url 但是在线的时候频繁改变url导致 页面加载图片加载不过,完全无法产生连贯的动画所以后来全部转成background的形式)

  • meet函数

由于整个动画的触发是通过判断人物到了哪个地方 触发哪些动画,所以需要些一个函数来做判断

function F_meettheWall(obj,LR,long){
 if(LR) {

     var n = parseFloat($(O_karl).offset().left) + long;
     obj.timer = setInterval(function () {
         if (n <= parseFloat($(obj).offset().left) + parseFloat(obj.offsetWidth)) {
             obj.Onoff = false;//如果从右到左 的时候
             clearInterval(obj.timer);
         } else {
             obj.Onoff = true;
         }
     }, 20);
 }else{
     var n = parseFloat($(O_karl).offset().left) +parseFloat(O_karl.offsetWidth) ;
     // console.log(n+'-----------'+parseFloat($(obj).offset().left));
     // console.log('钢板or火箭'+parseFloat($(obj).offset().left));
     obj.timer = setInterval(function () {
         if (n >= parseFloat($(obj).offset().left)+long ) {
             clearInterval(obj.timer);
             obj.Onoff = false;//如果从左到右 的时候
         } else {
             obj.Onoff = true;
         }
     }, 20);
 }
}

  • 预加载

    原因很明显,这么多图片。。如果不预加载简直没法看。。。

    function preloadimages(arr){
      var n=0;
      var arr=(typeof arr!="object")? [arr] : arr;  //确保参数总是数组
      for (var i=0; i<arr.length; i++){
          newimages[i]=new Image();
          newimages[i].index = i;
          newimages[i].src=arr[i];
          newimages[i].onload = function () {
             n++;
              console.log(n);
              progressIb.style.width = n*(500/arr.length)+'px';
              O_Laocar.style.right = 500-n*(500/arr.length)+'px';
              O_Laotext.innerHTML = '老司机已经加载了%'+Math.floor(n*100/arr.length);
    
              if(n>=arr.length){
                  UPpreloaderDiv();
              }
          }
      }
    

}


![](http://upload-images.jianshu.io/upload_images/1698086-ba0220e8e407924a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

 
 
- 在水里游泳的时候,长按,或者不按 是会上下浮动的。。。
   




## 最后
说的比较简略,但是重难点已经提出来了,只要大家有耐心去做,一定也可以做出来的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容