前言

Cocos Code IDE(以下简称CCI)是一款基于Eclipse和LDT的代码编辑器,其主要面向Cocos2d-X Lua/JS/Quick-lua的开发

问题的产生

在开发过程中,我们新建一个lua文件,都需要

关键你复制了还需要把”ClassName”改成你要的

相当麻烦

So

我们有模板,在CCI中点击Windows->Preferences在左边选择Lua->Editor->Templates,单击”New”按钮

Name是触发字串,我们填newclass
Context选Lua
Description是提示信息,就叫”新建类”好了
Pattern:

当你键盘敲出newclass(等代码提示),啪一个回车,一个类就创建好了,还烙上了你的大名,绝对酷炫

这么看大致就懂了,各种宏的含义如下

${date},${time},${user}这就是日期,时间,作者(os的登录名),用来标识这个文件是何时谁创建的,追查问题精确到人
${module_short_name} 短文件名,比如我一个文件”app/views/LoginView.lua”,就可以取到”LoginView”

举一反三

在我的项目中还有很多快捷的模板
比如 function

比如newlayer

恩 剩下的看大家创造力了 有好用的记得在文章下回复~

由于没有找到有关egret性能测试的文章,决定自己动手测一下

测试方法

  • 下载egret-examples-1.5.0.zip 拷贝其中的monkey.son和monkey.png

  • 修改resource.json

  • 新建一个egret工程

  • 修改egretProperties.json中document_class为Test

  • 新建一个Test.ts

  • 代码如下

  • 发布

拷贝到自己服务器上用手机打开看看吧

说一下这边的测试结果

机型 个数 帧数
ip5s 200 45
ip5s 2000 8
ip5 200 48
红米Note4.4.2 200 7
三星G Note4 4.4.4 200 57

官方的一条FAQ

为什么Egret开发的游戏在某些Android设备上特别卡?

在 Android 早期版本( 4.4 之前) ,Android WebView 并不 100% 支持 HTML5 特性,如 WebGL、PageVisibility 、 WebSocket 等。

Google 为了解决这些问题,在 4.4 版本中,完全删除了原有的 WebView ,将其替换为了 chromium 架构的新 WebView。

由于这个修改的工作量过大,在部分特性在尚未全部完成的情况下,Android 就发布了 4.4.2 版本作为过渡,这导致了部分特性在 4.3版本是存在的,但是4.4.2 反而丢失了。 其中我们遇到的情况就是 Canvas 硬件加速特性丢失。

在 Android 4.4.4 版本中,google 完全完成了 WebView的架构迁移,Canvas硬件加速特性被重新置入 WebView中。

由于 HTML5 游戏依赖于 Canvas 渲染,而是否存在硬件加速对渲染结果有几十倍的差异,所以 HTML5游戏在 Android 4.4.2 系统上卡顿的问题由于操作系统限制,几乎不可能在应用层解决。

Egret是什么

简单来说,白鹭引擎就是一款用TypeScript开发的开源游戏引擎

它可以编译成HTML5直接在移动端的浏览器运行

或者编译成Android,iOS等(相信支持WP不是问题)原生应用

用他们自己的Egret runtime跑出接近原生APP的性能介绍是这样的,谁知道呢

 

优势

如今微信如(heng)日(xing)中(ba)天(dao),著名的”围住神经猫”就是用Egret编写的,易于传播是HTML5游戏的优势

可以做一些游戏的HTML5试玩版,让玩家过度新手教程,然后提示下载APP,推广效果绝对比”老婆不在家玩的游戏“效果好,而且导入的用户全都是优质用户让23:59分开服去死吧

 

正题

 进入官网 –> 进入下载页

可以看到Egret的工具链非常完善

其中Egret Engine是必须下载的

玩命地安装…

作者还是很幽默的…

关于egret命令

创建第一个工程

编译

运行

然后浏览器就打开了有木有(推荐Chrome)

但是要注意一点,ts不能直接运行,需要编译成js后才能被浏览器直接运行

 关于工具

Mac下推荐WebStorm.Windows下VS2013或者WebStorm都可以

题外话

个人觉得这款引擎潜力很大,但是毕竟刚刚起步,还有很多不完善的地方,举个栗子,官网引擎已经到1.5了,但是ios-support还是1.1.4,而工具对版本的一致性要求很高,导致同一批次下载的不同工具不能配合使用,需要降级引擎才能在ios上开发.

总之,移动开发是大方向,我也陪quick-x一路走来,现在quick-x也正式更名cocos-lua,也算大事一件,希望Egret越做越好吧!

在出现对话的时候,我们往往不希望文字一下子突然出现,于是有了这个需求

文字要慢慢的出现,但是点击时,一下子显示完

用法如下

 

有倒计时功能的标签这个还是挺常见的

直接上代码吧

