开始接触 Cocos2dx3.15 - Lua

前端之家收集整理的这篇文章主要介绍了开始接触 Cocos2dx3.15 - Lua前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

话不多言,干货已经备全

mai.lua

  1. cc.FileUtils:getInstance():setPopupNotify(false)
  2.  
  3. require "config"
  4. require "cocos.init"
  5.  
  6. local function main()
  7. --require("app.MyApp"):create():run()
  8. local scene = require("MainMenu"):create()
  9. cc.Director:getInstance():runWithScene(scene)
  10. end
  11.  
  12. local status,msg = xpcall(main,__G__TRACKBACK__)
  13. if not status then
  14. print(msg)
  15. end

MainMenu.lua
  1. local MainMenu = class("MainMenu",function ()
  2. return cc.Scene:create()
  3. end)
  4.  
  5. function MainMenu.create()
  6. local scene = MainMenu.new()
  7. return scene
  8. end
  9.  
  10. function MainMenu:ctor()
  11. print("MainMenu function ctor")
  12. self:init()
  13. end
  14.  
  15. function MainMenu:init()
  16. print("MainMenu function init")
  17.  
  18. -- 创建层
  19. self:showUI()
  20.  
  21. -- 创建按钮
  22. self:addButton()
  23. end
  24.  
  25. function MainMenu:showUI()
  26. -- 添加图片
  27. local winSize = cc.Director:getInstance():getVisibleSize()
  28. local bg = cc.Sprite:create("HelloWorld.png")
  29. bg:setPosition(cc.p(winSize.width/2,winSize.height/2))
  30. self:addChild(bg)
  31.  
  32. -- 添加文字
  33. local label = cc.Label:createWithSystemFont("Hello Lua","Arial",40)
  34. self:addChild(label)
  35. label:setPosition(cc.p(winSize.width/2,winSize.height/2))
  36. end
  37.  
  38. function MainMenu:addButton()
  39. local winSize = cc.Director:getInstance():getWinSize()
  40. local spacing = 100;
  41.  
  42. -- MenuItemFont
  43. local menuItemFont = cc.MenuItemFont:create("btnStart")
  44. menuItemFont:setPosition(-winSize.width/2 + spacing,-winSize.height/2 + spacing)
  45. local function menuItemFontCallback(sender)
  46. print("menuItemFontCallback")
  47. end
  48. menuItemFont:registerScriptTapHandler(menuItemFontCallback)
  49.  
  50. -- MenuItemImage
  51. local normal = cc.MenuItemImage:create("btn_green.png","btn_blue.png")
  52. normal:setPosition(-winSize.width/2 + spacing,-winSize.height/2 + spacing * 2)
  53. normal:setTag(1)
  54. local function menuCallback(tag,menuItem)
  55. print("menuItem:" .. tag)
  56. end
  57. normal:registerScriptTapHandler(menuCallback)
  58.  
  59. -- MenuItemSprite
  60. local normalSprite = cc.Sprite:create("btn_blue.png")
  61. local selectedSprite = cc.Sprite:create("btn_green.png")
  62. local menuItemSprite = cc.MenuItemSprite:create(normalSprite,selectedSprite)
  63. menuItemSprite:setPosition(-winSize.width/2 + spacing,-winSize.height/2 + spacing * 3)
  64. local function menuItemSpriteCallback(sender)
  65. print("menuItemSpriteCallback")
  66. end
  67. menuItemSprite:registerScriptTapHandler(menuItemSpriteCallback)
  68.  
  69. --MenuItemToggle
  70. local onMenuItem = cc.MenuItemImage:create("mute_bg_on.png","mute_bg_on.png")
  71. local offMenuItem = cc.MenuItemImage:create("mute_bg_off.png","mute_bg_off.png")
  72. local menuItemToggle = cc.MenuItemToggle:create(onMenuItem,offMenuItem)
  73. menuItemToggle:setPosition(-winSize.width/2 + spacing,-winSize.height/2 + spacing * 4)
  74. local function menuItemToggleCallback(sender)
  75. print("menuItemToggleCallback")
  76. end
  77. menuItemToggle:registerScriptTapHandler(menuItemToggleCallback)
  78.  
  79. local menu = cc.Menu:create(menuItemFont,normal,menuItemSprite,menuItemToggle)
  80. menu:setPosition(cc.p(winSize.width/2,winSize.height/2))
  81. self:addChild(menu)
  82. end
  83.  
  84. function MainMenu:onButtonClicked()
  85. end
  86.  
  87. return MainMenu

运行结果:



从最初的C++ 语言编程,到开始接触 Lua, 还真是有许多的不适应:

1.书写代码没有调用接口的提示功能

2.接口参数不能确定数量及其类型,徐查找C++端接口代码

3.无法使用断点调试,只能通过打印日志定位问题


虽然有很多问题相较于以前的语言编程,但为啥还要用 Lua 脚本呢, 说到脚本,当然, Lua 有自己的有点:

1.Lua作为轻量级脚本语言,便于上手开发

2.最重要的是,使用Lua 便于实现热更新

猜你在找的Cocos2d-x相关文章