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方法,在原数组中保留符合条件的数组元素。

浙公网安备 33010602011771号