2014-09-30 3 views
0

setContentSize не работаетsetContentSize не работает в cocos2dx3.0

Я новичок в cocos2dx и я хочу, чтобы добавить слой из другого класса к моему основному классу SplashScreen, но использование setContentSize ширины устройства и высоты.

Я хочу установить размер слоя вместе с моим размером спрайта.

посмотреть мой код

Gadget.cpp

#include "Gadget.h" 
#include "math.h" 

int nCount = 100; 
static CCPoint Circle [100]; // vertex array 

Gadget* Gadget::create(int type) 
{ 
    Gadget *pRet = new Gadget(); 
    if (pRet && pRet->init(type)) 
    { 
     pRet->autorelease(); 
     return pRet; 
    } 
    else 
    { 
     delete pRet; 
     pRet = NULL; 
     return NULL; 
    } 
} 

bool Gadget::init(int type) 
{ 
    if(!LayerColor::init()) 
    { 
     return false; 
    } 

    this->setContentSize(CCSize::ZERO); 

    this->initWithColor(Color4B(255,255,255,255)); 

    CCLog("Before Calling"); 
    addGadget(type); 

    return true; 
} 

Gadget::Gadget() { 
    // TODO Auto-generated constructor stub 

} 

Gadget::~Gadget() { 
    // TODO Auto-generated destructor stub 
} 

void Gadget::addGadget(int type) 
{ 
    const char* image =  "gadget_2.png"; 

    if(type==2) 
    { 
     image   =  "gadget_1.png"; 
    } 
    //this->initWithFile(image); 
    CCLog("After Calling"); 
    CCSprite *spr = CCSprite::create(image); 
    setGadgetPos(this->getContentSize().width/2,0.0); 
    this->drawCircle(100,100,100); 

} 

void Gadget::setGadgetPos(float x, float y) 
{ 
// this->ignoreAnchorPointForPosition(true); 
    this->setPosition(x,y); 
} 

void Gadget::gadgetAnimStart(int type) 
{ 
    if(type==1) 
    { 
     this->setAnchorPoint(ccp(0,3)); 
     auto rotate = RotateBy::create(3,360); 
     this->runAction(CCRepeatForever::create(rotate)); 
    } 
} 

void Gadget::gadgetAnimStop() 
{ 
    this->stopAllActions(); 
} 

void Gadget::drawCircle(float X, float Y,float rad) 
{ 
    DrawNode *drawnode = DrawNode::create(); 
    for (int i = 0 ; i <100; i ++) 
    { 
     float rads = i * M_1_PI; // radians 
     Circle [i] .x = rad * cosf (rads); //vertex x 
     Circle [i] .y = rad * sinf (rads); //vertex y 
    } 

    drawnode->setPosition(Director::sharedDirector()->getVisibleSize().width/2,Director::sharedDirector()->getVisibleSize().height/2); 
    drawnode->drawPolygon(Circle,100,Color4F(0,0,0,0),1,Color4F(1,122,153,1)); 
    this->addChild(drawnode); 
} 

я должен использовать класс Gadget.coo в Splashscreen.cpp

#include "Splashscreen.h" 
#include "HelloWorldScene.h" 
#include "CCHelper.h" 
#include "Gadget.h" 
#include "UserDefaultStorage.h" 
#include "VisibleRect.h" 
#include "math.h" 
#include "Sound.h" 
#include "Text_En.h" 

USING_NS_CC; 

Scene* Splashscreen::createScene() 
{ 
    Scene *s = Scene::create(); 
    LayerColor *lc = Splashscreen::create(); 

    s->addChild(lc); 
    return s; 
} 

Splashscreen::Splashscreen() { 
    // TODO Auto-generated constructor stub 
} 

Splashscreen::~Splashscreen() { 
    // TODO Auto-generated destructor stub 
} 

bool Splashscreen::init() 
{ 
    if(!LayerColor::create()) 
    { 
     return false; 
    } 


    this->initWithColor(ccc4(0,0,0,255)); 
    this->setContentSize(CCSizeZero); 

    Gadget *g = Gadget::create(GREEN_GADGET); 
    g->setPosition(ccp(-100,-100)); 
    this->addChild(g); 

return true; 
} 

когда я использую «this-> setContentSize (CCSizeZero);» кода, но изменений не видно. его генерирует полноэкранный слой с позиции -100, -100

, пожалуйста, дайте мне несколько решений, почему setContentSize не работает.

Благодаря передовой Rishabh Шах

+0

Пожалуйста, дайте мне решение, почему setContentSize не установить ширину и высоту слоя. –

ответ

1

После инициализации setContentSize установит размер, но не будет делать никаких видимых изменений, лучше вы обеспечить ширину и высоту при инициализации.

как:

this->initWithColor(ccc4(0,0,0,255), width, height); 
0
if(!LayerColor::create()) 
{ 
    return false; 
} 

Это должно быть

if(!LayerColor::init()) 
{ 
    return false; 
} 
Смежные вопросы