经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
教你使用Cocos Creator制作国旗头像生成器,附源码!
来源:cnblogs  作者:张晓衡  时间:2019/9/26 10:31:12  对本文有异议

关注「编程小王子」公众号回复【头像生成器】获得源码!

下面我重点介绍一下Cocos Creator H5头像生成的实现方法:

file

  1. 获取手机相册图片
  2. 在 Cocos Creator 中加载相册图片
  3. Cocos Creator 屏幕截图
  4. 使用HMTL显示截屏图片
  5. 保存图片到相册

获取相册图片

要获取手机相册图片,需要使用浏览器 input 标签提供的能力,在桌面浏览器上则是浏览文件目录选择图片。

使用 document 动态创建 input HTML标签,并设置属性为type 为 file,accept 为"image/*",同时使用 CSS 控件一下 input 的位置

  1. let input = document.createElement("input");
  2. input.setAttribute('type', 'file');
  3. input.setAttribute('accept', 'image/*');
  4. input.setAttribute('style', 'position:absolute;margin-left:30%;margin-top:50px;-webkit-user-select:file')
  5. document.getElementsByTagName('body')[0].appendChild(input);

当选择好图片后,还需要监听 input 标签的 change 事件,我们好方便获取图片的数据:

  1. let oninput = (e) => {
  2. //拿到文件对象
  3. var file = e.target.files[0];
  4. //读取文件数据
  5. reader = new FileReader();
  6. reader.readAsDataURL(file);
  7. //文件加载成功以后,渲染到页面
  8. reader.onload = (e)=> {
  9. ...
  10. }
  11. }
  12. //监听input的change事件
  13. input.addEventListener('change', oninput);

在 Cocos Creator 中加载相册图片

FileReader 的 onload 回调事件中,我们将图片放入 HTML 的 img 标签中

  1. reader.onload = (e)=> {
  2. //创建一个img标签加载图片数据
  3. var img = document.createElement("img");
  4. img.src = e.target.result;
  5. //再通过img转换成Creator的Textures2D对象
  6. let texture = new cc.Texture2D();
  7. texture._nativeAsset = img;
  8. texture.on('load', () => {
  9. //最后设置到精灵上
  10. this.sprite.spriteFrame = new cc.SpriteFrame(texture);
  11. })
  12. }
  1. 创建 img 标签,将读取到的图片设置到 img.src 属性
  2. 创建 cc.Texture2D 对象,加载 img 中的纹理
  3. 当 Textrue2D 的 load 事件完成,就可以显示到精灵组件上了

这里需要注意,Cocos Creator 不能显示超过2048 * 2048的图片,你会发现直接在手机上使用手机拍的高清图片显示出来是一片黑色。

Cocos Creator 屏幕截图

设置头像的前景框非常简单,这里就不多说了,我看怎么把合成的图片保存下来。这里是参考的Cocos Creator的范例合集中capture_to_web的做法,简单修改了一下,点击按钮生成截图:

  1. save () {
  2. //创建 HTML canvas 标签保存图像数据
  3. this.createCanvas();
  4. //将canvas的图数据保存到HTML img元素上
  5. var img = this.createImg();
  6. //显示这个HTML img 元素
  7. this.showImage(img);
  8. this.iconBg.active = true;
  9. this.label.node.active = true;
  10. }

这里生点看下ShowImage这个函数,我在修改了范例合集的作法:

  1. showImage(img) {
  2. //var img = document.createElement("img");
  3. let offset = (cc.view._frameSize.width - this.srpite.node.width) / 2;
  4. let top = (cc.view._frameSize.height - this.srpite.node.width) / 2;
  5. cc.log('fs:', cc.view._frameSize.width);
  6. cc.log('offset:', offset, img.width);
  7. img.setAttribute('style', `position:absolute;margin-left:${offset}px ;margin-top:${top}px`);
  8. document.getElementsByTagName('body')[0].appendChild(img);
  9. this._img = img;
  10. }

上面的代码主要是计算 img 元素的位置,将它放到浏览器屏幕中间。

保存图片到相册

Cocos Creator 引擎在浏览器上是不能写文件的,因此我们上面是将图片用HTML img 显示,而不是用Sprite显示。我们在手机上长按 img 元素就可以调出浏览器的保存菜单了,在桌面浏览器上可以鼠标右键保存,也可以直接拖动到桌面上。

小结

使用 Cocos Creator 不仅可以开发游戏,也能制作有效的小应用,如果在头像上加载一些Shader特效是不是会更酷呢?

file

原文链接:http://www.cnblogs.com/creator-star/p/11589051.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号