首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有CCDrawNode的CCMenuItem不起作用

带有CCDrawNode的CCMenuItem不起作用
EN

Stack Overflow用户
提问于 2014-11-19 01:47:13
回答 1查看 108关注 0票数 0

我正在尝试创建一个CCDrawNode作为孩子的CCMenuItem,但它不工作,它是画的,但它在点击时不做任何事情。

下面是创建按钮的代码:

代码语言:javascript
复制
    CCSprite* normalState = CCSprite::create();
    normalState->addChild(this->createButton( ccp(0,0), ccc4f(0.74, 0.90, 0.96, 1.0)));

    CCSprite* selectedState = CCSprite::create();
    selectedState->addChild(this->createButton( ccp(0,0), ccc4f(0.74, 0.90, 0.16, 1.0)));
    CCMenuItem* playDemo =  CCMenuItemSprite::create(   normalState
                                                        ,selectedState
                                                        ,this
                                                        ,menu_selector(InitView::goToLevelsView));



    playDemo->setPosition(ccp(0, 200 ));

    CCLabelTTF *mText = CCLabelTTF::create("Play!!!", "fonts/soopafre.ttf", SCOREBOARD_FONT_SIZE);
    mText->setPosition(ccp( playDemo->getContentSize().width/2 ,
                            playDemo->getContentSize().height/2));

    playDemo->addChild(mText);


    CCMenu* pMenu2 = CCMenu::create(playDemo);
    this->addChild(pMenu2, 1);

要创建NodeDraw,我有以下代码:

代码语言:javascript
复制
CCDrawNode* InitView::createButton( CCPoint position, ccColor4F color){

    CCDrawNode *circle = CCDrawNode::create();

    float radius = 50;
    float aux = 1;

    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    int menuWidth = visibleSize.width/2;

    CCPoint rectangle[4];
    rectangle[0] = ccp( position.x - menuWidth/2, position.y - radius );    //Left-Bottom
    rectangle[1] = ccp( position.x + menuWidth/2, position.y - radius );    //Right-Bottom
    rectangle[2] = ccp( position.x + menuWidth/2, position.y + radius );    //Right-Top
    rectangle[3] = ccp( position.x - menuWidth/2, position.y + radius );    //Left-Top

    circle->drawPolygon(rectangle, 4, color, 1, color);

    float angle = M_PI/2;
    for (; angle <= M_PI + M_PI/2; angle += 0.01)
    {

        circle->drawSegment(ccp(position.x - menuWidth/2, position.y),
                              ccp(position.x - menuWidth/2 + radius * cos(angle), position.y + radius * sin(angle)),
                              aux,
                              color);
    }

    for (; angle <= 2 * M_PI + M_PI/2; angle += 0.01)
    {

        circle->drawSegment(ccp(position.x+menuWidth/2, position.y),
                              ccp(position.x+menuWidth/2 + radius * cos(angle), position.y + radius * sin(angle)),
                              aux,
                              color);
    }

    return circle;
}
EN

回答 1

Stack Overflow用户

发布于 2014-11-19 02:12:49

我修好了!它看起来没有获得DrawNode的大小,所以为了让它工作,我设置了内容大小:

代码语言:javascript
复制
selectedState->setContentSize( CCSize(width, height) );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27000652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档