编写MyLayer,2 锚点,3 精灵的创建,4 zorder
1 編寫MyLayer
|    頭文件:MyLayer.h  | 
|    #include "cocos2d.h" USING_NS_CC;?? //代表的是: using namespace cocos2d?? (通過F12進(jìn)行查看) ? //繼承CCLayer class MyLayer :public CCLayer { public: ??? //沒有構(gòu)造函數(shù)和析構(gòu)函數(shù) ??? CREATE_FUNC(MyLayer); ??? /*static MyLayer *create();*/ ? ??? static CCScene * scene(); ??? bool init(); };  | 
|    MyLayer.cpp  | 
|    #include "MyLayer.h" ? //MyLayer *MyLayer::create(){ //? MyLayer * pRet = new MyLayer(); //? if (pRet && pRet->init()) //? { //????? pRet->autorelease(); //? } //? else //? { //????? delete pRet; //????? pRet = NULL; //? } //? return pRet; //} ? bool MyLayer::init() { ??? if (!CCLayer::init()) ??? { ??????? return false; ??? } ? ??? CCSize winSize = CCDirector::sharedDirector()->getWinSize(); ??? ??? //創(chuàng)建一個精靈 ??? CCSprite * spr = CCSprite::create("anchor3.png"); ??? spr->setPosition(ccp(winSize.width/2,winSize.height /2)); ??? //添加一個精靈 ??? addChild(spr); ? ??? return true; } ? CCScene *MyLayer::scene() { ??? CCScene * scene = CCScene::create(); ??? MyLayer * layer = MyLayer::create(); ??? scene->addChild(layer); ??? return scene; }  | 
|    要想讓寫的Layer能夠運行,需要在AppDelegate.app中添加如下代碼  | 
|    1、 添加頭文件:#include "MyLayer.h" 2、 在bool AppDelegate::applicationDidFinishLaunching() 中修改如下內(nèi)容: ? bool AppDelegate::applicationDidFinishLaunching() { ??? // initialize director ??? CCDirector* pDirector = CCDirector::sharedDirector(); ??? CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); ? ??? pDirector->setOpenGLView(pEGLView); ??? ??? // turn on display FPS ??? pDirector->setDisplayStats(true); ? ??? // set FPS. the default value is 1.0/60 if you don't call this ??? pDirector->setAnimationInterval(1.0 / 60); ? ??? // create a scene. it's an autorelease object ??? //CCScene *pScene = HelloWorld::scene(); ??? CCScene * pScene = MyLayer::scene();?????? ? ??? // run ??? pDirector->runWithScene(pScene); ? ??? return true; }  | 
|    運行結(jié)果: 
  | 
