Qzone龙年春节彩蛋“会喷火的龙”制作揭秘


  一、背景

  今年春节Qzone做的春节活动是让用户许三个新年愿望(发表空间说说的方式),然后自己去拉好友来“赞”自己发的愿望,当每一个愿望积累“赞”的次数超过5次的时候就可以点亮龙身体的三分之一,当3个愿望都积累到的时候就可以全部点亮一条完整的龙,


  最终在Qzone个人中心的Feeds里面可以带上这条龙:


  当时我第一眼看见这条龙的设计稿脑中就浮现各种想法:“如果这条龙可以动起来将会是什么样子?如果它还会喷火?如果它可以把前面的名字烧红?如果它可以把黄钻的条点亮?如果它可以给大伙拜年?……”

  于是萌发出做一个彩蛋的念头……然后就一发不可收拾了……

  二、具体步骤

  大前提,为了照顾性能问题,采取的“默认显示龙静态图片,当鼠标移上图片的时候覆盖一个龙的喷火flash,当鼠标移到其他的龙的图片再动态修改flash坐标”这样的方案来实现一个flash让所有的静态龙都动起来的效果。

1、最开始要做的就是将这张静态图片


  大卸八块,在flash里面做一些拼接、翻转等动画让它动起来


  基本上被我拆分成了:头、嘴巴、爪子、腰、尾巴等几个部件,然后做了动画,播放起来就像飞着的龙站了起来:


变化到


  2、 默认情况下是在用户的名字后面跟着一张图片,给这个图片绑定了mouseover事件,当鼠标移上这张图片的时候触发显示龙喷火的动作:


  3、当鼠标移上这个龙的图片的时候,触发了显示事件,这个时候将龙的flash显示出来,浮在原来的龙上面,尽量地微调坐标进行对齐覆盖:


  4、为了可以让flash完全挡住原来的图片,需要将空间的背景色传到flash里面(因为空间的背景色可以因用户装扮而变):


  5、为了让体验更加顺畅,达到“鼠标移上龙的时候龙喷火,鼠标离开龙的时候停止”的效果,在龙flash的最顶层放了一个透明的按钮,加上事件:鼠标移上去的时候龙播放喷火效果,鼠标移除去的时候隐藏所有可见元素,同时flash通知js可以过3秒之后将这个flash从可视范围内移去:


  *我这里特别处理了一下,让透明按钮的尺寸略小于flash舞台的尺寸,是为了解决在两个龙直接鼠标快速切换会引发的bug(后面有讲到)

  6、为了让龙喷火的时候可以将名字烧红(寓意是红红火火),需要将名字传进flash里面,在flash创建一个textField实例来显示名字,同时需要有一个跟空间一样的背景色挡住原来的名字


  文字格式为“宋体,14号,右对齐,红色”


  并给textField的加上发橙黄的滤镜,达到类似被火烧红的效果,最后控制整个文字mov的动态显隐使到被火慢慢烧红:


  7、黄钻lv8的用户名称是一张金黄色的图片,当然要把它也一起烧红:


  由于在显示flash的时候这张图片就已经下载完毕了,所以我可以再一次将它加载进flash里面,然后做一些红色调的调整:


