cocos2dx3.2格斗类游戏人物选择界面

先看最终实现的效果图:

创建以人物选择场景 ChooseHero.h

#ifndef __CHOOSE_HERO_H__
#define __CHOOSE_HERO_H__
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "cocos-ext.h"
#include "cocostudio/CocoStudio.h"
using namespace cocos2d::ui;
USING_NS_CC;
class ChooseHero : public Layer
{
public:
static Scene * createScene();
virtual bool init();
void OnGameStartPage(Object *pSender, Widget::TouchEventType type);//创建人物
void textFieldEvent(Object* pSender, Event type);
//void OnBackToLoginPage(Object *pSender, Event type);//返回登录界面
void OnRoleSelect(CCObject *pSender, Widget::TouchEventType type);//角色选择界面
void OnRoleSelect2(CCObject *pSender, Widget::TouchEventType type);//角色选择界面
void OnRoleSelect3(CCObject *pSender, Widget::TouchEventType type);//角色选择界面
bool OnRoleSelectMy(Touch *touch, Event *event);
CREATE_FUNC(ChooseHero);
protected:
//标签
enum
{
enTagStudioMainUiLayer,
enTagRole,
};
intm_nRoleID;//角色ID 1.鸣人2.小樱3.佐助
int btnIndex2;
Button* pBtn_Role ;
Button* pBtn_Role2;
Button* pBtn_Role3;
ImageView * pSelect_Img ;
ImageView * pSelect_Img2;
ImageView * pSelect_Img3;
};
#endif

init实现如下:

bool ChooseHero::init(){
if (!Layer::init()){
return false;
}
m_nRoleID = 1;
//创建主场景UI层
auto pCreateNinja = GUIReader::getInstance()->widgetFromJsonFile("CreateNinja.json");
addChild(pCreateNinja, 100, enTagStudioMainUiLayer);
pCreateNinja->setName("CreateNinjaLayer");
pCreateNinja->setSize(getContentSize());
ArmatureDataManager::getInstance()->addArmatureFileInfo("armature/xiaoyin.ExportJson");
ArmatureDataManager::getInstance()->addArmatureFileInfo("armature/NewProject.ExportJson");
ArmatureDataManager::getInstance()->addArmatureFileInfo("armature/minren1.ExportJson");
////获取开始按钮
Button *pBtn_Create_Team = dynamic_cast<Button*>(pCreateNinja->getChildByName("MainUi")->getChildByName("Btn_Create_Team"));
pBtn_Create_Team->addTouchEventListener(this, toucheventselector(ChooseHero::OnGameStartPage));
////获取输入框
TextField* pTextField = dynamic_cast<TextField*>(pCreateNinja->getChildByName("MainUi")->getChildByName("Team_Name_TextField"));
//CC_BREAK_IF(pTextField == NULL);
pTextField->setTouchEnabled(true);
//pTextField->addEventListenerTextField(this, textfieldeventselector(CNFTeamCreateLayer::textFieldEvent));
pTextField->setText("");
//获取人物按钮
pBtn_Role = static_cast<Button*>(pCreateNinja->getChildByName("MainUi")->getChildByName(String::createWithFormat("Btn_Char_%d", 0 + 1)->getCString()));
pBtn_Role2 = static_cast<Button*>(pCreateNinja->getChildByName("MainUi")->getChildByName(String::createWithFormat("Btn_Char_%d", 1 + 1)->getCString()));
pBtn_Role3 = static_cast<Button*>(pCreateNinja->getChildByName("MainUi")->getChildByName(String::createWithFormat("Btn_Char_%d", 2 + 1)->getCString()));
pSelect_Img = static_cast<ImageView*>(pBtn_Role->getChildByName("Select_Img"));
pSelect_Img2 = static_cast<ImageView*>(pBtn_Role2->getChildByName("Select_Img"));
pSelect_Img3 = static_cast<ImageView*>(pBtn_Role3->getChildByName("Select_Img"));
pBtn_Role->addTouchEventListener(this, toucheventselector(ChooseHero::OnRoleSelect));
pBtn_Role2->addTouchEventListener(this, toucheventselector(ChooseHero::OnRoleSelect2));
pBtn_Role3->addTouchEventListener(this, toucheventselector(ChooseHero::OnRoleSelect3));
pSelect_Img->setVisible(true);
ArmatureDataManager::getInstance()->addArmatureFileInfo("armature/xiaoyin.ExportJson");
ArmatureDataManager::getInstance()->addArmatureFileInfo("armature/NewProject.ExportJson");
ArmatureDataManager::getInstance()->addArmatureFileInfo("armature/minren1.ExportJson");
char cName[3][256] = { "minren1", "xiaoyin", "NewProject" };
Armature *pRole = Armature::create(cName[0]);
pRole->setPosition(ccp(640/ 2, 210));
pRole->setAnchorPoint(ccp(pRole->getAnchorPoint().x, 0));
pRole->getAnimation()->play("hold");
addChild(pRole, 100000, enTagRole);
return true;
}

回调方法实现如下:

