使用Quick-Cocos2d-x搭建一个横版过关游戏(一) CCStore

我们打开config.lua文件,将里面的内容改成下面的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-- 0 - disable debug info,1 - less debug info,2 - verbose debug info
DEBUG = 1
-- display FPS stats on screen
DEBUG_FPS = true
-- dump memory info every 10 seconds
DEBUG_MEM = false
-- load deprecated API
LOAD_DEPRECATED_API = false
-- load shortcodes API
LOAD_SHORTCODES_API = true
-- screen orientation
CONFIG_SCREEN_ORIENTATION = "landscape"
-- design resolution
CONFIG_SCREEN_WIDTH = 1136
CONFIG_SCREEN_HEIGHT = 640
-- auto scale mode
CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT"

在Quick中有关屏幕等内容的适配基本上都是通过config.lua文件来做的。我们来讲下这几个参数的意义。

  • DEBUG: 这个参数是配置Quick工程的调试信息状态。0表示关闭调试信息,1表示打印少量调试信息,2表示打印标准调试信息。
  • DEBUG_FPS: 是否显示FPS信息
  • DEBUG_MEM: 是否要每10秒钟打印一次内存信息
  • LOAD_DEPRECATED_API: 是否加载已经废弃了的API
  • LOAD_SHORTCODES_API: 是否加载短代码
  • CONFIG_SCREEN_ORIENTATION: 游戏中的屏幕方向,这个配置改变不了游戏对系统的屏幕方向,比如你在Android的工程中配置的是横屏,在这里设置竖屏,游戏运行后还会是竖屏。这里的参数是拿来适配的时候使用的。
  • CONFIG_SCREEN_WIDTH: 屏幕宽度,横屏时是手机屏幕的高度
  • CONFIG_SCREEN_HEIGHT: 屏幕高度,横屏时是手机屏幕的宽度
  • CONFIG_SCREEN_AUTOSCALE: 屏幕适配的方式,比如FIXED_WIDTH和FIXED_HEIGHT

给游戏添加角色

添加背景

这样的话游戏的适配就做好了,接下来打开scenes下的MainScene.lua文件。 在MainScene.lua文件的ctor()中添加下面两行代码

1
2
3
-- 背景
local background = display.newSprite( "image/background.png" ,display.cx,display.cy)
self:addChild(background)

打开Quick的Player,然后刷新Player,就能看到下面的图片了。

在上一篇文章中我们讲到过Quick框架中的display文件,里面放的是与显示相关的部分接口。比如我们想要新建一个精灵,我们会调用display.newSprite,类似的接口还有display.newLayer。基本的格式都是display.newXXX,"XXX"包括sprite、layer、node、scene等,详细的可以查看display文件。另外在display中还提供了很多实用的、方便的配置属性。比如:

  • display.widthdisplay.height表示屏幕宽度
  • display.cxdisplay.cy表示屏幕的x轴中间位置和y轴中间位置
  • display.leftdisplay.right表示屏幕的最左边和最右边(x轴坐标为0和display.width的点)
  • display.topdisplay.bottom表示屏幕的顶部和底部(y轴坐标为0和display.height的点)
  • display.CENTER、display.LEFT_TOP、display.CENTER_TOP等分别表示node的锚点位置。

另外还有scene切换的效果、游戏的暂停和恢复等等一系列我们经常使用,代码重复量较多的方法,都在Quick中进行了一定程度的封装,大大方便了我们在开发过程中的使用。

在Quick中使用图片有个规则,如果使用的图片是以#开头的话表示是从SpriteFrameCache中读取,如果没有使用#开头的话表示是直接从文件读取。

添加玩家角色

作为一个横版过关游戏,玩家和敌人当然都是必不可少的。在scripts/app下添加一个文件夹,取名roles,在roles下添加一个Player.lua文件。添加后的文件结构是这样的:

打开Player.lua文件,添加以下内容:

3
4
5
6
7
8
9
10
local Player = class ( "Player" local sprite = display.newSprite( "#player1-1-1.png" )
return sprite
end)
function Player:ctor()
end
Player

上面的代码中添加了一个以CCSprite为基类的Player类。在Quick中添加新的类的方式就是这么简单。是不是有点小激动呢。好了,添加完玩家类之后,我们要把玩家添加到当前场景中了。

在Quick中创建一个类很简单,廖大已经给我们留好了一个class方法,只需要使用这个方法就能轻松的创建一个类。我们来看下具体的创建方式: 首先第一句:

