一、logo载入界面

来源:互联网 发布:linux查看cpu核数命令 编辑:程序博客网 时间:2024/05/21 10:46

目录

1. 载入logo界面类的实现

2. 设置设计分辨率和屏幕分辨率

3. 加载游戏资源到帧缓存

正文

一、载入logo界面的类

游戏在启动时,会有短暂各个公司logo的短暂显示,接着进入另外一个场景(往往是主场景),出现logo的这个场景程序往往在后台做了很多事情,比如:游戏的初始化,加载游戏资源等。今天开发第一个场景——载入logo界面的场景。该场景写在头文件CopyrightLayer.h中,cpp文件为CopyrightLayer.cpp。

1.1 头文件——CopyrightLayer.h

#pragma once #include "cocos2d.h"USING_NS_CC;class CopyrightLayer : public Layer{public:CopyrightLayer();~CopyrightLayer();CREATE_FUNC(CopyrightLayer);virtual bool init();static Scene* scene();private:void LoadPicResourceToCache();void LoadHeroProperty();private:void gotoNextScene(float dt);};
其中,#pragma once这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次,类似于#ifndef _SOMEFILE_H_

#define _SOMEFILE_H_   .......... // 一些声明语句 #endif。

LoadPicResourceToCache()函数用把*.plist文件加入到帧缓存(SpriteFrameCache),节省游戏性能。

1.2 cpp文件——CopyrightLayer.cpp

#include "CopyrightLayer.h"#include "cocos2d.h"USING_NS_CC;CopyrightLayer::CopyrightLayer(){}CopyrightLayer::~CopyrightLayer(){}Scene* CopyrightLayer::scene(){auto scene = Scene::create();auto layer = CopyrightLayer::create();scene->addChild(layer);return scene;}bool CopyrightLayer::init(){bool bRef = false;do{CC_BREAK_IF(!Layer::init());//CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();Size visibleSize = Director::getInstance()->getVisibleSize();Sprite* logo = Sprite::create("ui/logo.png");logo->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));this->addChild(logo);this->scheduleOnce(schedule_selector(CopyrightLayer::gotoNextScene), 1.0);bRef = true;} while (0);return bRef;}// 加载游戏资源到缓存void CopyrightLayer::LoadPicResourceToCache(){// CCSpriteFrameCache* pSpriteFrameCache = CCSpriteFrameCache::sharedSpriteFrameCache();SpriteFrameCache* pSpriteFrameCache = SpriteFrameCache::getInstance();pSpriteFrameCache->addSpriteFramesWithFile("ui/login_animation.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_text.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_serverlist.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_rank.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_occupation.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_navigation.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_mainface.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_littcard_frame.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_listbutton.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_listbutton1.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_friend.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_fight.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_eatcard.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/ui_arena.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/skill_blizzard.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/skill_zhongji.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/skill_windhit.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/skill_thunde.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/skill_tenarmy.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/skill_customattack.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/raffle.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/play_script2.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/play_script1.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/play_image.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/play_animation.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/heal.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/fight_victory.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/fight_star.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/evolution.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/equipment_part2.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/equipment_part1.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/eatcard_part1.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_frame_white.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_frame_purpleandyellow.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_frame_greenandblue.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_0489_0494.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_0345_0351.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_0337_0343.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_0329_0335.plist");pSpriteFrameCache->addSpriteFramesWithFile("ui/bigcard_0000_0004.plist");}void CopyrightLayer::LoadHeroProperty(){}void CopyrightLayer::gotoNextScene(float dt){}

注意:init()函数在CopyrightLayer::create()函数中被调用,一切秘密都在CREATE_FUNC(_TYPE_)宏中,详情在这里。

1.3 AppDelegate.cpp启动CopyrighLayer场景

CopyrighLayer是程序的第一个场景,运行游戏时首先加载这个场景,它的启动在AppDelegate.cpp的applicationDidFinishLaunching()函数中,往该函数里添加如下代码:

// create a scene. it's an autorelease object// 修改为第一个场景auto scene = CopyrightLayer::scene();
二、设置设计分辨率和屏幕分辨率

这里logo界面的资源分辨率为480 × 960,我们要设计的分辨率为480 × 960(这里是竖屏)。在applicationDidFinishLaunching()函数中添加如下代码:

// Set the design resolution    glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::EXACT_FIT);glview->setFrameSize(designResolutionSize.width, designResolutionSize.height);glview->setFrameZoomFactor(0.7f);// 480 X 960 高度太高,故用该方法进行缩放
其中,setFrameZoomFactor()函数解决480 × 960的模拟器在14寸笔记本显示过大的问题,这里取原始尺寸的0.7倍。





0 0