加了滤镜就变成


  实际效果如下:


  然后再动态控制显隐它渐显出来,叠加了原来的图片,看起来就像是被火慢慢地烧红。

  8、感觉如果可以加一些拜年的文字会不会更喜庆一些?而且刚好lv8黄钻条上面有位置,所以我在上面加了一个textField,用来随机显示一些拜年语句和跟龙有关的文字:


  当然,为了强调我要表达的寓意,进空间第一次mouseover到lv8用户的龙上面都会出现“龙年吉祥,红红火火”这一行字,之后的就随机了。


  大概有二十几种不同的文字吧。

  9、火焰是找了龙的设计师xiaoerhu同学打黑工特地额外给我画了几帧图片来做成逐帧动画:


  套上去就有喷火的效果了:


  10、对齐问题比较麻烦,因为龙flash是浮在原来的静态图片上面的,所以对不同浏览器要做绝对定位的微调,ie6/ie7/ie8/ie9 /safari/firefox/chrome都单独处理了一遍……(苦逼的前端开发)而且对ie6还要在flash里面对文字和龙的图片之间的位置做特殊调整,特别恶心。

  11、名字的背景需要跟进名字的的长度动态调整,这里我采取的方式是当鼠标以上静态图片的时候动态计算这个静态图片距离左边头像的距离来判断这个宽度应该是多少,然后传给flash去动态调整背景宽度:


  12、由于龙的flash是漂浮在原来的图片上面的,如果发生任何会让原来这条feeds位置发生变化的事情都会导致出现两条龙的窘境,所以在本次做彩蛋的时候我也地毯式地把能想到的会导致feeds位置发生变化的地方加了一个“IC_FEEDS_POSITION_CHANGE”自定义事件,然后在JS里面监听这个事件,当触发这个事件的时候重新调整一下龙flash的位置,避免出现这个bug。

  13、当两条龙之间距离很近的时候,鼠标可以快速在它们之间切换,这个时候我发现需要将触发显隐的按钮调整得略小于flash舞台的大小,才能保证每次mouseout都会触发,不然会导致第一条龙显示在第二个位置的bug:


所以才特意将这个触发显隐的按钮调小一些。


  14、这条龙从诞生到2月2号喷火的次数从统计数据显示日均已经达到千万级。

  三、总结

  这里引用facebook招股书里面提到的一点核心价值观—“敢于冒险”:

  敢于冒险

  开发优秀产品意味着承担风险。这可能会很令人担忧,使大多数公司不敢采取勇敢的措施。然而,在一个变化如此快速的世界里,如果不敢承担风险,你就注定会失败。我们还有另外一种观点:“最危险的事情就是不敢冒险。”我们鼓励所有人勇敢决策,即便这意味着错误。

  因为本次做这个彩蛋也是属于一种新的尝试,从一张静态图片引发出灵感再到后面的一步步实施和调试会发现需要解决的细节问题其实很多,一个看似很小的东西要把它做好也是需要付出很多的心思和精力,不过整个过程让人也很享受,由于很享受很陶醉,整个过程中我自测的效率也很高,基本上开发过程中就覆盖了 98%以上可能遇到的bug,包括2个龙之间快速切换的极限测试等等。

  最后引用产品同学的话:


  “兴趣是最好的工作动力”,也希望大家可以把兴趣和产品融合,创作出更多有意思的东西。

  如果有同学还没体验过这条龙的,请赶着这条龙下线前来我们Qzone里面看一下吧~

  作者:xiaoer

  文章来源:腾讯大讲堂

时间: 2024-10-31 15:15:30

Qzone龙年春节彩蛋“会喷火的龙”制作揭秘的相关文章

PhotoShop如何查看彩蛋?

  在我们常用的软件当中隐藏了一些小东东,这些小东东我们称之为复活节彩蛋(Easter Eggs).复活节彩蛋的内容包含得很广,从单纯地列出开发人员名单到3D影音游戏都有.我们常用的软件如Windows.Word和Excel以及我们用来上网的浏览器IE中都有这样的彩蛋. 在软件的"帮助"或"关于"中,一般都找不到这个软件开发组的名单,如项目经理.程序员.测试员等.难道开发者们想隐姓埋名吗?当然不是!这是由于许多软件公司的规定就是如此.不过开发者们很聪明,他们以另外的

【100亿次的挑战】之拜年红包和春晚彩蛋

  讲师:siyu   今天在这里和大家分享一下微信春节红包项目中几个可能"出乎意料"的几个产品:我称呼它们为"春节的彩蛋".   拜年红包从哪来?  2月17日,也就是除夕前一天,大概中午时候,大家会发现微信聊天界面附件栏中的红包icon变红了,同时单聊点击红包之后会出现两个选项:红包和拜年红包--拜年红包就这样悄悄上线了.这是我们埋在6.1客户端里的新产品.它从哪来?   在我加入广研的时候,2年前,那时候我对产品设计还没有什么经验,我被训练的第一条产品世界观就

微信那些表情雨彩蛋你可知道?整理了一下微信表情雨大全

