cocos2d x-X2.2.4的b2sprite.h在哪里

请教quick-cocos2d-x-2.2.4存在内存泄露还是只是例子有问题_百度知道
请教quick-cocos2d-x-2.2.4存在内存泄露还是只是例子有问题
提问者采纳
如果有,并没有遇到过内存泄露问题,不会有一个稳定值,内存一定是不断上升的你所提现象并没有内存泄露的迹象吧,稳定性是很不错的,可以放心使用。目前这么多使用Quick的项目,包括多个上市成功的应用
资深电脑人
其他类似问题
cocos2d的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁2.2.4 属性
本文所属图书&>&
本书以《捕鱼达人》游戏为案例,全面系统地讲解了Cocos2d-x 的功能与特性,以及进行游戏开发的基本思路,包括游戏框架的搭建、基本游戏元素的使用、动作、音乐与音效、物理引擎、高级开发技巧、游戏优化策略以及...&&
C++的类成员只有方法与字段,没有属性和事件,这给开发者带来了不便。为了实现Objective-C中提供的属性功能,我们不得不使用方法来模拟get和set访问器。Cocos2d-x规定了属性访问器的方法名称以get或set为前缀,后接属性名。在CCNode中包含大量属性,例如用于给节点做标记的Tag属性,它的访问器分别为getTag()和setTag(int aTag),其实现原理大致如下:
int getTag() { }
void setTag(int aTag) { tag = aT }
在这个例子中,属性的类型是int,处理较为简单。由于涉及内存管理,开发中我们对数值类型、结构体类型、Cocos2d-x对象的处理方法都不尽相同,这一点在读者了解2.3节介绍的Cocos2d-x内存管理后,会有更深刻的体会。
为每一个属性编写一个或两个访问器方法是一项十分枯燥的任务,为了避免重复性的工作,Cocos2d-x提供了一系列宏来帮助我们方便地创建属性。表2-1列举了所有属性相关的宏,它们定义在引擎目录中的&platform/CCPlatformMacros.h&中。
表2-1 Cocos2d-x中与属性相关的宏
CC_PROPERTY
定义一个属性及其访问器,没有实现。通常用于简单的值类型
CC_PROPERTY_READONLY
定义一个属性,只包含get访问器,没有实现
CC_PROPERTY_PASS_BY_REF
定义一个属性,访问器使用引用类型传递参数,没有实现。通常用于结构体类型
CC_PROPERTY_READONLY_PASS_BY_REF
定义一个属性,只包含get访问器,且使用引用类型传递参数,没有实现
CC_PROPERTY_READONLY_PASS_BY_REF
定义一个属性,只包含get访问器,且使用引用类型传递参数,没有实现
CC_SYNTHESIZE
同CC_PROPERTY,实现了访问器方法
CC_SYNTHESIZE_READONLY
同CC_PROPERTY_READONLY,实现了访问器方法
CC_SYNTHESIZE_PASS_BY_REF
同CC_PROPERTY_PASS_BY_REF,实现了访问器方法
CC_SYNTHESIZE_READONLY_PASS_BY_REF
同CC_PROPERTY_READONLY_PASS_BY_REF,实现了访问器方法
CC_SYNTHESIZE_RETAIN
同CC_PROPERTY,实现了访问器方法。用于派生自CCObject的类型,访问器采取Cocos2d-x的内存管理机制自动维护对象的引用计数
这些宏只要写在类的定义之中即可。每个宏都有3个参数,分别是:
varType,属性类型,如果属性类型是对象,需要写成指针的形式;
varName,属性的私有字段名称;
funName,属性的访问器名称,也就是紧接在get或set前缀后的部分。
利用Cocos2d-x提供的宏,上面的Tag属性定义就可以用下面一条语句代替了:
CC_SYNTHESIZE(int, tag, Tag)
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。主题 : quick-cocos2d-x2.2.4中如何响应按钮点击事件呢?
级别: 新手上路
可可豆: 213 CB
威望: 213 点
在线时间: 149(时)
发自: Web Page
来源于&&分类
quick-cocos2d-x2.2.4中如何响应按钮点击事件呢?&&&
我在MainScene中这样写:local uiLayer = TouchGroup:create()local mainUI = GUIReader:shareReader():widgetFromJsonFile(&ui/mainUI.json&)uiLayer:addWidget(mainUI)self:addChild(uiLayer)uiLayer:setTouchEnable(true)uiLayer:setTouchMode(cc.TOUCH_MODE_ALL_AT_ONCE)uiLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event)&&&&&&&&&&&& CCLuaLog(event.name)&&&& end)然后mainUI.json中已经有勾选交互的按钮,但点击按钮后无法打印出信息,该如何响应按钮点击事件呢?请各位大大指点,谢谢啊!
级别: 新手上路
可可豆: 213 CB
威望: 213 点
在线时间: 149(时)
发自: Web Page
好奇怪啊,使用display.newLayer()添加同样的代码,就能够响应消息。替换成TouchGroup就不行啊。而且我在c++中做了断点跟踪,实际上是进入了TouchGroup类的ccTouchBegan函数的,但最后没有响应lua中的函数。
级别: 新手上路
可可豆: 213 CB
威望: 213 点
在线时间: 149(时)
发自: Web Page
晕啊,找到问题了。不能使用通用的AddNodeEventListener,需要使用addTouchEventListener函数。比如:function MainScene:createCocostudioUI()&&&&local uiLayer = TouchGroup:create()&&&&local ccsLayout = GUIReader:shareReader():widgetFromJsonFile(&DemoLogin/DemoLogin.json&)&&&&local ccsButton = ccsLayout:getChildByName(&login_Button&)&&&&--local ccsButton = ccsLayout:getChildByTag(14)&&&&ccsButton:addTouchEventListener(function(sender,eventype)&&&&&&CCLuaLog(&login_button click &..eventype)&&&&&&end)&&&&uiLayer:addWidget(ccsLayout)&&&&return uiLayerend此问题已解决。
级别: 新手上路
UID: 316569
可可豆: 19 CB
威望: 14 点
在线时间: 43(时)
发自: Web Page
回 2楼(zhougaomin007) 的帖子
那知道addTouchEventListener(function(sender,eventype)&&eventype == 1 时(拖动时) 怎么获取移动的坐标吗
关注本帖(如果有新回复会站内信通知您)
个人IDP证书一年费用? 正确答案:99美金
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版1、下载OpenXLive SDK 按照官网教程安装,在安装文件夹内可以找到OpenXlive个SDK教程。
2、直接将\OpenXLivePaymentSDK_WP_1.0.3.1_MSI\Payment\PaymentSLSample 内的Controls、Converter、Themes、文件夹以及内的文件
CustomerInfo.cs、ShopPage.xaml.cs、PurchasedPage.xaml.cs
3、再就是添加C# 与C++的互相调用类,可以参考/zhxilin/archive//2971331.html的方法。
附上 XLiveCallback.cs
namespace PhoneDirect3DXamlAppInterop
& & & &public sealed class XLiveCallback : ICallback
& & & & & &private MainPage m_mainPage =
& & & & & &public void SetMainPage(MainPage page)&
& & & & & &{
& & & & & & & &m_mainPage =
& & & & & &}
& & & & & &public void payment(int price, int quantity, string goodId)
& & & & & & {
& & & & & & & & & m_mainPage.OnCreateShopPage();
& & & & & & }
ICallback.h
namespace PhoneDirect3DXamlAppComponent
namespace OpenXLiveHelper
// A callback interface for C# code to implement.
public interface class ICallback
void payment(int price, int quantity, Platform::String^ goodId);
XLiveDelegate.h 文件
&#include &ICallback.h&
&namespace PhoneDirect3DXamlAppComponent
& &namespace OpenXLiveHelper
& & & & // A native class to pass and store an ICallback instance, calling C# code via the ICallback object.
& & & & [Windows::Foundation::Metadata::WebHostHidden]
& & & & public ref class XLiveDelegate sealed &&
& & & & &{
& & & & public:
XLiveDelegate();
& & & & & & // Gets the single XLiveDelegate instance.
& & & & & & static XLiveDelegate^ GetInstance();
& & & & & & // Set callback into the XLiveDelegate instance.
& & & & & & &void SetCallback(ICallback^ callback);
void SetCallback_buySucc(Platform::String^ goodId,int nCount);
Platform::String^ getChooseGoodsID();
& & & & & &// Gets or sets the callback.
& & & & & &property ICallback^ GlobalC
& void pay(int price, int quantity, Platform::String^ goodId, int token);
& & & & private:
& & & & & &static XLiveDelegate^ m_I
& int &m_T
& Platform::String^ m_goodId;
& & & & };
#include &pch.h&
#include &XLiveDelegate.h&
#include &GameStore.h&
#include &GameData.h&
namespace PhoneDirect3DXamlAppComponent
& & &namespace OpenXLiveHelper
& & & &XLiveDelegate::XLiveDelegate()
& & & & &XLiveDelegate^ XLiveDelegate::GetInstance()
& & & & & &if (m_Instance == nullptr)
& & & & & &{
& & & & & & & & m_Instance = ref new XLiveDelegate();
& & & & & &}
& & & & & &return m_I
& & & & void XLiveDelegate::SetCallback(ICallback^ callback)
& & & & & & &GlobalCallback =
Platform::String^ XLiveDelegate::getChooseGoodsID()
return m_goodId;
void XLiveDelegate::SetCallback_buySucc(Platform::String^ goodId, int nCount)
GameStoreLayer* pStoreLayer = (GameStoreLayer*)GameData::getSharedGameData()-&getDataPoint(DT_Shop);
if (pStoreLayer)
pStoreLayer-&buySuccess(goodId,nCount);
& & & &XLiveDelegate^ XLiveDelegate::m_I
& void XLiveDelegate::pay(int price, int quantity, Platform::String^ goodId, int token)
& if (GlobalCallback)
& m_goodId = goodId;
& m_Token =
& GlobalCallback-&payment(price, quantity, goodId);
& void XLiveDelegate::exitGame()
& if (GlobalCallback)
& GlobalCallback-&exitGame();
& void XLiveDelegate::openUrl()
& if (GlobalCallback)
& GlobalCallback-&openUrl();
//& MainPage.cs 下面添加一个调用ShopPage.xml 的逻辑
& & public void OnCreateShopPage()&
& & & & & & if (XLivePayment.IsValid)
& & & & & & {
& & & & & & & & this.Dispatcher.BeginInvoke(() =&
& & & & & & & & {
& & & & & & & & & & this.NavigationService.Navigate(new Uri(&/ShopPage.xaml&, UriKind.Relative));
& & & & & & & & });
& & & & & & & &
& & & & & & }
//此处是调用的充值返回数据;
&internal void UseAsset()
& & & & & & var assets = XLivePayment.CurrentService.Customer.A
& & & & & & foreach (var item in assets)
& & & & & & {
& & & & & & & & System.Diagnostics.Debug.WriteLine(item.ToString());
& & & & & & & & // 根据需要调用Asset.Use方法使用该资产。
& & & & & & & & switch (item.ProductInfo.Type)
& & & & & & & & {
& & & & & & & & & & case ProductType.Durable:
& & & & & & & & & & & & // 耐用品会在资产列表中永久保存,应该直接给予用户,不需要调用Use方法。
& & & & & & & & & & & &
& & & & & & & & & & case ProductType.Consumable:
& & & & & & & & & & case ProductType.Once:
& & & & & & & & & & & & item.Use((s, e) =&
& & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & if (e.Result.ReturnValue)
& & & & & & & & & & & & & & & & {
//使用到游戏内。
& & & & & & & & & & & & & & & & & & XLiveDelegate.GetInstance().SetCallback_buySucc(item.ProductInfo.ProductId, Convert.ToInt32(e.Result.Tag));
& & & & & & & & & & & & // & & & & & &//只有在使用成功后,才应该将商品或道具给予用户。
& & & & & & & & & & & & // & & & & & &//使用成功,玩家获得相应商品或道具。
& & & & & & & & & & & & // & & & & & &//==========================================
& & & & & & & & & & & & // & & & & & &//警告:必须将使用的数量算上,否则会导致玩家购买的商品与实际得到的不一致,e.Result.Tag保存了使用数量
& & & & & & & & & & & & // & & & & & &// & & &此时玩家应该得到的商品为:item.ProductInfo 乘以 Convert.ToInt32(e.Result.Tag)
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & });
& & & & & & & & & & & &
& & & & & & & & & & default:
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & }
// 在返回后台以后或者关闭第三方支付页面时,cocos2d-x2.2.4 wp8 会在reloadAllTexture 会崩溃,所以注释下面代码。可以解决。 &
void Direct3DInterop::Disconnect()
& & // m_renderer-&Disconnect(); &
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3600次
排名:千里之外
(3)(1)(3)(2)(1)

我要回帖

更多关于 cocos2d是谁开发的 的文章

 

随机推荐