oc个c++移植语法!

移植语法

 

1.

oc:

@interface CCMoveMaskingSpriteToAction : CCMoveTo <NSCopying>

 

c++:

class CCMoveMaskingSpriteToAction: public CCMoveTo

 

 

2.

oc:

(NSString*)theString

NSRange lineRange = [theString lineRangeForRange:NSMakeRange(index, 0)]

NSMakeRange(4,2)    从第4个字符开始截取,长度为2个字符,(字符串都是从第0个字符开始数的哦~!)

- (NSRange)lineRangeForRange:(NSRange)aRange //返回字符串指定段的位置和长度 ? 

 

c++:

 

 

3. CCString *textureData; 

[textureData UTF8String] 不同平台用不同的方法。

 

4.  old版本 m_tPosition.x

新版本 m_obPosition

 

    old 版本   m_bIsTransformDirty = m_bIsInverseDirty = true;

    新版本    m_bTransformDirty = m_bInverseDirty = true;

 

old版本 m_nOrderOfArrival

新版本  m_uOrderOfArrival

 

 

old版本: setUniformForModelViewProjectionMatrix()

新版本:setUniformsForBuiltins();

 

5.

return [[[self alloc] initWithBgSprite:b andFgSprite:f andSize:s andMargin:m] autorelease];

    

    CCProgressBar *pRet = new CCProgressBar();

    pRet->initWithBgSprite(b, f, s, m);

    pRet->autorelease();

    return pRet;

 

 

6.

oc:

//删除路径的最后一个组成部分

[path stringByDeletingPathExtension] 

 

c++:

            ////删除路径的最后一个/号后面的字符

            std::string deletepath = textureName->getCString();

            int n = deletepath.find_last_of('/');

            deletepath = deletepath.substr(0, n+1);

CCString *textureDir = CCString::create(deletepath);

 

 

oc:

//添加到现有路径的末尾

[dirname stringByAppendingPathComponent:textureName];

 

c++:

                std::string addpath = dirname->getCString();

                addpath = addpath.append(textureName->getCString());

                dirname = CCString::create(addpath);

 

 

oc:

//扩展名

CCString *extension = [path pathExtension];

 

 

c++:

    //获取path的扩展名

    std::string extensionpath = path->getCString();

    n = extensionpath.find_last_of('.');

    if (n == -1)

    {

        //如果没有“.”号,字符串置空

        extensionpath = "";

        

    }

    else

    {

        extensionpath = extensionpath.substr(n+1,  extensionpath.length() - n);

 

}

 

 

oc: //whitespaceAndNewlineCharacterSet 去掉空格和换行

 NSString *definition = [[components objectAtIndex:0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

 

 

c++:

deleteWhiteSpaceAndNewlineCharacter();

 

 

oc:  

hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始,其语法形式如下

c++:

自己创建一个 

 

 

 

7.

NSClassFromString 这个方法判断类是否存在,如果存在就动态加载的,不存为就返回一个空对象;

 

        CCString *className = GSGGUI_Shared::getClassNameFromDescription(item);

        Class cls = NULL;

        

        if (!className || !className.length || !(cls = NSClassFromString(className)) || ![cls instancesRespondToSelector:@selector(initWithGSGGUIDescription:layout:andDelegate:)] || CGSizeEqualToSize(itemSize, CGSizeZero))

        {

            className = @"CCNode";

            cls = [CCNode class];

        }

 

#define isKindOfClass(OBJECT_POINTER, CLASS_NAME) (dynamic_cast<CLASS_NAME*>(OBJECT_POINTER) ?true:false)

 

8. CGColorRef

CGColor主要用于CoreGaphics框架之中,CGColor其实是个结构体,而我们通常在使用的CGColor的时候使用的是它的引用类型CGColorRef

 

9.

oc:

@interface CCSpriteScale9 :

#if (COCOS2D_VERSION >= 0x00020000)

CCNodeRGBA <CCTextureProtocol>

#else

CCNode <CCRGBAProtocol, CCTextureProtocol>

#endif

{

 

}

 

c++:

#if (COCOS2D_VERSION >= 0x00020000)

class CCSpriteScale9:public CCNodeRGBA, public CCTextureProtocol

 

#else

class CCSpriteScale9:public CCNode, CCRGBAProtocol, CCTextureProtocol

 

{};

 

 

10.

[sender class]

 

 

11.

oc:

-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例

-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例

-(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)

+(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于, 前面这个方法可以用在实例和类上,而此方法只能用在类上.

 

 

oc:

if ([obj respondsToSelector:@selector(deepCopy)])

 

c++:

if(dynamic_cast<CCDictionary_DeepCopy*>(obj))

#define isKindOfClass(obj,class) (dynamic_cast<class*>(obj) != NULL)

 

 

 

12.

nsdata是为了转成iOS平台的通用数据文件

 

13.

performSelector

 

14.NSNumber

 

15.

oc:

NSUInteger

 

c++:

int 

 

16.

oc: Block函数

id playSound = [CCCallBlock actionWithBlock:^{

        OFInAppPurchase *iap = [OFInAppPurchaseCatalog getPurchaseById:BUNID(@"sfx.game")];

        if (iap)

        {

            NSString *path = [NSString stringWithFormat:@"%@/%@", [iap payloadPath], @"sfx-mission-complete.aac"];

            if ([[NSFileManager defaultManager] fileExistsAtPath:path])

            {

                [[GSGAudioEngine sharedEngine] safePlayEffect:path];

            }

        }

    }];

 

 

c++:

CCCallFunc* playSound = CCCallFunc::create(this, callfunc_selector(AdventureTaskWidget::playEffect));

 

 

17.

filteredArrayUsingPredicate

ios提供了一个filteredArrayUsingPredicate 方法,通过给定条件来进行过滤,过滤后形成一个新的数组。 而NSMutableArray提供了一个filterUsingPredicate方法,在原数组中保留符合条件的数组元素。            

 

 

posted @ 2014-04-18 20:15  六界剑仙  阅读(277)  评论(0)    收藏  举报