setContentSize在cocos2dx3.0中不起作用

时间:2014-09-30 08:56:34

标签: android c++ cocos2d-x cocos2d-x-3.0

setContentSize不起作用

我是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);
}

我必须在Splashscreen.cpp上使用Gadget.coo类

#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-&gt; setContentSize(CCSizeZero);”代码但视图中没有变化。 它从位置-100,-100

生成全屏图层

请给我一些解决方案,为什么setContentSize不起作用。

先谢谢了 Rishabh Shah

2 个答案:

答案 0 :(得分:1)

初始化后setContentSize将设置大小,但不会进行任何明显的更改, 最好在初始化时提供宽度和高度。

像:

 this->initWithColor(ccc4(0,0,0,255), width, height);

答案 1 :(得分:0)

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

应该是

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