2017-01-16 2 views
1

Ich habe Probleme beim Zeichnen eines grundlegenden weißen Rechtecks ​​mit der Cocos2dx-Bibliothek in der iOS-Umgebung. Ich habe mir einige andere Implementierungen zur Orientierung angesehen.Zeichnen Rechteck in Cocos2dx

http://discuss.cocos2d-x.org/t/draw-rectangle-with-drawrect-in-cocos2dx-not-working/14836/3

Cocos2d-x: How can I draw a resizing rectangle?

Es sieht im Grunde wie ich die Klassenmethode von DrawNode verwenden müssen :: create(), um den Knoten zu machen, dann die Eckpunkte etablieren wie in openGL, dann ist es mit dem Unentschieden DrawNode-> drawPolygon-Methode und fügen Sie den untergeordneten Knoten mit der addChild-Methode der cocos2d :: Layer-Unterklasse der Szene hinzu.

Hier ist mein Code.

bool JFScene::init() 
{ 
    if (!Layer::init()) 
    { 
     return false; 
    } 

    auto visibleSize = Director::getInstance()->getVisibleSize(); 
    Vec2 origin = Director::getInstance()->getVisibleOrigin(); 


    auto closeItem = MenuItemImage::create(
             "CloseNormal.png", 
             "CloseSelected.png", 
              CC_CALLBACK_1(JFScene::menuCloseCallback, this)); 


    closeItem->setScale(2.0); 
    closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , 
          origin.y + closeItem->getContentSize().height/2)); 


    auto menu = Menu::create(closeItem, NULL); 
    menu->setPosition(Vec2::ZERO); 
    this->addChild(menu, 1); 

    auto CButton = Sprite::create("CButton.png"); 
    CButton->setPosition(
    Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y) 
); 
    this->addChild(CButton, 1); 



    auto rectNode = DrawNode::create(); 
    Vec2 vertices[4] = { 
     Vec2(-50, -50), 
     Vec2(50, -50), 
     Vec2(50, 50), 
     Vec2(-50, 50) 
    }; 

    rectNode->drawPolygon(vertices, 4, Color4F::WHITE, 1, Color4F::WHITE); 
    this->addChild(rectNode); 

    return true; 
} 

Das Seltsame ist, dass der CButton Knoten zu machen scheint, wenn ich es auf meinem iPhone 5s sowie das enge Element ausführen, die in der Standarddatei enthalten waren, aber das weiße Rechteck ich zu zeichnen versuchen tut nicht rendern. Irgendwelche Ideen warum?

+0

Ich hatte Vec2 (origin.x, origin.y) zu verwenden, Vec2 (origin.x + visibleSize.width, origin.y), Vec2 (origin.x + visibleSize.width, origin.y + visibleSize .height/3), Vec2 (origin.x, origin.y + visibleSize.height/3) und es funktionierte –

+0

Mögliches Duplikat von [Wie zeichne einfach rect mit cocos2d-x v3.0] (http: // stackoverflow.com/questions/19431922/how-to-draw-simple-rect-with-cocos2d-x-v3-0) – Emadpres

Antwort

1

Sie wollen ein Rechteck zeichnen ... Schau dir diesen Code-Schnipsel:

auto rectNode = DrawNode::create(); 
Vec2 rectangle[4]; 
rectangle[0] = Vec2(-50, -50); 
rectangle[1] = Vec2(50, -50); 
rectangle[2] = Vec2(50, 50); 
rectangle[3] = Vec2(-50, 50); 

Color4F white(1, 1, 1, 1); 
rectNode->drawPolygon(rectangle, 4, white, 1, white); 
this->addChild(rectNode); 

Ich hoffe, dass es für Sie arbeitet.

Referenz: cocso2d-x forum


Außerdem empfehle ich Ihnen einen Blick auf this similar question nehmen, wenn Sie nicht.

Verwandte Themen