zoukankan      html  css  js  c++  java
  • 用Quick3.3开发微信打飞机 (一) ----------------- 场景切换

    用Quick3.3简单开发微信打飞机01

    楼主也是初学quick,想写几个简单的小项目入门,想想最简单的还是“微信打飞机”了(之前学cocos2d-js的时候也是从这个项目开始入手的)。

    这里只是写一个微信打飞机的Demo,所以,不需要有太多的功能。先简单的分析下:

    大概分为四个部分来实现:

    1.先新建项目实现一个飞机在屏幕中移动

    自定义场景,

    精灵的定义

    屏幕点击事件

    2.在游戏中添加敌人和子弹

    数组,

    计时器

    3.添加碰撞检测

    数组中元素的删除,

    动画

    分数的实现

    4.游戏结算

    界面的切换,

    这里先实现第一部分:

    写一个MainScene和一个GameScen,MainScene作为菜单界面,点击菜单界面进入GameScene(游戏主界面),这里需要用到精灵的创建,触屏事件的添加,界面的切换。

    下面上代码:

    MainScene:

    1. local MainScene = class("MainScene", function()  
    2.     return display.newScene("MainScene")  
    3. end)  
    4.   
    5. function MainScene:ctor()  
    6.     --添加一个背景精灵  
    7.     self.bgSprite = display.newSprite("game_bg.jpg"):addTo(self)  
    8.     self.bgSprite:pos(display.cx,display.cy)   
    9.     --添加一个TouchLayer  
    10.     self.touchLayer = display.newColorLayer(cc.c4b(255,255,255,0)):addTo(self)  
    11.     self.touchLayer:setTouchEnabled(true)  
    12.     self.touchLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event)  
    13.         if event.name == "ended" then  
    14.             --切换界面  
    15.             local nextScene = require("src.app.scenes.GameScene").new()  
    16.             display.replaceScene(nextScene, "fade", 0.5, cc.c3b(0, 0, 0))  
    17.         end  
    18.         return true  
    19.     end)  
    20. end  
    21.   
    22. function MainScene:onEnter()  
    23. end  
    24.   
    25. function MainScene:onExit()  
    26. end  
    27.       
    28.   
    29. return MainScene  


    GameScene代码:

      1. local GameScene = class("GameScene",function ()  
      2.     return display.newScene("GameScene")  
      3. end)  
      4.   
      5. function GameScene:ctor()  
      6.     --添加Player精灵  
      7.     self.player = display.newSprite("hero_1.png"):addTo(self)  
      8.     self.player:pos(display.cx,display.cy)  
      9.     self.player:setLocalZOrder(10)  
      10.     self.touchPos = cc.p(0,0)  
      11.   
      12.     --添加一个TouchLayer接收点击事件  
      13.     self.touchLayer = display.newColorLayer(cc.c4b(255,0,0,255)):addTo(self)  
      14.     self.touchLayer:setTouchEnabled(true)  
      15.     self.touchLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event)  
      16.         print(event.name)  
      17.         if event.name == "began" then  
      18.             self.touchPos = cc.p(event.x,event.y)  
      19.         elseif event.name == "moved" then  
      20.             local x = event.x - self.touchPos.x ;  
      21.             local y = event.y - self.touchPos.y ;  
      22.             self.touchPos = cc.p(event.x,event.y) ;  
      23.             self:onTouch(x,y) ;  
      24.         else  
      25.             self.touchPos = cc.p(0,0)   
      26.         end  
      27.         return true  
      28.     end)  
      29. end  
      30.   
      31. function GameScene:onTouch(x,y)  
      32.      --更新飞机的位置,没有对飞机是否会触屏做限制  
      33.     self.player:pos(self.player:getPositionX() + x,self.player:getPositionY() + y)  
      34. end  
      35.   
      36. function GameScene:onEnter()  
      37. end  
      38.   
      39. function GameScene:onExit()  
      40. end  
      41.   
      42. return GameScene  
  • 相关阅读:
    windows 全局安装 composer【转】
    CentOS7使用firewalld打开关闭防火墙与端口
    转 Page Object模式
    转 用SQL语句,删除掉重复项只保留一条
    转 什么是Mbps、Kbps、bps、kb、mb及其换算和区别
    转 使用Python的logging.config.fileConfig配置日志
    转 zookeeper,dubbo和Nginx的区别
    转 lsof命令详解
    Fatal Error -26000: Not enough memory (12320 bytes) for “new buffer in LrwSrvNetTaskIt 问题解决及lr脚本心得
    Action.c(28): Error -27796: Failed to connect to server "xxxx": [10060] Connection timed out
  • 原文地址:https://www.cnblogs.com/dudu580231/p/4807005.html
Copyright © 2011-2022 走看看