一、logo载入界面

目录

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 高度太高,故用该方法进行缩放
其中,setFrame ZoomFactor()函数解决480 × 960的模拟器在14寸笔记本显示过大的问题,这里取原始尺寸的0.7倍。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值