void ChooseHero::OnRoleSelect(CCObject *pSender, Widget::TouchEventType type){
if (pBtn_Role == pSender){
pSelect_Img2->setVisible(false);
pSelect_Img3->setVisible(false);
pSelect_Img->setVisible(true);
m_nRoleID = 1;
removeChildByTag(enTagRole);
char cName[3][256] = { "minren1", "xiaoyin", "NewProject" };
Armature *pRole = Armature::create(cName[0]);
pRole->setPosition(ccp(640 / 2, 210));
pRole->setAnchorPoint(ccp(pRole->getAnchorPoint().x, 0));
pRole->getAnimation()->play("hold");
addChild(pRole, 100000, enTagRole);
}
else{
pSelect_Img->setVisible(false);
}
}

可参考文章:cocos2dx3.2实现格斗人物选择界面

时间: 2024-10-10 16:06:10

cocos2dx3.2格斗类游戏人物选择界面的相关文章

cocos2dx3.2格斗类游戏加载界面

先看效果图: cocos2dx使用版本:cocos2dx3.2   IDE:使用VS2013 下载游戏引擎自不用说了. 使用命令行创建项目. cocos new GeDou -p com.zhenqi.game -l cpp -d F:\cocos2d-xProject 而后使用vs2013打开,并创建一个加载层. LoadingScene.h 内容如下: #ifndef __LOADING_SCENE_H__ #define __LOADING_SCENE_H__ #include "ui/C

android中选择控件与选择界面自然过度效果的实现--一种新的交互设计

转载请标明出处: http://blog.csdn.net/jianghejie123/article/details/40648931 在安卓中经常遇到须要选择一个东西的功能,比方选择日期.选择文件,选择地点等,通常我们的做法是使用选择对话框.比方选择日期用datepicker,有时候也使用activity,可是这两种方式都有一个缺点,就是用户非常明显的感觉到了界面之间的切换. 有时候.以下这样的选择数据的交互方式应该会更好些: 事实上上面的app效果来自与CapitaineTrain应用,好

Android照片选择界面

package cc.vv.btongbaselibrary.ui.view.imagepicker; import android.Manifest;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import android.animation.ObjectAnimator;import android.app.Activity;import android.app.Aler

Cocos2d-JS中使用CocosStudio资源——关卡选择界面

在本篇博客中,我们将通过一个在Cocos2d-JS中使用从CocosStudio导出的关卡选择界面资源的例子,来简要介绍以下内容:Button控件,Text控件,PageView控件,即翻页容器的使用. 一.CocosStudio准备 第一步:从官网下载相应的示例,LevelSelection.效果图如下: 第二步:修改其中的一些控件的名称,方便寻找获取,如: 由于官网给的例子中的控件名字有的较复杂,所以可以按照自己的想法进行修改. 第三步:发布资源.注意发布设置中应该将数据格式改为JSON格式

android 视频播放器选择界面弹出机制

1,file manager与videos识别视频的机制不同 a)   file manager简单根据后缀识别,3gp.mp4和avi分别被认为是三种不同的视频格式,因此会分别弹出视频播放器选择界面 b)   videos中视频识别是按照文件mimetype来设定,3gp属于简化的mp4,可以认为是同一类文件.在android设计里3gp和mp4文件使用同一个parser,两种文件的mimetype 也一致,都是video/mp4.由于android default将3gp和mp4使用同一个m

cocos2dx实现环形角色选择界面

数据结构采用双向循环链表.由候选角色组成链表的节点,将链表中的节点在屏幕上按照椭圆分布. .h: 1 //链表节点——候选角色 2 class CandidateRole :public CCNode{ 3 public: 4 CandidateRole(); 5 ~CandidateRole(); 6 virtual bool init(const char* name); 7 static CandidateRole* create(const char* name); 8 Candidat

DoTween应用在炉石传说,从开始界面到角色选择界面动画切换

动画播放步骤前面有... 然后在moveStart脚本里面添加 public DOTweenAnimation Hero_SelectPage;    public bool isCanShowSelectRole = false;//是否进入角色选择界面 public DOTweenAnimation WelcomPage;    public bool isWelcomFinished = false; 在inspector面板上进行拖拽赋值 “Welcom Page”是开始界面的logo

win10和linux引导问题(没有系统选择界面)

由于最近学习嵌入式和c模块化编程,需要使用Linux系统,但是编程之外,WIN10还是主力系统,决定装双系统. 往常一样,百度装双系统方法,网上千篇一律,大都一个套路. 首先,WIN10 下,新开一个分区,用于装LINUX,然后在windows下,将新建的分区驱动删除.也就是有一个新分区,但是WIN10不显示. 之后的一些步骤就不详述,主要讨论问题.重点总结: 1.网上教程一般是将LINUX系统写入U盘,然后进入BIOS界面,学则UEFI模式启动U盘装系统.按这个步骤存在一个很大的问题,新安装的

通过类选择器选择元素

js中可以通过getElementById和getElementsByTagName来获取html中的元素,但这远远不够,html中是有比较多的类元素,我们需要通过类来获取元素: 思路是先新建一个数组,然后通过getElementsByTagName获取与类名有相同标签名的所有标签,然后再比较哪些标签的类名是要目标类名,将它存到数组中,最后返回数组. 1 function getClass(tagname, classname) { 2 var results = [];//新建一个数组 3 v