2 錨點
|    LayerAnchorPoint.h  | 
|    #ifndef __T01LayerAnchorPoint_H__ #define __T01LayerAnchorPoint_H__ ? #include "cocos2d.h" USING_NS_CC; ? class LayerAnchorPoint:public CCLayer { public: ??? static LayerAnchorPoint * create(); ??? bool init(); ? ??? static CCScene * scene(); ? ??? void draw(); ? ??? void mySchedule(float dt); ??? CCSprite *spr; }; ? #endif  | 
|    LayerAnchorPoint.cpp  | 
|    #include "LayerAnchorPoint.h" ? CCScene * LayerAnchorPoint::scene() { ??? //創(chuàng)建一個場景 ??? CCScene * scene = CCScene::create(); ??? LayerAnchorPoint * layer = LayerAnchorPoint::create(); ??? scene->addChild(layer); ??? return scene; } ? LayerAnchorPoint * LayerAnchorPoint::create() { ??? LayerAnchorPoint *pRet = new LayerAnchorPoint(); ??? if (pRet && pRet->init()) ??? { ??????? pRet->autorelease(); ??? } ??? else ??? { ??????? delete pRet; ??????? pRet = NULL; ??? } ??? return pRet; } ? bool LayerAnchorPoint::init() { ??? CCLayer::init(); ??? ??? CCSize winSize = CCDirector::sharedDirector()->getWinSize(); ??? spr = CCSprite::create("anchor1.png"); ??? //設(shè)置錨點 ??? //spr->setAnchorPoint(ccp(0.656,0.5)); ??? spr->setScale(5.0f); ??? spr->setPosition(ccp(winSize.width/2,winSize.height/2)); ??? addChild(spr); ? ??? //設(shè)置一個定時器,頻率是2秒 ??? schedule(schedule_selector(LayerAnchorPoint::mySchedule), 2); ??? return true; } ? //通過下面的方法實現(xiàn)畫線 void LayerAnchorPoint::draw() { ??? CCSize winSize = CCDirector::sharedDirector()->getWinSize(); ??? //RGB顏色,其中最后一個參數(shù)是透明率 ??? ccDrawColor4B(255,0,0,255); ? ??? ccDrawLine(ccp(0, winSize.height / 2), ccp(winSize.width, winSize.height / 2)); ??? ccDrawLine(ccp(winSize.width / 2, 0),ccp(winSize.width/2,winSize.height)); } ? //通過下面的方式設(shè)置旋轉(zhuǎn) void LayerAnchorPoint::mySchedule(float dt) { ??? static float ro = 0; ??? ro += 30; ??? spr->setRotation(ro); }  | 
|    修改:AppDelegate.cpp中的代碼  | 
|    頭文件: #include "LayerAnchorPoint.h" ? bool AppDelegate::applicationDidFinishLaunching() { ??? // initialize director ??? CCDirector* pDirector = CCDirector::sharedDirector(); ??? CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); ? ??? pDirector->setOpenGLView(pEGLView); ??? ??? // turn on display FPS ??? pDirector->setDisplayStats(true); ? ??? // set FPS. the default value is 1.0/60 if you don't call this ??? pDirector->setAnimationInterval(1.0 / 60); ? ??? // create a scene. it's an autorelease object ??? //CCScene *pScene = HelloWorld::scene(); ??? //CCScene * pScene = MyLayer::scene(); ??? CCScene * pScene = LayerAnchorPoint::scene(); ? ??? // run ??? pDirector->runWithScene(pScene); ? ??? return true; }  | 
|    運行結(jié)果: 
 
  | 
