我正在为iphone和ipad制作不同的图像。我有两个不同的背景图像,但我保留了两个文件的名称bg1.png。我把ipad解析文件放在ipad文件夹中,将iphone解析文件放在我资源的iphone4文件夹中。我的模式是风景,因此高度变为宽度,宽度变为高度 在我的AppDelegate.cpp中,在didfinishlaunch函数中我输入了以下代码
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
std::vector<std::string> searchPath;
CCSize winSize=CCDirector::sharedDirector()->getWinSize();
CCDirector* pDirector = CCDirector::sharedDirector();
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
pDirector->setOpenGLView(pEGLView);
// turn on display FPS
pDirector->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
pDirector->setAnimationInterval(1.0 / 60);
if(pDirector->getWinSize().height>=768)
{
CCLOG("if width = %f",pDirector->getWinSize().height);
searchPath.push_back("ipad");
// CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);
}
else if(pDirector->getWinSize().height<768)
{
CCLOG("else width = %f",pDirector->getWinSize().height);
searchPath.push_back("iphone4");
}
CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);
// create a scene. it's an autorelease object
CCScene *pScene = HelloWorld::scene();
// run
pDirector->runWithScene(pScene);
return true;
}
每次进入if块时,每隔一段时间它就会显示不同的图像。假设我是第一次运行它显示ipad图像。然后我停止构建并重新运行代码,然后它显示iphone图像。但我在这两种情况下都使用了Ipad模拟器。代码有什么问题吗?
答案 0 :(得分:0)
我认为在构建项目时 - 编译器将资源文件复制到应用程序文件夹的根目录。有时候它会复制iphone的最后一个文件,有时会复制到ipad(它会覆盖以前的文件)。所以检查文件夹&#34; ipad&#34; &安培; &#34; iphone4的&#34;在您的项目中有蓝色。这意味着该文件夹将被复制(内置子目录/文件)。
当您将此资源拖放到项目中时,您应该选择&#34;为任何添加的文件夹创建文件夹引用&#34;在弹出对话框中:
顺便说一句,您可以在构建的应用程序中检查文件的结构。只需为模拟器构建应用程序,然后按路径~/Library/Application Support/iPhone Simulator/7.1/Applications/DF7882AE-FF34-4D2F-A42C-25317785212B/AppNameHere.app/...
找到项目的位置,其中:
7.1 - version of iOS Simulator
DF7882AE-FF34-4D2F-A42C-25317785212B - app-id in simulator
添加了以下内容的答案: 我想问一下Android设备的维度是多少。什么是最佳资源大小维度...
对于任何项目,资源结构可能不同。例如,在我的上一个项目中,我使用下一个项目。我有3种尺寸:
nd (normal definition) - for iPhone-retina & iPad-non-retina
md (mini definition) - for iPhone-non-retina (with sizes of images scaled 0.5x of "normal")
hd (high definition) - for iPad-retina (with sizes of images scaled 2x of "normal")
在应用启动时,我会查看设备屏幕尺寸(以像素为单位)并决定使用内容:
cocos2d::Size size = cocos2d::Director::getInstance()->getVisibleSize();
if( size.width >= 1920 && size.height >= 1280 )
cocos2d::FileUtils::getInstance()->addSearchPath("images-hd");
else if( size.width >= 960 && size.height >= 640 )
cocos2d::FileUtils::getInstance()->addSearchPath("images-nd");
elsewhere
cocos2d::FileUtils::getInstance()->addSearchPath("images-md");
我所有的精灵,菜单,背景等等我都设置了3种维度的逻辑。 我不会想到&#34; hdpi,xhdpi,mdpi,ldpi&#34;。
您可以在此处找到Dim来源:https://github.com/duksel/Cocos2dx-DukselLib/tree/master/etc 在该类中实现了分辨率的检测,并通过维度值创建了Point,Size,float值。