1
如果有同学对实现比较感兴趣的话可以打开Quick的functions.lua文件,里面有class方法的具体实现。我们这里只做使用的讲解。class方法有两个参数,第一个参数是类名。第二参数可以通过两种形式传递参数,一种是传入一个函数,另一种方式是传入一个Quick的类或者是Lua对象。当传入函数时,新创建的类会以传入的函数作为构造函数。当传入的是一个对象时,会以传入的对象为父类派生下来。

在类创建完成后必须要返回你所创建的类变量,这样外部的脚本调用时才能知道这个类的存在。

添加玩家角色到场景中

打开MainScene.lua文件,在MainScenen:ctor()中添加下面代码:

self.player = Player.new() -- display.newSprite()
self.player:setPosition(display.left + self.player:getContentSize().width/2,monospace!important; font-size:1em!important; min-height:inherit!important">self:addChild(self.player)

在文件开始的地方添加:

local Player = import("..roles.Player")

打开Quick的Player,刷新显示,你会看到这样的结果:

添加敌人

和添加玩家角色类似,我们添加一个敌人角色,在roles下新建个Enemy1.lua,将display.newSprite('#player1-1-1.png')改成display.newSprite('#enemy1-1-1.png'),其他同Player.lua中的代码一样,完成后的代码如下:

9
local Enemy1 = "Enemy1" display.newSprite( "#enemy1-1-1.png" )
end)
function Enemy1:ctor()
end
Enemy1

在MainScene.lua的文件头加入

local Enemy1 = import("..roles.Enemy1" 在MainScene:ctor()中加入

self.enemy = Enemy1.()
self.enemy:setPosition(display.right - self.enemy:getContentSize().width/2,monospace!important; font-size:1em!important; min-height:inherit!important">self:addChild(self.enemy)

添加完后,刷新Quick的Player,你将会看到下面的画面:

我们打开config.lua文件,将里面的内容改成下面的:

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DEBUG = 1
-- display FPS stats on screen
DEBUG_FPS = true
-- dump memory info every 10 seconds
DEBUG_MEM = false
-- load deprecated API
LOAD_DEPRECATED_API = false
-- load shortcodes API
LOAD_SHORTCODES_API = true
-- screen orientation
CONFIG_SCREEN_ORIENTATION = "landscape"
-- design resolution
CONFIG_SCREEN_WIDTH = 1136
CONFIG_SCREEN_HEIGHT = 640
-- auto scale mode
CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT"

在Quick中有关屏幕等内容的适配基本上都是通过config.lua文件来做的。我们来讲下这几个参数的意义。

  • DEBUG: 这个参数是配置Quick工程的调试信息状态。0表示关闭调试信息,1表示打印少量调试信息,2表示打印标准调试信息。
  • DEBUG_FPS: 是否显示FPS信息
  • DEBUG_MEM: 是否要每10秒钟打印一次内存信息
  • LOAD_DEPRECATED_API: 是否加载已经废弃了的API
  • LOAD_SHORTCODES_API: 是否加载短代码
  • CONFIG_SCREEN_ORIENTATION: 游戏中的屏幕方向,这个配置改变不了游戏对系统的屏幕方向,比如你在Android的工程中配置的是横屏,在这里设置竖屏,游戏运行后还会是竖屏。这里的参数是拿来适配的时候使用的。
  • CONFIG_SCREEN_WIDTH: 屏幕宽度,横屏时是手机屏幕的高度
  • CONFIG_SCREEN_HEIGHT: 屏幕高度,横屏时是手机屏幕的宽度
  • CONFIG_SCREEN_AUTOSCALE: 屏幕适配的方式,比如FIXED_WIDTH和FIXED_HEIGHT

---------------------

Quick-Cocos2d-x 3.3中的CCStore使用说明

CocoaChina论坛2014-12-22 16:54:451631 次阅读

本文简要介绍Quick-Cocos2d-x 3.3中针对iOS的iap功能封装的CCStore。


1. CCStore源码和导出的Lua的api在哪里

a)iaptest2/frameworks/runtime-src/Classes/quick-src/extra/store/CCStore.h

b)iaptest2/src/framework/cc/sdk/Store.lua

是的,iaptest2就是项目目录。


2. 首先,在当前版本中要想正常使用CCStore需要修改两个地方

a)图中标明的两处替换为cc.Store

b)图中三处变量添加cc前缀

