【问题标题】:Convert Cocos2d-iphone to Cocos2d-x将 Cocos2d-iphone 转换为 Cocos2d-x
【发布时间】:2011-12-19 18:39:59
【问题描述】:

我正在尝试将一些 Cocos2d-iphone 代码转换为 Cocos2d-x 代码,并且可以使用一些帮助。在 Cocos2d-iphone 代码中,包含如下定义:

@interface CCPanZoomControllerScale : CCScaleTo {
    CCPanZoomController *_controller;
    CGPoint _point;
}+(id) actionWithDuration:(ccTime)duration scale:(float)s controller:(CCPanZoomController*)controller point:(CGPoint)pt;

@end

@implementation CCPanZoomControllerScale

+(id) actionWithDuration:(ccTime)duration 
                   scale:(float)s 
              controller:(CCPanZoomController*)controller
                   point:(CGPoint)pt
{

return [[[self alloc] initWithDuration:duration scale:s controller:controller point:pt] autorelease];
}

在尝试将此(粗体声明)转换为 C++ 时,我相信它应该是一个静态方法。此外,Cocos2d-x 文档建议返回 bool,因为 id 在 C++ 中不存在。但是在方法实现中,我不确定要返回什么。我只返回 true 吗?

static bool actionWithDuration(ccTime duration, float scale, PanZoomController* controller, CCPoint point){ return true; }

【问题讨论】:

    标签: cocos2d-iphone cocos2d-x


    【解决方案1】:

    在objective-C中,你也可以在静态方法中返回self对象(意味着在类方法中)。但是在c++中,如果你想返回当前对象,你需要为当前类创建对象,并且需要仅返回该对象。我们不能直接使用“this”。因此,将此方法设为非静态并返回当前类对象“this”。

    您可以指定方法声明,如下所示。

    CCAction* className::actionWithDuration(ccTime duration, float scale, PanZoomController *controller, CCPoint point)
    {
        return (your class object);
    }
    

    每当您想调用此方法时,请为该特定类创建对象并在该对象上调用此方法,例如,

    PanZoomController *controller = new PanZoomController();
    CCPanZoomControllerScale *scaleController = new CCPanZoomControllerScale();
    sprite -> runAction(scaleController -> actionWithDuration(duration, scale, controller, pt));
    

    我认为这对你有帮助。

    【讨论】:

    • 我已经将几个游戏从 cocos2d-iphone 移植到 cocos2d-x v2.x 和 v3.x。我读了几本关于 c++ 的书以加快速度(c++ 与 Objc 截然不同)。我发现挖掘 cocos2d-x 测试和框架源代码以查看基本模式非常有帮助。 Cocos2d-x 框架使用某些模式来创建对象和管理必须学习的内存。我强烈推荐的书籍是 Scott Meyers 的 Effective C++ Digital Collection 的 C++ 最佳实践和 Robert Nystrom 的 Game Programming Patterns。
    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多