Cocos2d-XNA基础介绍
下面介绍一下TweeJump中主要用到的Cocos2d-XNA的类。
CCDirector负责管理场景和切换场景游戏暂停等。
CCNode是Cocos2d-XNA中最重要的对象。CCNode的addChild()方法,我个人认为是最重要的方法。它充当了一个容器的角色可以addChild进去无数个节点,但每个节点只有一个父节点,同时他可以执行回调函数和CCAction有postion,scale,rotation等等属性。
CCLayer,它是CCNode的子类,层是一个可以绘制的区域.可以将ui,sprite等对象添加到其中。
CCMenu从CClayer派生而来,可以处理输入消息,CCMenu包含多个CCMenuItem对象,在接收到输入消息之后,根据触摸位置,将输入消息分发到相应MenuItem,执行回调函数,CCMenu还提供一个对齐菜单项的功能
CCSprite, 可以看成是某一时刻,一个2D的图片的一个剪辑部分
知识点一:
现在需要把pScene实例化为我们的Main,但是不好的事情是我们的Main.cs是一个CCLayer并不是CCScene,实现代码如下:
CCScene pScene = CCScene.node();
pScene.addChild(Tweejump.Classes.MainMenu.node());
从上面这段代码,是不是可以认为CCLayer类可以通过上面的转化方法变成CCScene????
知识点二:
CCMenuItem button1 = CCMenuItemImage.itemFromNormalImage(@"Images\loginButton", @"Images\loginButton", this, loginCallback);
Scale(button1);
CCMenu menu = CCMenu.menuWithItems(button1, button2, button3);
this.addChild(menu);
添加按钮的步骤:1.实例化一个CCMenuItem对象 CCMenuItemImage.itemFromNormalImage()前两个参数分别是按下前和按下时的图片资源 (CCSprite),最后一个参数为按 下后 的回调函数,格式: void Callback(CCObject sender){}。
2.Scael();缩放对象
3.实例划菜单 CCMenu.menuWithItems(按钮1,按钮2,。。。。);
4.将菜单添加到类里去。
知识点三:
代码摘自Main.cs,该类继承自CCLayer
CCSpriteBatchNode spriteManager = CCSpriteBatchNode.batchNodeWithFile("Images/sprites", 10);
addChild(spriteManager, -1, (int)tags.kSpriteManager);
CCSprite background = CCSprite.spriteWithTexture(spriteManager.Texture, new CCRect(0, 0, 320, 480));
spriteManager.addChild(background);
定义一个子画面spriteManager容器
Main.cs注册了spriteManager并把它添加到了Main这个CCLayer中(addChild()方法),
在需要的地方取出spriteManager.Texture的某一部分保存到CCSprite里形成一个新的CCSprite对象,
再spriteManager.addChild(CCSprite:) 交给spriteManage统一管理。
知识点四:
代码摘自MainMenu.cs,继承自Main.cs
CCSprite logo = CCSprite.spriteWithFile(@"Images\logo");
logo.position = new CCPoint(240, 650);
addChild(logo);
知识点五:
addchild(CCNode child,int zorder,int tags)里的参数意义:
叠置顺序(z-order)是依照 控制项加入至 表单的 Controls 集合之顺序来决定。
知识点六:
知识点三和四说明了两种CCSprite的实例方法。
疑问点:
知识点三里定义了一个容器,为什么要定义这个容器?为什么知识点四里没有定义这个?
batchNodeWithFile()里的第二个参数的作用?