修改完毕,现在就可以正常使用了


3. 关于iOS工程如何开启iap支持
可以参考下面的帖子的前面的部分,这里不做啰嗦,因为Quick的iOS工程终极也是iOS工程,没区别。参考帖子:http://www.tairan.com/archives/5515


4. 现在我假定看官们已经开启了iOS工程的iap支持,也在itunesconnect添加了测试商品以及测试账号

本文的代码如下:

24
25
26
27
28
29
30
31
32
33
34
35
functionMainScene:ctor()
--初始化商店
Store.init(handler(self,self.storeCallback))--function(event)self:storeCallback(event)end)
--载入商品
Store.loadProducts({ "com.originaljoy.iaptest.222coin" "com.originaljoy.iaptest.11coin" "com.originaljoy.iaptest.111coin" "com.originaljoy.iaptest2.1111coin"
},handler(self,self.loadCallback))
--添加一个购买按钮
self.btn=cc.ui.UIPushButton. new ( "ui_btn_start.png" )
:onButtonClicked(function(event)
print( "购买商品" )
Store.purchase( "com.originaljoy.iaptest2.1111coin" )
end)
:pos(display.cx,display.cy)
:addTo(self)
end
---商店的回调
functionMainScene:storeCallback(transaction)
--处理购买中的事件回调,如购买成功
if transaction.transaction.state== "purchased" then
"buysuccess" )
Store.finishTransaction(transaction.transaction)
end
end
---载入商品的毁掉
functionMainScene:loadCallback(products)
--返回商品列表
dump(products)
end


5.store的api使用

a)Store.init(listener)

初始化商店,并设置回调函数。回调函数用来处理各种store事件,接受一个参数event

event包含一个字段,transaction! transaction就是事件的完整内容,下图就是一次购买成功后回调的transaction

b)Store.loadProducts(productsId,listener)

载入商品列表,并设置回调

回调函数接受一个参数,就是商品列表,包括可用和不可用的商品,如图

c)Store.purchase(productId)

购买一个商品,传入商品id!购买事件将会在store的回调中接收


d)Store.finishTransaction(transaction)

移除一个事件。如果你购买一个商品成功后,不移除对应的事件,再次购买会有如下提示:

this in-app purchase has already been bought it will be restored for free

以上就是重要的几个函数的使用了!

使用完的感受就是:用Quick,就这么简单!(有任何问题请在原帖与作者联系)

活动推广:

【线上活动】两小时学会用Cocos2d-lua 开发游戏

