如何创建的Andr​​oid cocos2dx闪屏? [英] How to create android cocos2dx splash screen?

查看:178
本文介绍了如何创建的Andr​​oid cocos2dx闪屏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的code,我不知道如何创建闪屏,以及它将如何直接在我的菜单画面。所有的.h必须连接到BaseScreen和BaseScreen将是一个连接在cocos2d层。请帮我在我的codeS。不要出现在我的模拟器唯一的事情是我code在HelloWorldScreen.h精灵

SplashScreen.h

  IFNDEF __SPLASH_SCREEN_H__
定义__SPLASH_SCREEN_H__

包括BaseScreen.h
包括cocos2d.h

一流的闪屏:BaseScreen
{
上市:
无效更新();
静态的cocos2d :: CCSprite *闪屏;
INT时间;
MenuScreen menuScreen;
};
万一
 


HelloWorldScene.cpp

 包括HelloWorldScene.h
包括SplashScreen.h
包括cocos2d.h

USING_NS_CC;

CCScene *的HelloWorld ::场景()
{
//场景是一个自动释放对象
CCScene *场景= CCScene ::创建();

//'层'是一个自动释放对象
的HelloWorld *层=的HelloWorld:创建();

//添加图层作为一个孩子场景
scene->的addChild(层);

//返回现场
返回现场;
}

//的初始化你需要初始化实例
布尔的HelloWorld ::的init()
{

// 1.超强的init第一
如果(!CCLayer ::的init())
{
    返回false;
}

CCSize使用winsize = CCDirector :: sharedDirector() - > getWinSize();
CCSize大小= CCDirector :: sharedDirector() - > getWinSize();
CCSize visibleSize = CCDirector :: sharedDirector() - > getVisibleSize();
CCPoint起源= CCDirector :: sharedDirector() - > getVisibleOrigin();


// 2.添加一个菜单项以X的形象,它被点击退出程序
//你可以修改它。

//添加一个关闭按钮,退出的进度。它是一个自动释放对象
CCMenuItemImage * pCloseItem = CCMenuItemImage ::创建(
                                    CloseNormal.png
                                    CloseSelected.png
                                    本,
                                    menu_selector(的HelloWorld :: menuCloseCallback));

pCloseItem-> setPosition两种(CCP(origin.x + visibleSize.width  -  pCloseItem-> getContentSize()宽/ 2,
                            origin.y + pCloseItem-> getContentSize()高度/ 2));

//创建菜单,它是一个自动释放对象
CCMenu * pMenu = CCMenu ::创建(pCloseItem,NULL);
pMenu-> setPosition两种(CCPointZero);
这 - >的addChild(pMenu,1);


// 3.添加codeS下面...

//创建PNG背景图片
    CCSprite *闪屏= CCSprite ::创建(company.png);
    //在窗口的中心定位的背景图像
    splashScreen-> setPosition两种(CCP(size.width / 2,size.height / 2));


    //添加背景图片在Z位置= -1,所有的底
    这 - >的addChild(闪屏,-1);

    //计算缩放因子以填充窗口大小
    浮BX = size.width / splashScreen-> getContentSize()宽度;
    通过浮动= size.height / splashScreen-> getContentSize()的高度。

    //设置缩放因子到背景图像
    splashScreen-> setScaleX(BX);
    splashScreen-> setScaleY(所);

返回true;
}


// callfuncN_selector(MainScene :: spriteMoveFinished)
// backcalls spriteMoveFinished函数()
无效的HelloWorld :: spriteMoveFinished(的CCNode * pSender)
{
CCSprite *精灵=(CCSprite *)pSender;
这 - > removeChild之(精灵,真正的);
}


