入坑cocos之菜鸟瞎喷

来源:互联网 发布:淘宝排版软件 编辑:程序博客网 时间:2024/04/30 22:44

cocos API:http://api.cocos.org/
cocos 官网:http://www.cocos.com/
cocos3.10(cocos2d-x+cocos studio +cocos)下载:
http://pan.baidu.com/s/1kVL20Hx 密码:vked

cocos作为一个游戏引擎在2D方面获得一片赞誉,不过也是骂声也是不少。
刚刚上手cocos2d-x 3.10 lua碰到了几个问题记录于此

新建项目之后print无输出,运行错误也不提示错信息。

AppDelegate.cpp文件中

auto engine = LuaEngine::getInstance();后边加上engine->executeString("print = release_print");

获取不到lua文件,require报错

在main.lua文件首行加入

local p = "/src/app/views/"local m_package_path = package.pathpackage.path = string.format("%s?.lua;%s?/init.lua;%s", p, p, m_package_path)

改变不了游戏方向

src文件夹下config.lua中把代码中的width和height的数值就行对调即可调整方向,同时也可以改变分辨率(ps:自己摸索的,若有不对请多指教)

CC_DESIGN_RESOLUTION = {    width = 960,    height = 640,    autoscale = "SHOW_ALL",    callback = function(framesize)        local ratio = framesize.width / framesize.height        if ratio <= 1.34 then            -- iPad 768*1024(1536*2048) is 4:3 screen            return {autoscale = "SHOW_ALL"}        end    end}

场景跳转

或许是我场景写法不对就是跳转场景跳转失败
我使用了enterScene方法

self:getApp():enterScene("GameScene")

android返回键监听

在网上找了好多都不好用,就这个可以,
把返回的layer添加到当前的scene中就行了

function MainScene:keyCode( ... )  local layer = cc.Layer:create()    print("返回键监听")     --回调方法    local function onrelease(code, event)        if code == cc.KeyCode.KEY_BACK then              print("你点击了返回键")               cc.Director:getInstance():endToLua()        elseif code == cc.KeyCode.KEY_HOME then            print("你点击了HOME键")            cc.Director:getInstance():endToLua()        end    end     --监听手机返回键    local listener = cc.EventListenerKeyboard:create()    listener:registerScriptHandler(onrelease, cc.Handler.EVENT_KEYBOARD_RELEASED)    --lua中得回调,分清谁绑定,监听谁,事件类型是什么    local eventDispatcher =layer:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listener,layer)    return layer end

获取csb中的控件

--加载csb文件MainScene.RESOURCE_FILENAME = "MainScene.csb"-- 获取UI控件  ["csb文件中的控件名"]   = {["varname"] = "变量名",这里有一个坑,这个方法不能绑定所有的node,只是绑定了首层的node,获取不到二层及以下的节点MainScene.RESOURCE_BINDING = {   ["ButStart"]   = {["varname"] = "startBtn"},}

VS编译后没后cmd窗口(黑窗口)

在cocos项目目录中的\frameworks\runtime-src\proj.win32中有一个
SimulatorWin.cpp 文件把文件中这一行的0改为大于0的数值即可

#define SIMULATOR_WITH_CONSOLE_AND_MENU 0