cocos2dx 3.3 主场景

主场景,继承自Scene,

#pragma once
#include "cocos2d.h"
#include "BackgroundLayer.h"
#include "GameLayer.h"
#include "InfoLayer.h"
USING_NS_CC;
class MainScene:public Scene
{
public:
	bool init();
	CREATE_FUNC(MainScene);	
private:
	void timeCallBack(float f);
	void goldCallBack(float f);
	BackgroundLayer *bgLayer;
	GameLayer *gameLayer;
	InfoLayer *infoLayer;

};
#include "MainScene.h"

bool MainScene::init()
{
	if (!Scene::init())
	{
		return false;
	}
	bgLayer = BackgroundLayer::create();//载入背景层
	bgLayer->setAnchorPoint(Point::ZERO);
	bgLayer->setPosition(Point::ZERO);
	this->addChild(bgLayer);

	gameLayer = GameLayer::create();//加入游戏层
	gameLayer->setAnchorPoint(Point::ZERO);
	gameLayer->setPosition(Point::ZERO);
	this->addChild(gameLayer);

	infoLayer = InfoLayer::create();//加入信息层
	infoLayer->setPosition(Point::ZERO);
	this->addChild(infoLayer);

	this->schedule(schedule_selector(MainScene::timeCallBack), 0.1f);//设置物体移动定时器
	this->schedule(schedule_selector(MainScene::goldCallBack), 0.016f);//设置金币碰撞定时器
	return true;
}
void MainScene::timeCallBack(float f)
{
	gameLayer->timeCallBcak(f);//游戏层的定时器改到这来调用了(改不改无所谓)
	if (gameLayer->IsDie())//关键是这,实现信息交互和场景转换
	{
		auto scene = GameOverScene::create();//人物失望则跳到游戏结束场景
		scene->setNum(infoLayer->getGoldNum(), infoLayer->getDisNum());//将参数传给游戏结束场景
		auto fade = TransitionFade::create(0.1, scene);
		Director::getInstance()->replaceScene(fade);
	}
	
	
	infoLayer->distanceAddOne();//没结束则距离+1;


}
void MainScene::goldCallBack(float f)
{
	if (gameLayer->IscollWithGold())//游戏层人物与金币碰撞则信息层金币数+1
	{
		infoLayer->goldAddOne();
		Sounder::getInstance()->playGold();
		
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值