无效的HelloWorld :: menuCloseCallback(CCObject * pSender)
{
CCDirector :: sharedDirector() - >结束();

如果(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
出口(0);
万一
}
 


BaseScreen.h

  IFNDEF __BASE_SCREEN_H__
定义__BASE_SCREEN_H__

包括cocos2d.h

类BaseScreen:公众的cocos2d :: CCLayer
{
上市:
// BaseScreen的getParent();
无效loadNewScreen(BaseScreen newScreen);
无效更新();
// BaseScreen * parentBaseScene;
};
万一
 

解决方案

我现在用的是 scheduleOnce 的功能。

 无效飞溅::的OnEnter(){
    CCLayer ::的OnEnter();
    CCLOG(的OnEnter);
    这 - > scheduleOnce(schedule_selector(飞溅:: finishSplash),2.0f);
}

无效飞溅:: finishSplash(浮点DT){
    CCDirector :: sharedDirector() - > replaceScene(GameWall ::场景());
}
 

2秒后,完成初始屏幕,并开始GameWall屏幕。这就是我所做的。

This is my code I don't know how to create splash screen and how it will direct in my menu screen. All .h must be connected to BaseScreen and the BaseScreen will be the one connected in cocos2d layer. please help me in my codes. Do only thing that appears in my emulator is the sprite which I code in HelloWorldScreen.h

SplashScreen.h

ifndef __SPLASH_SCREEN_H__
define __SPLASH_SCREEN_H__

include "BaseScreen.h"
include "cocos2d.h"

class SplashScreen : BaseScreen 
{
public:
void update ();
static cocos2d::CCSprite* splashScreen;
int time;
MenuScreen menuScreen;
};
endif


HelloWorldScene.cpp

include "HelloWorldScene.h"
include "SplashScreen.h"
include "cocos2d.h"

USING_NS_CC;

CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();

// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();

// add layer as a child to scene
scene->addChild(layer);

// return the scene
return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{

// 1. super init first
if ( !CCLayer::init() )
{
    return false;
}

CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();


// 2. add a menu item with "X" image, which is clicked to quit the program
//    you may modify it.

// add a "close" icon to exit the progress. it's an autorelease object
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                    "CloseNormal.png",
                                    "CloseSelected.png",
                                    this,
                                    menu_selector(HelloWorld::menuCloseCallback));

pCloseItem->setPosition(ccp(origin.x + visibleSize.width -                       pCloseItem->getContentSize().width/2 ,
                            origin.y + pCloseItem->getContentSize().height/2));

// create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1);


// 3. add your codes below...

// create background image from png
    CCSprite *splashScreen = CCSprite::create("company.png");
    // position the background image at the center of window
    splashScreen->setPosition(ccp(size.width / 2, size.height / 2));


    // add background image at z-position = -1, bottom of all
    this->addChild(splashScreen, -1);

    // calculate the scaling factor to fill the window size
    float bX = size.width / splashScreen->getContentSize().width;
    float bY = size.height / splashScreen->getContentSize().height;

    // set the scaling factor to the background image
    splashScreen->setScaleX(bX);
    splashScreen->setScaleY(bY);

return true;
}


//callfuncN_selector(MainScene::spriteMoveFinished)
//backcalls the function spriteMoveFinished()
void HelloWorld::spriteMoveFinished(CCNode* pSender)
{
CCSprite *sprite = (CCSprite *)pSender;
this->removeChild(sprite, true);
}


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->end();

if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
endif
}


BaseScreen.h

ifndef __BASE_SCREEN_H__
define __BASE_SCREEN_H__

include "cocos2d.h"

class BaseScreen : public cocos2d::CCLayer
{
public:
//  BaseScreen getParent ();
void loadNewScreen (BaseScreen newScreen);
void update ();
//  BaseScreen *parentBaseScene;
};
endif

解决方案

I am using the scheduleOnce function.

void Splash::onEnter(){
    CCLayer::onEnter();
    CCLog("onEnter");
    this->scheduleOnce(schedule_selector(Splash::finishSplash),2.0f);
}

void Splash::finishSplash(float dt){
    CCDirector::sharedDirector()->replaceScene(GameWall::scene());
}

after 2 seconds, finish the splash screen and start GameWall Screen. That's all I have done.

这篇关于如何创建的Andr​​oid cocos2dx闪屏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