Cocos2dx-lua functions

基于cocos2dx-lua 3.1 自己写的一些常用方法,现在分享出来,有不合理的地方还请指出来

–数组乱序
function XRLTools:arrayRandomSequence( array )
if not array or type(array) ~= “table” or #array < 2 then
print(“error array type !”)
return
end
local len = #array
for i=1,len do
math.randomseed(os.clock()+i)
local seed = math.random(1,len)
local seed2 = math.random(1,len)
local value = array[seed]
array[seed] = array[seed2]
array[seed2] = value
end
end

例如:local array = {1,2,3,4,5}
XRLTools:arrayRandomSequence( array )

–延时调用
function XRLTools:delaycall( time,callback )
if time <= 0 then
callback()
else
local delayAction = transition.sequence({
cc.DelayTime:create(time),
cc.CallFunc:create(callback),
})
local scene = display.getRunningScene()
scene:runAction(delayAction)
return delayAction
end
end

例如: XRLTools:delaycall( 1,function ( … )
print(“延时一秒打印”)
end)

–两区域是否重叠(可用于碰撞检测)
function XRLTools:rectIntersectsRect( A,B )
local rect1 = A:getBoundingBox()
local rect2 = B:getBoundingBox()
return cc.rectIntersectsRect(rect1, rect2)
end

–判断一个点是否落在一个node上面
function XRLTools:isTouchInNode(pt, node)
local s = node:getContentSize()
local rect
if s.width == 0 or s.height == 0 then
rect = cc.utils_:getCascadeBoundingBox(node)
else
pt = node:convertToNodeSpace(pt)
rect = cc.rect(0, 0, s.width, s.height)
end
if cc.rectContainsPoint(rect, pt) then
return true
end
return false
end


IOS Publish to the App store

写一个IOS 发布到appstore的流程供初学者参考。

第一步:登陆Apple developer 后台创建一个APP ID;

第二步:登陆APP Store Connect 选择 My App > ➕ > New App ,然后填一些信息,比如app name ,Platforms,Primary Language等,注意:SKU 的可以和Bundle ID相同,我一般都填一样的,方便记住。

第三步:完善app信息,比如app名字,副标题,分类,价格,截图,关键字,描述等等,需要注意的是Rating(评级)得跟app的内容符合,不然很容易被拒。

第四步:在Xcode打开你的项目,把build Configuration 改为Release,Bundle Identityicier改为你刚才创建APP ID时的bundle ID。然后完善一些信息,比如启动图,版本号,图标等,这里要注意的是图标不能带有透明通道。

第五步:点击product > Archive 等待编译完后会弹出一个页面,然后选择Distribute App,选择 iOS App Store 然后next,一路默认选择,一路next,最后点Upload,等待上传完成 。

第六步:上传成功后在Activity里就能看到你上传的版本了,在等大概10分钟左右,在Build里选择刚才上传的版本,然后点Submit for Review。如果app包涵广告,需要勾选Advertising Identifier,最后提交等待审核。

匆匆的写完了,写的很简单,有明白的地方或者不详细不正确地方可以联系我yang2686022430@163.com,也可以在评论区直接评论,我会在看到的第一时间回复你。《杰理的日记》是我发布的一款记事本软件,大家可以下载体验一下,虽然简单,但是“麻雀虽小,五脏俱全”。

cocos luacompile(coocs2d lua encrypt luac)

网上关于用cocos luacompile 把lua加密成luac的教程很多,我写在这里主要是方便自己查阅,废话不多说,在装好cocos环境后运行:cocos luacompile help 命令可以查看帮助。

cocos luacompile -s SRC_DIR_ARR  -d DST_DIR 该命令可以对lua文件简单的加密,直接这样加密很容易被解密,所以通常用下面的命令:

cocos luacompile -s SRC_DIR_ARR -d DST_DIR -e -k KEY -b SIGN –disable-compile

解释一下这几个参数-s 后的SRC_DIR_ARR 是资源路径即要加密文件的路径,-d 后的DST_DIR是输出的路径即加密后luac文件的路径, -e 后面可以不跟参数, -k 后的KEY是密匙,你自己设置一个字符串,复杂一点比较好, -b 后面的SIGN是签名,也是要自己设置一个字符串(在加密的文件中sign是明文)。执行完后会提示Compilation finished.说明成功了。

如果你设置了密匙和签名,还要在AppDelegate.cpp 中修改key和sign

LuaStack* stack = LuaEngine::getInstance()->getLuaStack();
stack->setXXTEAKeyAndSign(key, strlen(key), sign, strlen(sign));

如何生成xxx.fnt文件(Bitmap Font)

在游戏开发中(如:unity ,cocos等)我们经常会看到一些xxx.fnt的资源文件。这些文件是用来干什么的呢?它一般是用来显示玩家的金币数,倒计时等。今天来浅谈一下如何生成这种文件吧!得用到Bitmap Font Generator这个小工具。Windows下载

打开软件的界面是这样的,当鼠标在上面移动时,箭头指的地方会显示字符对应的ID,比如0的ID就是48。这个ID其实是一个十进制的Unicode编码,在线获取中文的unicode编码,比如:‘万’的unicode编码为:\u4e07,这还不是最终我们要的ID,还要将unicode编码的十六进制转换成十进制。(进制在线转换)如:4e07转换后为:19975,19975就是‘万’的ID,得到ID接下来看看怎么使用:

1.点击 Edit > open Image Manager 打开图片管理面板;
2.点击 Image > import image 选择要导入的图片,这时候你就看到有个地方让你填ID,你把我们最终得到的ID天就去点确认就好了;
3.点击 Options > Export options 打开导出设置面板,

注意红色箭头的地方要选对,其他的根据实际图片图设置。

4.点击 Options > Save bitmap font as … 给要生成的文件取个名字点击保存,然后你就看到生成了一个xxx.fnt 文件和一个 xxx_0.png的文件,把这两个文件拖到你的项目中就可以使用啦!!!

注意,注意,注意,重要的事情说三遍:导入的图片和路径都不能包含中文和空格,第二步点确认后还是没显示图片就请检查一下图片格式(不要只看后缀,之前就遇到一个坑,压缩的图片怎么都用不了,只好用ps重新导出)。

本文完!如果有不对或者不详细的地方请指出,链接的网站如有侵权请联系我删除。