3 精靈的創(chuàng)建
|    1、編寫:LayerSprite.h  | 
|    #include "cocos2d.h" ? USING_NS_CC; class LayerSprite:public CCLayer { public: ??? static CCScene * scene(); ??? CREATE_FUNC(LayerSprite); ??? bool init(); ? };  | 
|    編寫:表示屏幕大小的頭文件AppMacros.h  | 
|    #ifndef __APPMACROS_H__ #define __APPMACROS_H__ ? #include "cocos2d.h" ? //通過預(yù)定義獲得屏幕大小 #define? winSize? CCDirector::sharedDirector()->getWinSize() ? #endif /* __APPMACROS_H__ */  | 
|    編寫:LayerSprite.cpp  | 
|    #include "LayerSprite.h" #include "AppMacros.h" ? ? CCScene *LayerSprite::scene() { ??? CCScene * scene = CCScene::create(); ??? LayerSprite * layer = LayerSprite::create(); ??? scene->addChild(layer); ??? return scene; } bool T02LayerSprite::init() { ??? CCLayer::init(); ? ??? CCSprite * bg = CCSprite::create("sprite/background.jpg",CCRectMake(0,0,480,320)); ??? bg->setAnchorPoint(ccp(0,0)); ??? bg->setPosition(CCPointZero); ??? addChild(bg); ? ??? CCImage * image = new CCImage(); ??? image->initWithImageFile("sprite/plant.png"); ? ??? CCTexture2D * texture = new CCTexture2D(); ??? texture->autorelease(); ??? texture->initWithImage(image); ??? CCSprite * plant = CCSprite::createWithTexture(texture); //紋理 ??? plant->setPosition(ccp(100,winSize.height/2)); ??? addChild(plant); ? ??? CCTexture2D * texture2 = CCTextureCache::sharedTextureCache()->addImage("sprite/bullet.png"); ??? CCSprite * bullet = CCSprite::createWithTexture(texture2); ??? bullet->setPosition(ccp(200, winSize.height / 2+10)); ??? addChild(bullet); ? ??? CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite/zombie.plist"); ??? //CCSpriteFrame *sf = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("z_1_attack_01.png"); ??? //CCSprite *zombie = CCSprite::createWithSpriteFrame(sf); ??? CCSprite *zombie = CCSprite::createWithSpriteFrameName("z_1_attack_01.png"); ??? zombie->setPosition(ccp(400, winSize.height / 2-50)); ??? addChild(zombie); ? ??? CCJumpBy * by = CCJumpBy::create(2, ccp(0,0),40,3); ??? zombie->runAction(CCRepeatForever::create(by)); ? ??? CCSpriteFrame * frame = CCSpriteFrame::create("sprite/p_1_01.png", CCRectMake(0, 0, 80, 80)); ??? CCSprite * sun = CCSprite::createWithSpriteFrame(frame); ??? sun->setPosition(ccp(400, winSize.height / 2 + 50)); ??? addChild(sun); ? ??? return true; }  | 
|    同上,將LayerSprite.h加到AppDelegate.cpp中,并添加上: CCScene * pScene = LayerSprite::scene();  | 
|    運行結(jié)果: 
  | 
4 zorder
|    LayerZorder.h  | 
|    #include "cocos2d.h" USING_NS_CC; ? class LayerZorder:public CCLayer { public: ??? static CCScene * scene(); ??? CREATE_FUNC(LayerZorder); ??? bool init(); };  | 
|    LayerZorder.cpp  | 
|    #include "LayerZorder.h" #include "AppMacros.h" ? CCScene *LayerZorder::scene() { ??? CCScene * scene = CCScene::create(); ??? LayerZorder * layer = LayerZorder::create(); ??? scene->addChild(layer); ??? return scene; } ? bool LayerZorder::init() { ??? CCLayer::init(); ? ??? CCSprite * man = CCSprite::create("zorder/car42.png"); ??? //將圖片縮放 ??? man->setScale(0.3f); ??? CCSprite * woman = CCSprite::create("zorder/car43.png"); ??? woman->setScale(0.3f); ??? CCSprite * smallThree = CCSprite::create("zorder/car51.png"); ??? smallThree->setScale(0.3f); ? ??? man->setPosition(ccp(winSize.width / 2 + 40, winSize.height / 2 - 30)); ??? smallThree->setPosition(ccp(winSize.width / 2, winSize.height / 2 + 30)); ??? woman->setPosition(ccp(winSize.width / 2 - 40, winSize.height / 2 + 30)); ? ??? addChild(man); ??? addChild(smallThree); ??? addChild(woman); ? ??? //通過setZOrder來設(shè)置圖片顯示順序 ??? man->setZOrder(100); ??? smallThree->setZOrder(50); ??? woman->setZOrder(0); ??? return true; ? ??? /*CCLog("%d", man->getZOrder()); ??? CCLog("%d", smallThree->getZOrder()); ??? CCLog("%d", woman->getZOrder());*/ ??? return true; }  | 
|    修改AppDelegate.cpp 1.? 將zorder的頭文件進(jìn)入:#include "LayerZorder.h" 2.? CCScene * pScene = LayerZorder::scene(); 運行結(jié)果: 
  | 
?
總結(jié)
以上是生活随笔為你收集整理的编写MyLayer,2 锚点,3 精灵的创建,4 zorder的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 2 自己编写:AppDelegate,C
 - 下一篇: 002945上市时间