使用Cocos2d的从零基础开始你的游戏生涯(系列之一 基础简单Objective-C入门)

Posted jackrex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Cocos2d的从零基础开始你的游戏生涯(系列之一 基础简单Objective-C入门)相关的知识,希望对你有一定的参考价值。

大家好,我是Jack,平时比较喜欢玩手机游戏,对游戏的开发深深的入迷了,于是在学习Cocos2d 一段时间后,做了几个小Game,把自己对游戏的开发总结出一个系列的教程,希望对有想学习Cocos2d 的朋友们有所帮助。 本人菜鸟,教程简单的给大家入门而用,高手勿喷,欢迎各位交流。

首先,给从Java android 或者C#转过来的同学简单的介绍下Objective-C的使用语法,作者提炼了初学Objective-C基础实用的知识,如果你想深入了解Objective-C,请参考Objective-C 权威书籍,或者去CocoChina 找合适的书籍教程学习,如果你对Objective-C比较熟悉,请直接看后面的文章。

Objective-C中的对象:

下面的代码直接了当的解释了如何初始化一个对象

MyObjectType *someName; //声明一个对象
someName = [[MyObjectType alloc] init]; //初始化对象 用alloc 分配内存
//init 方法可以被任何MyObjectType的方法替代,返回对象自己

//或者你可以简洁的这样写
MyObjectType *someName = [[MyObjectType alloc] init];

Objective-C中的方法:

Objective C 用+ 或者- 号来声明方法,+号代表是静态的static的方法(和java类似),可以被类直接使用,不用实例化对象,- 代表了需要实例化一个对象才能调用,代表是实例方法。

例如:

Objective C 的方法 + - 代表作用域,紧接着第一个括号是指返回参数,然后紧跟第一个方法名 ,接着是参数类型,参数名称,第二个方法名,参数类型,参数名称。第一个方法名和第二个方法名连起来是整体的方法名。

-(typeOfWhatIWillReturn) firstPartOfMethodName:(typeOfFirstParameter)parameterName secondPartOfMethodName:(typeOfSecondParameter)secondParameterName

    //code here

例如:

-(BOOL) returnsTrueAndHasNoParameters

   return true;



-(void) doMeaninglessShufflingOfFirstNumber:(int)firstNumber andSecondNumber:(int)secondNumber

    int a = firstNumber;
    int b = a + secondNumber;

如何调用方法:

//调用一个无参数的方法
[myObject someMethod];

//调用有两个参数的方法名称
[myObject someOtherMethodWithFirstParameter:parameterOne andSecondParameter:parameterTwo];

//调用自身内部的方法 self 类似java 的this
BOOL myBoolean = [self returnsTrueAndHasNoParameters];

//随机产生方法
RandomObjectType *myRandomObject = [[RandomObjectType alloc] init];
[myRandomObject doMeaninglessShufflingOfFirstNumber:5 andSecondNumber:6];


Objective-C中的Properties:

Objective-C 中得property是一个极其有用的方法,你可以很简单的为你的成员变量设置get和set方法,类似于Java 的getter和setter

在头文件中,在@interface声明之后,如下代码:

@property ObjectType propertyName;

然后在.m文件中写下如下代码:

@synthesize propertyName;

 properties 是如何工作的呢 我们假设有个类叫 MyClass 有一个property名为number

//MyClass.h
@property int number;

&

//MyClass.m
@synthesize number;

产生一个MyClass 对象

MyClass* myClassInstance = [[MyClass alloc] init];

给number设置一个值,注意使用 . 可以直接访问

myClassInstance.number = 4;

To access a property:

int example = myClassInstance.number;
//example 的值为4

Properties 不仅可以使用在int上,各种类型都可以


使用NSLog 方便调试打印到终端

类似于Android的Log

如下所示

NSLog(@"print this");

打印整型:

int k = 3;
NSLog(@"Int k is %i", k);

浮点:

float k = 1.583;
NSLog(@"Float k is %f", k);

打印String,注意@  @“world” 说明是一个NSString,如果没有@ 说明是C99 C语言中的String 两者不一样 %@代表对象

NSString* s = @"world";
NSLog(@"Hello %@", s);


Classes 之@Class

  
  1. #import "B.h"    
  2. @interface A : NSObject    
  3.   
  4.     B *b;   
  5.   
  6. @end
 
  简单说当你需要引入一个头文件 可以用#import 或者 @Class ,区别就在于#import 是把整个文件都引用了,而@Class只是告诉编译器 B是A中得一个声明而已。
 
 
  对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类,使用#import会造成循环依赖,这个时候你就需要使用@class了。

 
 
  @class是放在interface中的,只是在引用一个类,将这个被引用类作为一个类型,在实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引入被引用类。
 


调试

Xcode的调试和其他工具调试没啥区别,多用几次就都会了,如果想了解高级的调试技巧请查看作者的另一篇文章

http://blog.csdn.net/jackrex/article/details/19044625

今天简单的介绍到此结束,期待作者的下一篇 之 如何使用SpriteBuilder 和Cocos2d 开发自己的game。

文章详情请查看作者的另一个博客 http://ignitedaily.com/learn-cocos2d-startwith-objectivec/



以上是关于使用Cocos2d的从零基础开始你的游戏生涯(系列之一 基础简单Objective-C入门)的主要内容,如果未能解决你的问题,请参考以下文章

真正从零开始,TensorFlow详细安装入门图文教程!(帮你完成那个最难的从0到1)

多层感知机的从零开始实现( 从D2L 包中抽取函数)

多层感知机的从零开始实现( 从D2L 包中抽取函数)

Softmax回归的从零开始实现(softmax-regression-scratch)

Android游戏编程之从零开始pdf

Android游戏编程之从零开始pdf