问题
setContentSize is not working
i am new in cocos2dx and i want to add layer from another class to my main Splashscreen class but setContentSize use device width and height.
i want to set layer size along with my sprite size.
see my code
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);
}
i have to use Gadget.coo class at 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;
}
when i use "this->setContentSize(CCSizeZero);" code but no changes in view. its generate fullscreen layer from position -100,-100
please give me some solutions why setContentSize is not working.
Thanks in advanced Rishabh Shah
回答1:
After initialization setContentSize
will set size but won't make any visible change,
better you provide width and height at initialization.
like:
this->initWithColor(ccc4(0,0,0,255), width, height);
回答2:
if(!LayerColor::create())
{
return false;
}
It should be
if(!LayerColor::init())
{
return false;
}
来源:https://stackoverflow.com/questions/26116658/setcontentsize-is-not-working-in-cocos2dx3-0