用法如下

 

除了text外,display.newTTFLabel里的所有参数都有效
新增了time参数(单位毫秒),format参数(支持H M S),triggerTime参数(触发事件,不传时为0)
倒计时结束会触发TimerLabel.ON_COUNT_DOWN

2.x时代的CCControlButton的确十分方便,策划们也十分喜欢按下有缩放的效果

到了3.x的项目,工具链已经相当完善,我使用的是cocos2dx3.2+quick3.2rc1+cocos code ide 1.0.1+cocos studio 1.6(以下简称ccs)

在ccs里建立的按钮,到了程序里实际上是UIPushButton

从quick的源码可以看出,UIPushButton继承于UIButton,UIButton继承于cc.Node

那么按下弹起的效果就得自己写了,好在quick扩展的方式很方便

我用起来是全局的

在载入ccs之后,会遍历所有节点,找出node.__cname == “UIPushButton”的元素,然后UIButtonEx.extend(node); node:setPressedActionEnabled(true)就可以了

需要按钮放大的,把0.9改成1.1就行了

之前精灵变灰都用的是别人写的一个GraySprite,实在是有很多局限

后来有个需求是要让CCControlButton在不传disable状态图片的时候,自动把normal的图片变灰

查阅多方资料后,终于把问题搞定

  1. 在cocos2dx/shaders目录下新建一个ccShader_PositionTextureGray_frag.h
  2. 找到ccShaders.h,在最后加上
  3. 找到ccShaders.cpp,在最后加上
  4. 找到CCGLProgram.h在enum后面的define后加上
  5. 找到CCShaderCache.cpp,在开头enum的最后加上kCCShaderType_PositionTextureGray
  6. 继续在CCShaderCache.cpp的loadDefaultShaders()最后添加
  7. 继续在CCShaderCache.cpp的reloadDefaultShaders()最后添加
  8. 继续在CCShaderCache.cpp的loadDefaultShader(CCGLProgram *p, int type)最后添加一个case条件
  9. 新建一个ColorUtils.h
  10. 新建一个ColorUtils.cpp
  11. 使用
    对于CCSprite

    对于CCScale9Sprite

    remove亦然

 

As we all know. 苹果在iOS7.1中的Adhoc强制使用https链接,这下公司的小伙伴就不能愉快的通过内网下载安装测试包了

经过一番折腾,终于实现了自签署SSL证书让手机通过浏览器在线安装ipa

  • 1. 环境

    开发环境:Mac OS X 10.9.4+Xcode6Beta5

    服务器:CentOS 6.5 x64+apache2

  • 2. 客户端准备部署文件

    a)先去developer.apple.com申请证书和描述文件(adhoc,过程略去不表)
    b)将工程打包成ipa,如Demo.ipa,准备一个Icon.png和一个Icon@2x.png
    c)建立Demo.plist文件


    d)上传Demo.ipa,Demo.plist,Icon.png,Icon@2x.png到/var/www/html/ipa目录下备用
  • 3.服务端配置

    a)安装openssl


    b)生成证书

    c)配置apache

    d)将生成的my-ca.crt拷贝到/var/www/html/ipa目录下备用
  • 4. Let’s Go!

    a)在iOS设备上打开safari访问,https://www.your-domain.com/ipa/my-ca.crt,信任并安装
    b)在iOS设备上打开safari访问,itms-services://?action=download-manifest&url=https://www.your-domain.com/ipa/Demo.plist

  • 5. 还有什么?

    a)安装设备的udid需要在描述文件里
    b)做一个网页,引导用户先安装crt,再点击itms-service


     

来自于CocosCodeIDE技术交流群”文件夹”同学

 

这个需求来自于工作中的一个需求

两个城池之间的路径是美术事先画好的,武将需要沿着画好的曲线行进

经过查找资料,发现了这篇文章

用到了下面这个公式:
阶贝塞尔曲线可如下推断。给定点P0、P1、…、Pn,其贝塞尔曲线即
贝塞尔曲线公式高阶曲线为建构高阶曲线,便需要相应更多的中介点。对于三次曲线,可由线性贝塞尔曲线描述的中介点Q0、Q1、Q2,和由二次曲线描述的点R0、R1所建构:
三次贝塞尔曲线

对于四次曲线,可由线性贝塞尔曲线描述的中介点Q0、Q1、Q2、Q3,由二次贝塞尔曲线描述的点R0、R1、R2,和由三次贝塞尔曲线描述的点S0、S1所建构:
四次贝塞尔曲线

更复杂的:
五次贝塞尔曲线

参考资料

以下为lua的实现方式,参考了上文中的c++算法,并没有考虑在极为高阶的情况下的性能问题

代码基于quick-cocos2d-x 2.2.5编写(谁叫他快呢)

 

 

最后放一张效果图