Quantcast
Channel: Android*
Viewing all articles
Browse latest Browse all 531

quick-cocos2d-x 游戏开发 [15] —— 项目结构分析、创建新场景

$
0
0

创建完一个新项目之后,我们可以简单的看一看这个项目的文件组成,有这么一个文件层次结构

几个proj.*文件夹就不用说了,是对应的平台的解决方案,res专门存放我们的游戏资源,scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类,我们主要常用的就两个文件夹,res和scripts(我这不是废话吗)

 

好吧,还是再打开scripts文件夹看下,

该文件下有main.lua,它是程序lua脚本的启动文件

  1. function __G__TRACKBACK__(errorMessage)  
  2.     print("----------------------------------------")  
  3.     print("LUA ERROR: " .. tostring(errorMessage) .. "\n")  
  4.     print(debug.traceback("", 2))  
  5.     print("----------------------------------------")  
  6. end  
  7.   
  8. require("app.MyApp").new():run()  --启动后执行MyApp脚本  

 

启动后,执行MyApp脚本,并且调用run函数

  1. require("config")  
  2. require("framework.init")  
  3.   
  4. local MyApp = class("MyApp", cc.mvc.AppBase)  
  5.   
  6. function MyApp:ctor()  
  7.     MyApp.super.ctor(self)  
  8. end  
  9.   
  10. function MyApp:run()  
  11.     CCFileUtils:sharedFileUtils():addSearchPath("res/")  
  12.     self:enterScene("MainScene")  
  13. end  
  14.   
  15. return MyApp  

 

在run函数中,首先设置了文件资源的搜索路径,设置为res文件夹,接着进入第一个场景,也是脚本给我提供的MainScene.lua,在进入游戏画面前,程序还会初始化一些事情,可以看到第一行代码引入了config.lua,我们可以再接着打开config.lua文件

  1. -- 0 - 不输出任何调试信息, 1 - 输出基本的调试信息, 2 - 输出详细的调试信息  
  2. DEBUG = 1  
  3.   
  4. -- 设置是否在画面中显示渲染帧率等信息  
  5. DEBUG_FPS = true  
  6.   
  7. -- 设置是否输出内存占用信息,true为每10秒一次  
  8. DEBUG_MEM = false  
  9.   
  10. -- 是否载入过时的 API 定义  
  11. LOAD_DEPRECATED_API = false  
  12.   
  13. -- 是否载入短代码API  
  14. LOAD_SHORTCODES_API = true  
  15.   
  16. -- 屏幕方向  
  17. CONFIG_SCREEN_ORIENTATION = "landscape"  
  18.   
  19. -- 设计分辨率大小  
  20. CONFIG_SCREEN_WIDTH  = 960  
  21. CONFIG_SCREEN_HEIGHT = 640  
  22.   
  23. -- 自动缩放模式  
  24. CONFIG_SCREEN_AUTOSCALE = "FIXED_WIDTH" 

 

这里主要配置一下游戏的debug信息,FPS显示,屏幕方向,设计屏幕大小,以及适屏方案

有了这些的初始化,就会进入第一个场景了,再看下MainScene.lua

 

  1. local MainScene = class("MainScene", function()  
  2.     return display.newScene("MainScene")  
  3. end)  
  4.   
  5. function MainScene:ctor()  
  6.     ui.newTTFLabel({text = "Hello, World", size = 64, align = ui.TEXT_ALIGN_CENTER})  
  7.         :pos(display.cx, display.cy)  
  8.         :addTo(self)  
  9. end  
  10.   
  11. function MainScene:onEnter()  
  12. end  
  13.   
  14. function MainScene:onExit()  
  15. end  
  16.   
  17. return MainScene  

 

MainScene的ctor是构造函数,一旦我们new一个对象实例时就会调用ctor,所以它是必须有的,这里面主要做一些场景的界面布局等等,在MainScene中引擎只画了一个文本在上面,就是上节中看到的Hello World。

 

 

在quick中,它弱化了层的地位,反而增强了场景的地位,我们在cocos2d-x中一般都是新建一个layer,游戏中的元素添加到这个layer中,而在quick中,往往我们为了简单些,会直接就添加到scene上。所以你会在samples中看到基本都是加在scene上。


好了,说了这么多,下面我们动手创建一个场景

在scenes文件夹中新建一个MyScene,仿照着MainScene.lua,我们敲点代码,

  1. local MyScene = class("MyScene", function ()  
  2.     return display.newScene("myscene")  
  3. end)  
  4.   
  5. function MyScene:ctor()  
  6.       
  7. end  
  8.   
  9. return MyScene  

 

这样就算新建了一个场景,咱们还是添加点温馨的画面吧,显示一下cocos2d-x经典的画面,在后面的笔记着再来解释添加精灵文本这些。

 

在原来的Cocos2d-x项目中把那张HelloWorld.png图片复制一份到res文件夹下。

完整代码如下,

  1. local MyScene = class("MyScene", function ()  
  2.     return display.newScene("myscene")  
  3. end)  
  4.   
  5. function MyScene:ctor()  
  6.     display.newSprite("HelloWorld.png", display.cx, display.cy):addTo(self)  
  7.   
  8.     ui.newTTFLabel({text = "Hello, World", align = ui.TEXT_ALIGN_CENTER, x = display.cx, y = display.height*0.9}):addTo(self)  
  9. end  
  10.   
  11. return MyScene  

 

然后我们修改启动的第一个场景,在MyApp.lua中,修改self:enterScene("myscene"),记住这其中的字符串是之前创建的那个场景时填写的字符串,如果不一致会找不到该场景的。

 

  • Android
  • Icon Image: 

  • android
  • Game Development
  • Android*
  • Developers
  • Android*
  • Theme Zone: 

    Android

    Include in RSS: 

    1

    Viewing all articles
    Browse latest Browse all 531

    Trending Articles


    Vimeo 10.7.1 by Vimeo.com, Inc.


    UPDATE SC IDOL: TWO BECOME ONE


    KASAMBAHAY BILL IN THE HOUSE


    Girasoles para colorear


    Presence Quotes – Positive Quotes


    EASY COME, EASY GO


    Love with Heart Breaking Quotes


    Re:Mutton Pies (lleechef)


    Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


    Vimeo 10.7.0 by Vimeo.com, Inc.


    FORECLOSURE OF REAL ESTATE MORTGAGE


    FORTUITOUS EVENT


    Pokemon para colorear


    Sapos para colorear


    Smile Quotes


    Letting Go Quotes


    Love Song lyrics that marks your Heart


    RE: Mutton Pies (frankie241)


    Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


    Long Distance Relationship Tagalog Love Quotes



    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>