前段时间,啤酒炸鸡挺火的,微信自然也不愿错过这个机会,在微信聊天的时候回复"炸鸡和啤酒",就有一些小白鸡从屏幕上方往下掉的动画效果,是不是很神奇?这算是微信表情雨彩蛋吗?还有哪些微信表情特效呢?和xmyanke一起看看微信表情雨大全吧! 输入"生日快乐"就有一大堆的蛋糕从天而降 2017春节的微信彩蛋关键词:鸡年大吉.福从天降.财源滚滚. 鸡年大吉 福从天降 财源滚滚 我想你了 下星星; 炸鸡和啤酒 下小白鸡; 生日快乐 下蛋糕; 恭喜发财 下钱袋; 么么哒 下心;

利用“PHP彩蛋”进行敏感信息获取

关于"PHP彩蛋"的说法也许很多老PHPer已经都知道或听说了,好像是早在PHP4版本的时候就有彩蛋了,挺好玩儿的,可能近年来逐渐被人们遗忘了,其实彩蛋功能在PHP脚本引擎默认情况下是开启. 写个phpinfo();然后访问,再加上以下的GET值即可查阅 下面就用Discuz官方论坛做一下测试: http://www.discuz.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 http://www.discuz.net/?=PHPE9568

介绍Dreamweaver cs3 两个彩蛋

dreamweaver 随着ADOBE CS3系列产品的亮相,我们最关注的Dreamweaver CS3也获得了最新的消息. 首先先来看看传统的Dreamweaver彩蛋是否还在. 第一个Dreamweaver彩蛋就是: 1,在网页中插入一张图像: 2,打开属性面板,在图像的缩略图上双击鼠标+Ctrl键 这里看到的头像即为开发Dreamweaver的相关人员. 第二个Dreamweaver彩蛋就是: 1,打开属性面板,在颜色文本框中输入文本"dreamweaver",回车确认 2,在D

介绍Dreamweaver cs3两个彩蛋

随着ADOBE CS3系列产品的亮相,我们最关注的Dreamweaver CS3也获得了最新的消息. 首先先来看看传统的Dreamweaver彩蛋是否还在. 第一个Dreamweaver彩蛋就是: 1,在网页中插入一张图像: 2,打开属性面板,在图像的缩略图上双击鼠标+Ctrl键 这里看到的头像即为开发Dreamweaver的相关人员. 第二个Dreamweaver彩蛋就是: 1,打开属性面板,在颜色文本框中输入文本"dreamweaver",回车确认 2,在Dreamweaver窗口

C++Builder中的复活节彩蛋

许多软件中都带有复活节彩蛋,也是程序员们辛苦工作时的一个小小乐趣吧.C++Builder和Delphi当然也不会例外.当您打开它们的about对话框后再按下以下的组合键: 1.小组人员名单 ALT+TEAM 2.R&D开发人员名单 ALT+DEVELOPERS 3.质量保证人员名单 ALT+QUALITY 您是不是也想在自己的软件中加上自己的复活节彩蛋呢?

XP风格复活节彩蛋的实现

如果您用过微软Office系列产品的话,一定会知道它们中很多在"关于"对话框中都隐藏了一些小功能,只有当用户点击某些特殊的键盘或鼠标按键时,这些功能才会显示出来(就象复活节彩蛋似的变出来).您象知道类似的功能是怎么实现的么?下面,我做了个示例程序,可以告诉您它们实现的基本原理(示例中采用了整套XP风格化的界面设计).如下图:其中图一为XP风格界面,图二为类似复活节彩蛋的实现界面. 图一 图二 基本构成思想: 实现原理很简单,初始时将隐藏的部分不显示出来(既限制对话框的高度,默认高度=总

寻找Windows 8系统虚拟键盘隐藏的那个彩蛋

无论是Surface Pro还是ThinkPad Tablet 2,亦或是提供触控屏的各类Windows 8设备们,微软都为它们提供了一个全新的虚拟触摸键盘,而在这看似貌不惊人的虚拟触摸键盘设计中,微软却埋藏了不少的方便用户日常使用的"小彩蛋". 在传统界面的任务栏中点击"触摸键盘"按钮,在打开的触摸键盘中点击"&123"就可以切换到数字键盘中,而微软设置的小彩蛋就隐藏在左侧的符号按钮中(如果在任务栏中无法直接打开触摸键盘,可以在任务栏中