【教程征集令】Cocos引擎中文官网有奖征集优秀原创Cocos教程 奖品丰厚!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


    本文实践自 RayWenderlich、Ali Hafizji 的文章《How To Create Dynamic Textures with CCRenderTexture in Cocos2D 2.X》,文中使用Cocos2D,我在这里使用Cocos2D-x 2.1.4进行学习和移植。在这篇文章,将会学习到如何创建实时纹理、如何用Gimp创建无缝拼接纹
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@163.com微信公众号:HopToad 欢迎转载,转载标注出处:http://blog.csdn.netotbaron/article/details/424343991.  软件准备 下载地址:http://cn.cocos2d-x.org/download 2.  简介2.1         引用C
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从Cocos2D-x官网上下载,进入网页http://www.cocos2d-x.org/download,点击Cocos2d-x以下的Download  v3.0,保存到自定义的文件夹2:从python官网上下载。进入网页https://www.python.org/downloads/,我当前下载的是3.4.0(当前最新
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发引擎,易学易用,支持多种智能移动平台。官网地址:http://cocos2d-x.org/当前版本:2.0    有很多的学习资料,在这里我只做为自己的笔记记录下来,错误之处还请指出。在VisualStudio2008平台的编译:1.下载当前稳
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《最强大脑》娱乐节目。将2048改造成一款挑战玩家对数字记忆的小游戏。邮箱:appdevzw@163.com微信公众号:HopToadAPK下载地址:http://download.csdn.net/detailotbaron/8446223源码下载地址:http://download.csdn.net/
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试以QtCreatorIDE来进行CMake构建。Cocos2d-x3.X地址:https://github.com/cocos2d/cocos2d-x1.打开QtCreator,菜单栏→"打开文件或项目...",打开cocos2d-x目录下的CMakeLists.txt文件;2.弹出CMake向导,如下图所示:设置
 下载地址:链接:https://pan.baidu.com/s/1IkQsMU6NoERAAQLcCUMcXQ提取码:p1pb下载完成后,解压进入build目录使用vs2013打开工程设置平台工具集,打开设置界面设置: 点击开始编译等待编译结束编译成功在build文件下会出现一个新文件夹Debug.win32,里面就是编译
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net前言上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实
1. 圆形音量button事实上作者的本意应该是叫做“电位计button”。可是我觉得它和我们的圆形音量button非常像,所以就这么叫它吧~先看效果:好了,不多解释,本篇到此为止。(旁白: 噗。就这样结束了?)啊才怪~我们来看看代码:[cpp] viewplaincopyprint?CCContro
原文链接:http://www.cnblogs.com/physwf/archive/2013/04/26/3043912.html为了进一步深入学习贯彻Cocos2d,我们将自己写一个场景类,但我们不会走的太远,凡是都要循序渐进,哪怕只前进一点点,那也至少是前进了,总比贪多嚼不烂一头雾水的好。在上一节中我们建
2019独角兽企业重金招聘Python工程师标准>>>cocos2d2.0之后加入了一种九宫格的实现,主要作用是用来拉伸图片,这样的好处在于保留图片四个角不变形的同时,对图片中间部分进行拉伸,来满足一些控件的自适应(PS: 比如包括按钮,对话框,最直观的形象就是ios里的短信气泡了),这就要求图
原文链接:http://www.cnblogs.com/linji/p/3599478.html1.环境和工具准备Win7VS2010/2012,至于2008v2版本之后似乎就不支持了。 2.安装pythonv.2.0版本之前是用vs模板创建工程的,到vs2.2之后就改用python创建了。到python官网下载版本2.7.5的,然后
环境:ubuntu14.04adt-bundle-linux-x86_64android-ndk-r9d-linux-x86_64cocos2d-x-3.0正式版apache-ant1.9.3python2.7(ubuntu自带)加入环境变量exportANDROID_SDK_ROOT=/home/yangming/adt-bundle-linux/sdkexportPATH=${PATH}:/$ANDROID_SDK_ROOTools/export
1开发背景游戏程序设计涉及了学科中的各个方面,鉴于目的在于学习与进步,本游戏《FlappyBird》采用了两个不同的开发方式来开发本款游戏,一类直接采用win32底层API来实现,另一类采用当前火热的cocos2d-x游戏引擎来开发本游戏。2需求分析2.1数据分析本项目要开发的是一款游
原文链接:http://www.cnblogs.com/linji/p/3599912.html//纯色色块控件(锚点默认左下角)CCLayerColor*ccc=CCLayerColor::create(ccc4(255,0,0,128),200,100);//渐变色块控件CCLayerGradient*ccc=CCLayerGradient::create(ccc4(255,0,0,
原文链接:http://www.cnblogs.com/linji/p/3599488.html//载入一张图片CCSprite*leftDoor=CCSprite::create("loading/door.png");leftDoor->setAnchorPoint(ccp(1,0.5));//设置锚点为右边中心点leftDoor->setPosition(ccp(240,160));/
为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院关老师的Cocos2d-x课程之一可以送智捷课堂编写图书一本(专题可以送3本)。一、Cocos2d-x课程列表:1、Cocos2d-x入门与提高视频教程__Part22、Cocos2d-x数据持久化与网络通信__Part33、Cocos2d-x架构设计与性能优化内存优
Spawn让多个action同时执行。Spawn有多种不同的create方法,最终都调用了createWithTwoActions(FiniteTimeAction*action1,FiniteTimeAction*action2)方法。createWithTwoActions调用initWithTwoActions方法:对两个action变量初始化:_one=action1;_two=action2;如果两个a
需要环境:php,luajit.昨天在cygwin上安装php和luajit环境,这真特么是一个坑。建议不要用虚拟环境安装打包环境,否则可能会出现各种莫名问题。折腾了一下午,最终将环境转向linux。其中,luajit的安装脚本已经在quick-cocos2d-x-develop/bin/中,直接luajit_install.sh即可。我的lin
v3.0相对v2.2来说,最引人注意的。应该是对触摸层级的优化。和lambda回调函数的引入(嗯嗯,不枉我改了那么多类名。话说,每次cocos2dx大更新。总要改掉一堆类名函数名)。这些特性应该有不少人研究了,所以今天说点跟图片有关的东西。v3.0在载入图片方面也有了非常大改变,仅仅只是