2016-07-14 5 views
0

In meiner AppDelegate Klasse ich habe Code so etwas wie diese,Was ist die Verwendung von SetDesignResolutionSize in Cocos Studio?

während cocos Studio

auto glview = director->getOpenGLView(); 
    if(!glview) { 
     glview = GLViewImpl::createWithRect("HelloCpp", Rect(0, 0, 960, 640)); 
     director->setOpenGLView(glview); 
    } 
    director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL); 

mit Wo, wie in einem normalen cocos2dx Projekt

mit aus cocos Studio

der Code in AppDelegate-Klasse ist wie folgt.

auto glview = director->getOpenGLView(); 
    if(!glview) { 
     glview = GLViewImpl::create("My Game"); 
     director->setOpenGLView(glview); 
    } 

Mein Zweifel ist, ist es zwingend notwendig, um setDesignResolutionSize, und auch sollte es das gleiche für jede Gerätegröße sein ???

+0

Nein ist nicht notwendig, aber ich denke, gut ist, es zu benutzen, wenn Sie die Dimension der Oberfläche einstellen, wenn Sie die createWithRect den ersten Code überprüfen wird es eine Auflösung von 960 * 640 erstellen. Das Ziel davon denke ich ist, dass die vielen verschiedenen Größen in Handys also was passiert, wenn dein Gerät dieses Seitenverhältnis nicht hat? In diesem Fall wird alles angezeigt, aber das Bild wird gestreckt, die AuflösungPolicy :: NO_BORDER wird etwas von der Oberfläche beschneiden. Aber dies ist nur eine Möglichkeit, um "Multi-Resolutions-Geräte" zu unterstützen. – OscarLeif

Antwort

1

in cocos2dx basieren alle Koordinaten auf der Größe der Entwurfsauflösung. Auf diese Weise können Sie für alle Bildschirmgrößen das gleiche Koordinatensystem verwenden. Auflösungsrichtlinie SHOWALL zeigt den gesamten Bereich ohne Änderung an, da jedoch nicht alle Geräte dieselbe Größe haben, haben Sie abhängig von der Bildschirmgröße schwarze Rahmen.

Die Richtlinie NO_BORDER schneidet zwar etwas von der Oberfläche ab, aber Sie werden je nach Bildschirmgröße des Geräts einen Teil der Welt verlieren. Wenn Sie dies planen, müssen Sie sicherstellen, dass wichtige Teile in der sicheren Zone sind, damit Ihr Spiel nicht beeinträchtigt wird. Es gibt eine Sache, die Sie beachten müssen, wenn Sie die Richtlinie NO_BORDER verwenden. Die Entwurfsauflösung ist nicht die gleiche wie der sichtbare Bereich. Wenn Sie sich für eine Richtlinienentscheidung entschieden haben, benötigen Sie die Funktionen visibleSize() und visibleOrigin(), um den Speicherort von Sprites und Spielobjekten zu ermitteln.

Vielleicht ist die beste Methode, FIXED_HEIGHT oder FIXED_WIDTH Richtlinien zu verwenden. Wenn Sie die Richtlinie FIXED_HEIGHT auswählen, teilen Sie dem cocos2dx einfach mit, dass Sie die gesamte Höhe im sichtbaren Bereich eines Geräts anzeigen möchten. Die Breite kann je nach Gerät abgeschnitten werden. Die Breite der Designauflösung wird neu berechnet. Sie können diesen Ansatz wählen, wenn Sie sich nicht um die Breite des Spiels kümmern. mit anderen Worten, wenn Ihr Spiel die gesamte Höhe für den Spielbereich FIXED_HEIGHT benötigt, ist Ihre Politik.

Wie Sie vielleicht erraten haben FIXED_WIDTH Politik funktioniert ähnlich, aber für die Breite eher als die Höhe.

Sowohl FIXED_WIDTH als auch FIXED_HEIGHT ändern die Breite oder Höhe der Designauflösung, je nachdem, was Sie wählen. Das Gute daran ist, dass die erzeugte Designauflösung identisch mit dem sichtbaren Bereich ist. Dies erleichtert Ihnen das Auffinden und Positionieren Ihrer Sprites in Ihrem Spiel.

Weitere Informationen zu diesen Themen finden Sie unter folgenden Links. mit vielen klaren Erklärungen. Obwohl sie etwas alt sind, geben sie Ihnen eine Vorstellung davon, wie alles funktioniert. http://www.cocos2d-x.org/wiki/Multi_resolution_support

http://cocos2d-x.org/wiki/Detailed_explanation_of_Cocos2d-x_Multi-resolution_adaptation

Verwandte Themen