精华内容
下载资源
问答
  • Cocos2d-Lua-Community是Cocos2d-x 4.0的改进,并且易于使用Lua游戏引擎。 它是与Quick-Cocos2dx-Community v3.7.x兼容的Lua“框架”。 得到帮助 QQ群: 社区版千人群(1群)号:361920466 社区版2群:138934064 ...
  • cocos2d-lua 实现富文本

    2016-08-19 20:13:28
    cocos2d-lua 实现富文本
  • cocos2d-x+lua游戏demo源码

    热门讨论 2013-07-24 16:39:48
    cocos2d-x+lua游戏demo源码 xcode工程
  • cocos2d-lua整合到原生iOS工程,可以直接打开Lua脚本的游戏
  • Cocos2d实现刮刮卡效果

    2020-10-17 14:52:43
    主要为大家详细介绍了Cocos2d实现刮刮卡效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • cocos2d-lua:退出游戏

    2020-06-29 15:22:10
    function exitGame() local platform = cc.Application:getInstance():getTargetPlatform() if platform == cc.PLATFORM_OS_IPHONE or platform == cc.PLATFORM_OS_IPAD then -- iOS设备 os.exit() ...
    function exitGame()
        local platform = cc.Application:getInstance():getTargetPlatform()
        if platform == cc.PLATFORM_OS_IPHONE or platform == cc.PLATFORM_OS_IPAD then  -- iOS设备
            os.exit()
        else
            cc.Director:getInstance():endToLua()
        end
    end

     

    展开全文
  • shader编写,在lua层实现卡牌搓牌带3D弧边搓牌、翻牌效果。
  • Cocos2d Lua开发环境完全搭建-附件资源
  • Cocos2d lua 破解方案集合

    千次阅读 2020-10-25 09:33:22
    Lua游戏逆向及破解方法介绍 来自 <https://www.freebuf.com/articles/system/103388.html> Lua游戏逆向及破解方法介绍 来自 <http://gad.qq.com/article/detail/21645> [原创]浅析android...

    Lua游戏逆向及破解方法介绍

     

    来自 <https://www.freebuf.com/articles/system/103388.html>

     

    Lua游戏逆向及破解方法介绍

     

    来自 <http://gad.qq.com/article/detail/21645>

     

     

    [原创]浅析android手游lua脚本的加密与解密

     

    来自 <https://bbs.pediy.com/thread-216969.htm>

     

     

    cocos2d-LUA逆向之用idaPro调试so库获取xxtea解密key

     

    来自 <https://blog.csdn.net/zzwlpx/article/details/80543490>

     

    cocos2d android分析之-libcocos2dlua.so库

     

    来自 <https://blog.csdn.net/mydreamremindme/article/details/51065342>

     

     

    记一次棋牌游戏 cocos2d-x LUA脚本解密

     

    来自 <https://blog.csdn.net/lwanttowin/article/details/80628835>

    展开全文
  • lua2js4cocos lua转换为cocos的javascript cocos2dx-luacocos2dx-js 将lua文件放入输入中运行lua2js.py脚本,该js文件将在输出中生成。
  • coocs2d核心编程代码。。。lua。。游戏开发,包含各种核心编程第二版demo
  • [cocos2d_lua]cocos2d_lua中的框架MVC

    千次阅读 2015-05-13 00:24:26
    MVC简介 MVC,即Model View Controller。Model(模型),一般负责数据的处理;View(视图),一般负责界面的显示;Controller(控制器),一般负责前端的逻辑处理。拿一款手机游戏来说,界面UI的...其中cocos、Controlle...

    MVC简介

    MVC,即Model View Controller。Model(模型),一般负责数据的处理View(视图),一般负责界面的显示;Controller(控制器),一般负责前端的逻辑处理。拿一款手机游戏来说,界面UI的显示、布局等就是View负责;点击了按钮,手势的滑动等操作由Controller来处理;游戏中需要的数据资源就交给Model。 


    其中cocos、Controller、Model、View这个不用多说,Event里面保存的全局消息类型Managers是用于管理游戏中的东东的,比如管理资源,管理各种场景切换,层的切换等等。Utilities提供一些工具类,比如字符串的处理等。大家也可以根据自己的需求来定制目录,比如定义一个NetCenter文件夹,专门用于处理网络的。本例子中没有用到数据操作和工具类,所以这两个文件夹为空。

    流程实例

    我们以游戏的运行流程为线索来展开说明。运行项目,进入到main.lua文件,来看看main函数:

    local function main()
        collectgarbage(collect)
        -- avoid memory leak
        collectgarbage(setpause, 100)
        collectgarbage(setstepmul, 5000)
     
        -- initialize director
        local director = cc.Director:getInstance()
     
        --turn on display FPS
        director:setDisplayStats(true)
     
        --set FPS. the default value is 1.0/60 if you don't call this
        director:setAnimationInterval(1.0 / 60)
         
        cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(320, 480, 1)
         
        --create scene 
        local scene = require(GameScene)
        local gameScene = scene:startGame()
     
    end

    我们最后调用了GameScene类中的startGame函数,来看看GameScene这个类:

    require(Managers.SceneManager)
    require(Managers.LayerManager)
     
    local GameScene = class(GameScene)
    local scene = nil
     
    function GameScene:startGame()
        --初始化
        scene = cc.Scene:create()
        if cc.Director:getInstance():getRunningScene() then
            cc.Director:getInstance():replaceScene(scene)
        else
            cc.Director:getInstance():runWithScene(scene)
        end
        SceneManager:initLayer(scene)
        self:enterGame()
    end
     
    function GameScene:enterGame()
        LayerManager:getInstance():gotoLayerByType(LAYER_TYPE_MAIN)
    end
     
    return GameScene

    在startGame函数中,我们创建了一个空场景,然后调用SceneManager场景管理器来初始化场景。最后调用enterGame函数正式进入游戏主界面,其中enterGame函数中又有一个LayerManager层管理器。我们来看看这两个管理器是如何工作的。先看看SceneManager:

    --场景管理器
    SceneManager = {}
     
    --背景层
    bgLayer = nil
    --游戏层
    gameLayer = nil
    --弹窗层
    panelLayer = nil
     
    function SceneManager:initLayer(scene)
        bgLayer = cc.Layer:create()
        scene:addChild(bgLayer)
         
        gameLayer = cc.Layer:create()
        scene:addChild(gameLayer)
         
        panelLayer = cc.Layer:create()
        scene:addChild(panelLayer)
    end

    很简单,按顺序初始化了三个空Layer。再来看看LayerManager管理器:

    --Layer管理器
    LayerManager = {}
     
    LAYER_TYPE_MAIN = LAYER_TYPE_MAIN
     
    local curLayer = nil
     
    function LayerManager:new(o)
        o = o or {}
        setmetatable(o,self)
        self.__index = self
        return o
    end
     
    function LayerManager:getInstance()
        if self.instance == nil then
            self.instance = self:new()
        end
         
        return self.instance
    end
     
    function LayerManager:gotoLayerByType(type)
        if curLayer ~= nil then
            curLayer:destroy()
        end
         
        if type == LAYER_TYPE_MAIN then
            local layer = require(Controller.MainLayerController):create()
            curLayer = layer
        end
    end

    看看gotoLayerByType这个函数,首先切换层的时候,看看当前层是否为空,不为空就删掉。然后根据传递过来的参数来判断要切换到哪个层。这里出现MVC中的Controller部分,看看是什么情况。这里调用了类MainLayerController中的create函数

    function MainLayerC:create()
        local layer = MainLayerC:new()
        return layer
    end
     
    function MainLayerC:ctor()
        self:createUI()--创建界面
        self:addBtnEventListener()--添加按钮监听
    end
     
    function MainLayerC:createUI()
        local layer = require(View.MainLayerView)
        self.mainLayer = layer:createUI()
        gameLayer:addChild(self.mainLayer)
    end

    这里我们又发现了MVC中的View,在createUI函数中,我们调用了类MainLayerView的createUI函数,并将其添加到场景的游戏层中。我们来看看MainLayerView这个类。

    local eventDispatcher = cc.Director:getInstance():getEventDispatcher()
     
    local MainLayerV = class(MainLayerView,function()
        return cc.Layer:create()
    end)
     
    function MainLayerV:createUI()
        local mainLayer = MainLayerV:new()
        return mainLayer
    end
     
    function MainLayerV:ctor()
        self:initUI()
    end
     
    function MainLayerV:initUI()
        local winSize = cc.Director:getInstance():getWinSize()
        self.bg = cc.Sprite:create(ResManager.main_bg)
        self.bg:setPosition(winSize.width / 2,winSize.height / 2)
        self:addChild(self.bg)
         
        local function menuCallback(tag,menuItem)
            local event = cc.EventCustom:new(EVENT_CLICK_MENU_MAIN)
            event._usedata = tag
            eventDispatcher:dispatchEvent(event)
        end
         
        self.btnItem1 = cc.MenuItemImage:create(ResManager.main_btn1,ResManager.main_btn1,ResManager.main_btn1)
        self.btnItem1:setPosition(winSize.width / 2,winSize.height / 3)
        self.btnItem1:setTag(1)
        self.btnItem1:registerScriptTapHandler(menuCallback)
         
        self.btnItem2 = cc.MenuItemImage:create(ResManager.main_btn2,ResManager.main_btn2)
        self.btnItem2:setPosition(winSize.width / 2,winSize.height / 2)
        self.btnItem2:setTag(2)
        self.btnItem2:registerScriptTapHandler(menuCallback)
         
        self.btnItem3 = cc.MenuItemImage:create(ResManager.main_btn3,ResManager.main_btn3)
        self.btnItem3:setPosition(winSize.width / 2,winSize.height / 3 * 2)
        self.btnItem3:setTag(3)
        self.btnItem3:registerScriptTapHandler(menuCallback)
         
        --创建菜单
        self.menu = cc.Menu:create(self.btnItem1,self.btnItem2,self.btnItem3)
        self.menu:setPosition(0,0)
        self:addChild(self.menu)
    end
     
    return MainLayerV

    可以看到,我们在主界面中添加了一张背景图和三个按钮。我们是通过资源管理器ResManager来管理游戏中的素材的,ResManager文件很简单:

    --资源管理器
    ResManager = {}
     
    --主界面
    ResManager.main_bg = bg_big.png
    ResManager.main_btn1 = cell.png
    ResManager.main_btn2 = cell2.png
    ResManager.main_btn3 = cell3.png

    这样做的好处是,如果图片改了名字或者换了路径等,只需要在这里改一次就可以了。
    可以看到我们给三个按钮注册了响应函数menuCallback,在这个函数中,就是MVC中的V和C之间的“沟通”了。我们定义了一个自定义事件EVENT_CLICK_MENU_MAIN,并给这个事件添加了一个附带参数_usedata,这个参数保存的是三个按钮的tag。然后将这个事件发送给他的监听者。这里大家应该明白了,我们在对应的Controller中注册了EVENT_CLICK_MENU_MAIN的监听,但有这个事件发过来时,我们就响应。根据事件携带的参数_usedata,我们就知道了在View中,玩家点击了哪个按钮,这样做的好处是,保证了每个界面只有一个消息,我们只需要根据这个消息携带的附加参数来判断具体的事件,从而减少了消息个数,这样有助于游戏的效率。另外,我们在响应这个消息的时候,也会做一定的优化,来看看类MainLayerController的响应函数:

    function MainLayerC:addBtnEventListener()
        --按钮事件处理
        local function eventBtnListener(event)
           local eventNum = event._usedata
           local switch = {
               [1] = function()
                    print(Btn one)
               end,
               [2] = function()
                    print(Btn two)
               end,
               [3] = function()
                    print(Btn three)
               end
           }
           switch[eventNum]()
        end
        --注册事件处理
        self._eventBtnListener = cc.EventListenerCustom:create(EVENT_CLICK_MENU_MAIN,eventBtnListener)
        eventDispatcher:addEventListenerWithSceneGraphPriority(self._eventBtnListener,self.mainLayer)
    end

    可以看到实际情况,我们并不需要对传递过来的参数进行判断,而是定义了一个函数数组,直接根据下标来调用对应的消息响应。之后继续通过各种管理器来对游戏内容进行变化,方式和MainLayerController和MainLayerView差不多。

    cocos2dx-lua框架流程

    很多学习者甚至不知道enterScene(“MainScene”) 为什么里面可以是个字符串?

    新建cocos2dx-Lua工程之后,你首先看到的main.lua启动到MyApp.lua。

    require("app.MyApp").new():run()  

    看MyApp.lua文件:

    1. require(“app.MyApp”)
    这里执行的MyApp.lua的代码是:

    local MyApp = class("MyApp", cc.mvc.AppBase)  -- 继承cc.mvc.AppBase
    return MyApp

    这时候,你得到了MyApp这个类(lua关于类的实现网上很多)
    2. require(“app.MyApp”).new()
    MyApp.new()执行后,执行的代码是:

     

    function MyApp:ctor()
        MyApp.super.ctor(self)
    end

    为什么new()了之后会执行MyApp:ctor()?请看function.lua下的function class(classname, super)方法:

     

    function cls.new(...)
                local instance = cls.__create(...)
                -- copy fields from class to native object
                for k,v in pairs(cls) do instance[k] = v end
                instance.class = cls
                instance:ctor(...)
                return instance
    end

    可以看到,在class的实现方法里面,给每个创建的类声明了一个new()方法,方法里面调用了ctor()构造方法(ctor只是个名字,所以不是有些人认为的new了之后,当然会调用构造方法,lua没有类,只是我们模仿了类)
    3. require(“app.MyApp”).new():run()
    这时候调用了

     

    function MyApp:run()
        CCFileUtils:sharedFileUtils():addSearchPath("res/")
        self:enterScene("MainScene")
    end

    所以进到了MainScene.lua。
    对于MyApp.lua文件,如果我修改成下面的样子,是不是你就理解了上面所做的事情:

     

    -- 声明类
    MyApp = class("MyApp", cc.mvc.AppBase) 
     
    --- 类构造方法
    --
    function MyApp:ctor()
        MyApp.super.ctor(self)
    end
     
    --- 对应cpp版的static create()方法
    --
    function MyApp:create()
        local myApp = MyApp.new()
        myApp:init()
    end
     
    --- 你自己的方法
    -- @param self 
    --
    local function launchMainScene(self)
        CCFileUtils:sharedFileUtils():addSearchPath("res/")
        self:enterScene("MainScene")
    end
     
    --- init 方法
    --
    function MyApp:init()
        -- add code here
        launchMainScene(self)
    end

    对应的main.lua将原来的require(“app.MyApp”).new():run()
    修改为:

     

    require("app.MyApp")
    MyApp:create()

    这样你是不是更容易理解了,哈哈。
    4. MainScene.lua
    enterScene(“MainScene”) 为什么可以切换场景?
    我们看下MyApp的父类AppBase里面:

     

    function AppBase:enterScene(sceneName, args, transitionType, time, more)
        local scenePackageName = self. packageRoot .. ".scenes." .. sceneName
        local sceneClass = require(scenePackageName)
        local scene = sceneClass.new(unpack(totable(args)))
        display.replaceScene(scene, transitionType, time, more)
    end

    这样你能理解了为什么连require文件都没有就能调用MainScene,当然你要留意下,它require时候的文件路径,scene默认写的app/scenes文件夹。好了,其他的应该按照上面的思路基本都能知道为什么了

     

    Lua的MVC框架Sailor

     

    Sailor 是一个 Lua 语言的 MVC 编程框架。支持跨平台,兼容 mod_lua 或者 mod_pLua, Nginx 的 ngx_lua, 或者任何支持 CGI 的 Web 服务器,如 Civetweb 或者 Mongoose, 前提是必须有 CGILua。使用 Sailor 开发应用的目录结构如下:

     

    • /conf - 存放配置文件
    • /controllers - 控制器
    • /layouts - 布局文件
    • /models - 模型
    • /pub - 静态文件
    • /runtime - 运行时生成的临时文件
    • /views - .lp 视图文件

     

    展开全文
  • cocos2d-x实战_lua

    2017-01-07 17:49:02
    cocos2d-x实战_lua
  • 热更流程技术和断点续传重构整合。纯Lua框架设计理念与实现。 可无缝集成到自己的框架产品,且功能演示与测试完善。
  • 格斗横版过关类手游,亲测Xcode10编译通过,quick cocos开发的,里面一些开发思想可以拿来参考
  • Cocos2d-x实战lua

    2016-05-27 10:11:20
    最新版的cocos2d-x实战 lua卷,分享给大家
  • quick-cocos2d-x3.3 lua开发曹操传源码,可编译通过 引擎版本:Cocos2dx-lua 3.3 语言:纯lua实现,逻辑代码大约2W多行,剧情脚本+数据大约7W多行(采用脚本进行转换的)
  • Cocos2d-lua(三)认识Cocos2d-lua

    千次阅读 2016-10-25 14:19:14
    简单了解下Cocos2d-lua,它的前世我记不清了,今生我还是了解,Cocos 的官网:http://www.cocos.com/,我第一次知道Cocos的时候是在2014年8月,当时cocos2d-x 3.0已经出来了,2 到3引擎修改了很多(具体的可以到官网...

      简单了解下Cocos2d-lua,它的前世我记不清了,今生我还是了解,Cocos 的官网:http://www.cocos.com/,我第一次知道Cocos的时候是在2014年8月,当时cocos2d-x 3.0已经出来了,2 到3引擎修改了很多(具体的可以到官网看看)。在工作时经常有2版本的,现在很少用2版本开发了,如果有,多半工作是维护优化(改修改别的代码是比较恶心的,我也是拒绝的),添加新功能(还好),现在大部分都用3.0以上的。cocos2d可以3种语言来开发,分别有Cocos2d-x(c++)、Cocos2d-lua(lua)、Cocos2d-js (js)。


    一、简单了解

    • Cocos2d-x:开发语言C++,运行快,开发慢,不能热更新,适合单机游戏,休闲游戏。
    • Cocos2d-lua:开发语言Lua(脚本语言),开发快,可以热更新,适合网络游戏,现在大部分游戏都会选择Cocos2d-lua开发。
    • Cocos2d-js:开发语言Js(脚本语言),开发快,可以热更新,支持浏览器,适合网页游戏。
    注:1.热更新:不需要重新下载安装包,直接下载修改后的文件,具体的优势和添加热更新功能会单独来讲解。

           2.Cocos2d-js和Cocos2d-lua都是基于Cocos2d-x开发的,所以首先得了解Cocos2d-x的引擎框架。


    二、认识Cocos2d-lua项目目录

    • frameworks:框架,cocos2d-x引擎框架库和各个平台工程。
    • obj,runtime,simulator:vs运行后所产生的文件夹(runtime:运行时的文件;simulator:模拟器运行的文件)。
    • res:资源目录,包含图片,音乐,音效,字体等。
    • src:lua代码目录,包含封装Cocos2d-x的lua库,自己开发的lua文件。
    • config.json:游戏配置文件。
    • lua.config,lua.luaproj:创建lua项目时产生的文件

    三、程序入口

    • AppDelegate.cpp里会调用main.lua,所以,main.lua就是lua的程序入口。
    if (engine->executeScriptFile("src/main.lua")) //main.lua,就是lua的程序入口
        {
            return false;
        }

     
    
    • main.lua
    cc.FileUtils:getInstance():setPopupNotify(false)
    --添加搜索路径
    cc.FileUtils:getInstance():addSearchPath("src/") 
    cc.FileUtils:getInstance():addSearchPath("res/")
    --导入lua文件
    require "config"      
    require "cocos.init" 
    local function main()
        require("app.MyApp"):create():run()  --create,创建主场景,run,运行主场景, MainScene主场景,
    end
    --调用main函数
    local status, msg = xpcall(main, __G__TRACKBACK__)
    if not status then
        print(msg)
    end

     
    
    • MyApp.lua
    --创建了MyApp类,继承了AppBase(packages/mvc/AppBase.lua)
    local MyApp = class("MyApp", cc.load("mvc").AppBase)
    function MyApp:onCreate()
        math.randomseed(os.time())  --随机数种子
    end
    return MyApp

    • MainScene.lua
    --MainScene类,继承ViewBase
    local MainScene = class("MainScene", cc.load("mvc").ViewBase)
    function MainScene:onCreate()
        -- 添加背景
        display.newSprite("HelloWorld.png")
            :move(display.center)
            :addTo(self)
     -- 添加文本
        cc.Label:createWithSystemFont("Hello World", "Arial", 40)
            :move(display.cx, display.cy + 200)
            :addTo(self)
    end
    return MainScene
    


    下面我们就在MainScene类的onCreate函数中添加CocosStudio导出的UI界面,对于CocosStudio制作UI界面可以看CocosStudio分类下的教程,写得不好,大家多给建议,共勉。








    展开全文
  • cocos2d 圆周运动 c++到lua的封装
  • 全套Lua学脚本经典视频教程零基础入门学习(cocos2d-x游戏开发)
  • 一直苦于cocos lua没有代码提示,用python脚本输出一份代码提示,api来源cocos引擎下的cocos2d-x/cocos/scripting/lua-bindings/auto/api文件夹 # author toji #!/usr/bin/python # -*- coding: UTF-8 -*- import...
  • cocos2d lua 学习文档

    千次阅读 2016-10-11 18:32:09
    游戏 : 2048  功能 : 开始 ,进入游戏 ,设置 ,分数系统,任务系统,金币系统 , 待开发(背包,抽奖,签到,以及sdk和分享) 游戏源码地址: https://github.com/liqiangxo/gametest 看过的...
  • cocos2d-lua基础

    2021-04-14 17:05:06
    cocos2d-lua 一.核心概念 场景:scene,在特定时间、特定地点发生的事件的集合,可以看作是一个容器,包含各种游戏的元素 层:图层(一个场景可以有多个层,一个场景至少有一个层) 精灵:sprite,在屏幕上移动的...
  • cocos2d lua 列表基本用法 ListView

    千次阅读 2018-08-18 15:43:13
    local listView = ccui.ListView:create() listView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL) -- 设置方向为垂直方向 listView:setBounceEnabled(true) -- 滑动惯性 ...
  • cocos2d lua 富文本

    千次阅读 2018-08-18 15:05:11
    self.rich_text = ccui.RichText:create()  self.rich_text:setContentSize(cc.size(rich_rect.width, rich_rect.height))  self.rich_text:ignoreContentAdaptWithSize(false)  self.rich_text:setAn...
  • Cocos2d-x Cocos2d-JS Cocos2d-lua概述

    千次阅读 2016-08-23 16:53:18
    Cocos2d-x Cocos2d-JS Cocos2d-lua概述
  • 总体思路:用cocos2d自带的phthon脚本生成工程,cocos2d自带lua虚拟机,通过babelua插件显示已经创建的lua工程 然后通过代码中增加lua-cocos2d的接口来创建工程 1. 安装visual studio 2013 ...
  • vscode调试cocos2d lua工程

    千次阅读 2018-08-13 21:30:19
    安装插件luaide,免费版可使用luaide-lite 选择调试--配置   "version": "0.2.0", "configurations"...Cocos2-launch", "type": "lua", "re
  • cocos2d-x Lua 接入SDK

    2019-11-05 11:28:56
    我使用cocos2d-x3.10版本,lua语创建的项目。(由于是第一次接入踩了不少坑,经验很重要啊,本篇只对于第一次接入SDK的朋友有帮助,可以大概的了解下流程,不喜勿喷。) 2.大概流程 每个平台都会有一个接入包给你,...
  • cocos2d-lua引擎版本 cocos2d-x官方版:https://www.cocos.com/cocos2dx Quick-Cocos2dx-Community:http://www.cocos2d-lua.org/ Cocos-lua(重写tolua值得借鉴):https://github.com/zhongfq/cocos-lua UI编辑器 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,062
精华内容 5,624
关键字:

cocos2dxlua游戏