日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RotateWorldTest对层动作

發布時間:2025/7/14 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RotateWorldTest对层动作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

//創建類的對象,并返回相應類的指針 /*** define a create function for a specific type, such as CCLayer* @__TYPE__ class type to add create(), such as CCLayer*/ #define CREATE_FUNC(__TYPE__) \ static __TYPE__* create() \ { \__TYPE__ *pRet = new __TYPE__(); \if (pRet && pRet->init()) \{ \pRet->autorelease(); \return pRet; \} \else \{ \delete pRet; \pRet = NULL; \return NULL; \} \ } #ifndef _ROTATE_WORLD_TEST_H_ #define _ROTATE_WORLD_TEST_H_#include "../testBasic.h"class RotateWorldTestScene : public TestScene { public:virtual void runThisTest(); };class SpriteLayer : public CCLayer { public:virtual void onEnter();CREATE_FUNC(SpriteLayer) };class TestLayer : public CCLayer { public:virtual void onEnter();CREATE_FUNC(TestLayer) };class RotateWorldMainLayer : public CCLayer { public:virtual void onEnter();CREATE_FUNC(RotateWorldMainLayer) };#endif

init()和onEnter()這倆個方法都是CCNode的方法。其區別如下:

?

1.其被調用的順序是先init(),后onEnter()。

?

2.init()在類的初始化時只會調用一次。

?

3.onEnter在該類被載入場景的時候被調用,可能會發生多次。

?

4.CCLayer* cclayer = new MyLayer();

這種情況下,只會觸發onEnter。

?

5.CCLayer* cclayer = MyLayer::create();

這樣情況下,既會觸發init()方法,也會觸發onEnter()方法。

#include "RotateWorldTest.h" #include "../testResource.h"//------------------------------------------------------------------ // // TestLayer // //------------------------------------------------------------------ void TestLayer::onEnter() {CCLayer::onEnter();float x,y;CCSize size = CCDirector::sharedDirector()->getWinSize();x = size.width;y = size.height;//CCMutableArray *array = [UIFont familyNames];//for( CCString *s in array )// NSLog( s );CCLabelTTF* label = CCLabelTTF::create("cocos2d", "Tahoma", 64);label->setPosition( ccp(x/2,y/2) );addChild(label); }//------------------------------------------------------------------ // // SpriteLayer // //------------------------------------------------------------------ void SpriteLayer::onEnter() {CCLayer::onEnter();float x,y;CCSize size = CCDirector::sharedDirector()->getWinSize();x = size.width;y = size.height;CCSprite* sprite = CCSprite::create(s_pPathGrossini);CCSprite* spriteSister1 = CCSprite::create(s_pPathSister1);CCSprite* spriteSister2 = CCSprite::create(s_pPathSister2);sprite->setScale(1.5f);spriteSister1->setScale(1.5f);spriteSister2->setScale(1.5f);sprite->setPosition(ccp(x/2,y/2));spriteSister1->setPosition(ccp(40,y/2));spriteSister2->setPosition(ccp(x-40,y/2));CCAction *rot = CCRotateBy::create(16, -3600);addChild(sprite);addChild(spriteSister1);addChild(spriteSister2);sprite->runAction(rot);CCActionInterval *jump1 = CCJumpBy::create(4, ccp(-400,0), 100, 4);CCActionInterval *jump2 = jump1->reverse();CCActionInterval *rot1 = CCRotateBy::create(4, 360*2);CCActionInterval *rot2 = rot1->reverse();spriteSister1->runAction(CCRepeat::create( CCSequence::create(jump2, jump1, NULL), 5 ));spriteSister2->runAction(CCRepeat::create( CCSequence::create((CCFiniteTimeAction *)(jump1->copy()->autorelease()), (CCFiniteTimeAction *)(jump2->copy()->autorelease()), NULL), 5 ));spriteSister1->runAction(CCRepeat::create( CCSequence::create(rot1, rot2, NULL), 5 ));spriteSister2->runAction(CCRepeat::create( CCSequence::create((CCFiniteTimeAction *)(rot2->copy()->autorelease()), (CCFiniteTimeAction *)(rot1->copy()->autorelease()), NULL), 5 )); }//------------------------------------------------------------------ // // RotateWorldMainLayer // //------------------------------------------------------------------void RotateWorldMainLayer::onEnter() {CCLayer::onEnter();float x,y;CCSize size = CCDirector::sharedDirector()->getWinSize();x = size.width;y = size.height;//創建4個顏色不一樣的層CCNode* blue = CCLayerColor::create(ccc4(0,0,255,255));CCNode* red = CCLayerColor::create(ccc4(255,0,0,255));CCNode* green = CCLayerColor::create(ccc4(0,255,0,255));CCNode* white = CCLayerColor::create(ccc4(255,255,255,255));//將另一個層加到該層中blue->setScale(0.5f);blue->setPosition(ccp(-x/4,-y/4));blue->addChild( SpriteLayer::create() );red->setScale(0.5f);red->setPosition(ccp(x/4,-y/4));green->setScale(0.5f);green->setPosition(ccp(-x/4,y/4));green->addChild(TestLayer::create());white->setScale(0.5f);white->setPosition(ccp(x/4,y/4));white->ignoreAnchorPointForPosition(false);white->setPosition(ccp(x/4*3,y/4*3));addChild(blue, -1);addChild(white);addChild(green);addChild(red);CCAction* rot = CCRotateBy::create(8, 720);//對4個層做動作blue->runAction(rot);red->runAction((CCAction *)(rot->copy()->autorelease()));green->runAction((CCAction *)(rot->copy()->autorelease()) );white->runAction((CCAction *)(rot->copy()->autorelease()) ); }void RotateWorldTestScene::runThisTest() {CCLayer* pLayer = RotateWorldMainLayer::create();addChild(pLayer);runAction( CCRotateBy::create(4, -360) );CCDirector::sharedDirector()->replaceScene(this);}

?

總結

以上是生活随笔為你收集整理的RotateWorldTest对层动作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。