创建角色
This commit is contained in:
parent
dd69f0a65b
commit
72684885d5
|
|
@ -165,17 +165,29 @@ class Yosin_EmeStretch extends Yosin_CommonUi {
|
|||
if (Direction) {
|
||||
local ScaleW = (W - SpriteList[0].GetSize().w - SpriteList[2].GetSize().w);
|
||||
local ScaleRate = ScaleW / SpriteList[1].GetSize().w;
|
||||
local ScaleRateH = H / SpriteList[1].GetSize().h;
|
||||
|
||||
SpriteList[1].SetPosition(SpriteList[0].GetSize().w, 0);
|
||||
SpriteList[1].SetScale(ScaleRate, 1.0);
|
||||
SpriteList[1].SetScale(ScaleRate, ScaleRateH);
|
||||
SpriteList[2].SetPosition(SpriteList[0].GetSize().w + ScaleW, 0);
|
||||
if (H != SpriteList[1].GetSize().h) {
|
||||
SpriteList[0].SetScale(1, ScaleRateH);
|
||||
SpriteList[2].SetScale(1, ScaleRateH);
|
||||
}
|
||||
}
|
||||
//纵向
|
||||
else {
|
||||
local ScaleH = (H - SpriteList[0].GetSize().h - SpriteList[2].GetSize().h);
|
||||
local ScaleRate = ScaleH / SpriteList[1].GetSize().h;
|
||||
local ScaleRateW = H / SpriteList[1].GetSize().w;
|
||||
|
||||
SpriteList[1].SetPosition(0, SpriteList[0].GetSize().h);
|
||||
SpriteList[1].SetScale(1.0, ScaleRate);
|
||||
SpriteList[1].SetScale(ScaleRateW, ScaleRate);
|
||||
SpriteList[2].SetPosition(0, SpriteList[0].GetSize().h + ScaleH);
|
||||
if (W != SpriteList[1].GetSize().w) {
|
||||
SpriteList[0].SetScale(ScaleRateW, ScaleRateH);
|
||||
SpriteList[2].SetScale(ScaleRateW, ScaleRateH);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(Child in SpriteList) {
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ function TestStage() {
|
|||
T.Enter();
|
||||
|
||||
|
||||
|
||||
local Window = Sq_CreateWindow(_Login_Window, "登录界面窗口", 0, 0, 1066, 600, 0);
|
||||
// local Window = Sq_CreateWindow(_Login_Window, "登录界面窗口", 0, 0, 1066, 600, 0);
|
||||
local Window = Sq_CreateWindow(_CreateCharacter, "创建角色", 0, 0, 1066, 600, 0);
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,66 +5,207 @@
|
|||
文件用途: 创建角色
|
||||
*/
|
||||
|
||||
class CreateCharacter extends Yosin_Window {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
// 底部光动画类型
|
||||
enum BottomLightAniType {
|
||||
light
|
||||
firedust
|
||||
dust
|
||||
aura
|
||||
}
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
// Visible = false;
|
||||
|
||||
BackGroundMusic = null;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
//注册绘制
|
||||
RegisterDraw();
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
//播放音乐
|
||||
PlayBackgroundMusic();
|
||||
// 获取职业信息
|
||||
function getJobInfo( job ) {
|
||||
local T = {};
|
||||
switch (job) {
|
||||
case CHARACTERJOB.SWORDMAN: // 男鬼剑士 d
|
||||
T = {
|
||||
index = 0, // 索引
|
||||
nameIndex = 0, // 名称索引
|
||||
ani = BottomLightAniType.dust,
|
||||
name = "鬼剑士",
|
||||
info = "借助凝聚在左手上鬼神之力压制敌人的鬼剑士。", // 介绍
|
||||
changJob = "剑魂 / 鬼泣 / 狂战士 / 阿修罗" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.FIGHTER: // 女格斗家 d
|
||||
T = {
|
||||
index = 1, // 索引
|
||||
nameIndex = 1, // 名称索引
|
||||
ani = BottomLightAniType.dust,
|
||||
name = "格斗家",
|
||||
info = "注重身体各不为的锻炼,并熟练运用它们攻击敌人的武道家。", // 介绍
|
||||
changJob = "气功师 / 散打 / 街霸 / 柔道家" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.GUNNER: // 男神枪手 d
|
||||
T = {
|
||||
index = 2, // 索引
|
||||
nameIndex = 2, // 名称索引
|
||||
ani = BottomLightAniType.dust,
|
||||
name = "神枪手",
|
||||
info = "生活在天界的神枪手,是善于利用枪械压制敌人的战士。", // 介绍
|
||||
changJob = "漫游枪手 / 枪炮师 / 机械师 / 弹药专家 / 合金战士" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.MAGE: // 女魔法师 l
|
||||
T = {
|
||||
index = 3, // 索引
|
||||
nameIndex = 3, // 名称索引
|
||||
ani = BottomLightAniType.light,
|
||||
name = "魔法师",
|
||||
info = "善用魔法力量攻击敌人的魔族。", // 介绍
|
||||
changJob = "元素师 / 召唤师 / 战斗法师 / 魔道学者 / 小魔女" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.PRIEST: // 男圣职者 l
|
||||
T = {
|
||||
index = 4, // 索引
|
||||
nameIndex = 4 // 名称索引
|
||||
ani = BottomLightAniType.light,
|
||||
name = "光职者",
|
||||
info = "心怀正义,为惩恶扬善甘愿接收严苛训练的勇士。", // 介绍
|
||||
changJob = "光明骑士 / 蓝拳使者 / 驱魔师 / 惩戒者" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.AT_GUNNER: // 女神枪手 f
|
||||
T = {
|
||||
index = 5, // 索引
|
||||
nameIndex = 2, // 名称索引
|
||||
ani = BottomLightAniType.firedust,
|
||||
name = "神枪手",
|
||||
info = "生活在天界的神枪手,是善于利用枪械压制敌人的战士。", // 介绍
|
||||
changJob = "漫游枪手 / 枪炮师 / 机械师 / 弹药专家" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.THIEF: // 暗夜使者 a
|
||||
T = {
|
||||
index = 6, // 索引
|
||||
nameIndex = 5, // 名称索引
|
||||
ani = BottomLightAniType.aura,
|
||||
name = "暗夜使者",
|
||||
info = "用敏捷身手执行特别人物的暗精灵成员。", // 介绍
|
||||
changJob = "暗星 / 黑夜术士 / 忍者 / 影武者" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.AT_FIGHTER: // 男格斗家 f
|
||||
T = {
|
||||
index = 7, // 索引
|
||||
nameIndex = 1, // 名称索引
|
||||
ani = BottomLightAniType.firedust,
|
||||
name = "格斗家",
|
||||
info = "注重身体各不为的锻炼,并熟练运用它们攻击敌人的武道家。", // 介绍
|
||||
changJob = "气功师 / 散打 / 街霸 / 柔道家" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.AT_MAGE: // 男魔法师 a
|
||||
T = {
|
||||
index = 8, // 索引
|
||||
nameIndex = 3, // 名称索引
|
||||
ani = BottomLightAniType.aura,
|
||||
name = "魔法师",
|
||||
info = "善用魔法力量攻击敌人的魔族。", // 介绍
|
||||
changJob = "元素爆破师 / 冰洁师 / 猩红法师 / 逐风者 / 次元行者" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.DEMONIC_SWORDMAN: // 黑暗武士 a
|
||||
T = {
|
||||
index = 9, // 索引
|
||||
nameIndex = 10, // 名称索引
|
||||
ani = BottomLightAniType.aura,
|
||||
name = " 黑暗武士",
|
||||
info = "跨越时空之门,超越界限之力的剑士。", // 介绍
|
||||
changJob = "黑暗武士" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.CREATOR_MAGE: // 缔造者 l
|
||||
T = {
|
||||
index = 10, // 索引
|
||||
nameIndex = 11, // 名称索引
|
||||
ani = BottomLightAniType.light,
|
||||
name = " 缔造者",
|
||||
info = "从异次元裂缝中获得强大力量的魔法师。", // 介绍
|
||||
changJob = "缔造者" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.AT_SWORDMAN: // 女鬼剑士 d
|
||||
T = {
|
||||
index = 11, // 索引
|
||||
nameIndex = 0, // 名称索引
|
||||
ani = BottomLightAniType.dust,
|
||||
name = "鬼剑士",
|
||||
info = "同样拥有鬼手,却能实战不同的魔力。", // 介绍
|
||||
changJob = "驭剑士 / 暗殿骑士 / 契魔者 / 流浪武士 / 刃影" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.KNIGHT: // 守护者 l
|
||||
T = {
|
||||
index = 12, // 索引
|
||||
nameIndex = 6, // 名称索引
|
||||
ani = BottomLightAniType.light,
|
||||
name = "守护者",
|
||||
info = "穿越各个次元,在战场上驰骋的少女。", // 介绍
|
||||
changJob = "精灵骑士 / 混沌魔灵 / 帕拉丁 / 龙骑士" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.DEMONIC_LANCER: // 魔枪士 d
|
||||
T = {
|
||||
index = 13, // 索引
|
||||
nameIndex = 7, // 名称索引
|
||||
ani = BottomLightAniType.dust,
|
||||
name = "魔枪士",
|
||||
info = "使用蕴含魔力的长枪,专研枪术的战士。", // 介绍
|
||||
changJob = "征战者 / 决战者 / 狩猎者 / 暗枪士" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.AT_PRIEST: // 女圣职者 l
|
||||
T = {
|
||||
index = 14, // 索引
|
||||
nameIndex = 4, // 名称索引
|
||||
ani = BottomLightAniType.light,
|
||||
name = "光职者",
|
||||
info = "心怀正义,为惩恶扬善甘愿接收严苛训练的勇士。", // 介绍
|
||||
changJob = "光明骑士 / 正义审判者 / 驱魔师 / 除恶者" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.GUN_BLADER: // 枪剑士 d
|
||||
T = {
|
||||
index = 15, // 索引
|
||||
nameIndex = 8, // 名称索引
|
||||
ani = BottomLightAniType.dust,
|
||||
name = "枪剑士",
|
||||
info = "执着枪与剑的浪漫的天界人。", // 介绍
|
||||
changJob = "暗刃 / 特工 / 战线佣兵 / 源能专家" // 转职
|
||||
};
|
||||
break;
|
||||
case CHARACTERJOB.ARCHER: // 弓箭手 l
|
||||
T = {
|
||||
index = 16, // 索引
|
||||
nameIndex = 9, // 名称索引
|
||||
ani = BottomLightAniType.light,
|
||||
name = "弓箭手",
|
||||
info = "为了守护家园,携弓箭走上冒险之旅的神界人。", // 介绍
|
||||
changJob = "缪斯 / 旅人 / 猎人 / 妖护使" // 转职
|
||||
};
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
function PlayBackgroundMusic() {
|
||||
|
||||
}
|
||||
|
||||
function MusicLogic() {
|
||||
if (BackGroundMusic == null) return;
|
||||
if (!BackGroundMusic.IsPlaying()) BackGroundMusic.Play();
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//账号输入框
|
||||
local AccountInputBox = Yosin_InputBox(752, 240, 200);
|
||||
AddUIChild(AccountInputBox);
|
||||
|
||||
}
|
||||
|
||||
function RegisterDraw() {
|
||||
//大背景
|
||||
local BackGround = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbackground.img", 14);
|
||||
Addchild(BackGround);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(Dt) {
|
||||
MusicLogic();
|
||||
|
||||
SyncPos(X, Y);
|
||||
base.Proc(Dt);
|
||||
}
|
||||
|
||||
return T;
|
||||
}
|
||||
|
||||
|
||||
//选择创建基础角色
|
||||
class CreateCharacter_SelectBase extends Yosin_Window {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function getJobEnum(index) {
|
||||
local jobList = [CHARACTERJOB.SWORDMAN, CHARACTERJOB.AT_SWORDMAN, CHARACTERJOB.AT_FIGHTER, CHARACTERJOB.FIGHTER, CHARACTERJOB.GUNNER, CHARACTERJOB.AT_GUNNER, CHARACTERJOB.AT_MAGE, CHARACTERJOB.MAGE, CHARACTERJOB.PRIEST, CHARACTERJOB.AT_PRIEST, CHARACTERJOB.THIEF, CHARACTERJOB.KNIGHT, CHARACTERJOB.DEMONIC_LANCER, CHARACTERJOB.GUN_BLADER, CHARACTERJOB.ARCHER, CHARACTERJOB.DEMONIC_SWORDMAN,CHARACTERJOB.CREATOR_MAGE ];
|
||||
return jobList[index];
|
||||
}
|
||||
|
||||
//创建角色
|
||||
class _CreateCharacter extends Yosin_Window {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
|
|
@ -74,7 +215,19 @@ class CreateCharacter_SelectBase extends Yosin_Window {
|
|||
//是否可见
|
||||
// Visible = false;
|
||||
|
||||
BackGroundMusic = null;
|
||||
BackGround = null;
|
||||
jobImg = null;
|
||||
nextJobImg = null;
|
||||
|
||||
infoWidget = null;
|
||||
|
||||
topLightObj = null;
|
||||
lightAni = null;
|
||||
dustAni = null;
|
||||
firedustAni = null;
|
||||
auraAni = null;
|
||||
|
||||
changJobAniClock = null;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
|
@ -91,17 +244,122 @@ class CreateCharacter_SelectBase extends Yosin_Window {
|
|||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//账号输入框
|
||||
local headButton = HeadButton(0, 0, CHARACTERJOB.SWORDMAN);
|
||||
AddUIChild(headButton);
|
||||
//头像
|
||||
local headList = _CreateCharacter_SelectBaseHeadList(135, 40);
|
||||
AddUIChild(headList);
|
||||
headList.OnClick = changJob.bindenv(this);
|
||||
|
||||
// 职业介绍
|
||||
infoWidget = _CreateCharacter_SelectBaseInfo(140, 400);
|
||||
AddUIChild(infoWidget);
|
||||
infoWidget.SetJob(getJobInfo(CHARACTERJOB.SWORDMAN));
|
||||
|
||||
// 创建职业
|
||||
infoWidget.OnClick = function () {
|
||||
|
||||
}.bindenv(this);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 切换职业
|
||||
function changJob(index) {
|
||||
local jobEnum = getJobEnum(index);
|
||||
// 切换背景
|
||||
BackGround.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/characterbackground.img", jobEnum));
|
||||
jobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", jobEnum ));
|
||||
if (index + 1 < 17){
|
||||
nextJobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", getJobEnum(index + 1)));
|
||||
}
|
||||
|
||||
local info = getJobInfo(jobEnum);
|
||||
// 切换介绍
|
||||
infoWidget.SetJob(getJobInfo(jobEnum));
|
||||
// 切换底部光动画
|
||||
|
||||
lightAni.SetVisible(false);
|
||||
firedustAni.SetVisible(false);
|
||||
dustAni.SetVisible(false);
|
||||
auraAni.SetVisible(false);
|
||||
|
||||
switch (info.ani){
|
||||
case BottomLightAniType.light:
|
||||
lightAni.SetVisible(true);
|
||||
break;
|
||||
case BottomLightAniType.firedust:
|
||||
firedustAni.SetVisible(true);
|
||||
case BottomLightAniType.dust:
|
||||
dustAni.SetVisible(true);
|
||||
break;
|
||||
case BottomLightAniType.aura:
|
||||
auraAni.SetVisible(true);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// 开始切换动画
|
||||
changJobAniClock = clock();
|
||||
}
|
||||
|
||||
|
||||
/// 切换职业动画
|
||||
function changJobAni() {
|
||||
if (changJobAniClock == null) return;
|
||||
|
||||
local ani_progress = sq_GetAccel(100, 0, clock() - changJobAniClock, 1000);
|
||||
|
||||
|
||||
|
||||
if (ani_progress == 0){
|
||||
changJobAniClock = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function RegisterDraw() {
|
||||
//大背景
|
||||
local BackGround = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbackground.img", 0);
|
||||
BackGround = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbackground.img", 0);
|
||||
Addchild(BackGround);
|
||||
|
||||
|
||||
// 人物图片
|
||||
jobImg = CL_SpriteObject("sprite/interface2/charactercreatever2/basecharctertitle.img", 0);
|
||||
jobImg.SetPosition(0, 0);
|
||||
Addchild(jobImg);
|
||||
|
||||
// 下一个人物图片
|
||||
nextJobImg = CL_SpriteObject("sprite/interface2/charactercreatever2/basecharctertitle.img", 11);
|
||||
nextJobImg.SetPosition(500, 0);
|
||||
Addchild(nextJobImg);
|
||||
|
||||
// 光动画 ui/charactercreate/topdodge.ani
|
||||
topLightObj = Animation("ui/charactercreate/topdodge.ani");
|
||||
topLightObj.SetPosition(0, 0);
|
||||
Addchild(topLightObj);
|
||||
|
||||
|
||||
// 底部光动画
|
||||
lightAni = Animation("ui/charactercreate/dust.ani");
|
||||
lightAni.SetPosition(0, 0);
|
||||
// lightAni.SetVisible(false);
|
||||
Addchild(lightAni);
|
||||
|
||||
firedustAni = Animation("ui/charactercreate/firedust.ani");
|
||||
firedustAni.SetPosition(0, 0);
|
||||
firedustAni.SetVisible(false);
|
||||
Addchild(firedustAni);
|
||||
|
||||
dustAni = Animation("ui/charactercreate/dust.ani");
|
||||
dustAni.SetPosition(0, 0);
|
||||
dustAni.SetVisible(false);
|
||||
Addchild(dustAni);
|
||||
|
||||
auraAni = Animation("ui/charactercreate/aura.ani");
|
||||
auraAni.SetPosition(0, 0);
|
||||
auraAni.SetVisible(false);
|
||||
Addchild(auraAni);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
|
|
@ -109,6 +367,79 @@ class CreateCharacter_SelectBase extends Yosin_Window {
|
|||
|
||||
SyncPos(X, Y);
|
||||
base.Proc(Dt);
|
||||
|
||||
changJobAni();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//选择创建基础介绍
|
||||
class _CreateCharacter_SelectBaseInfo extends Yosin_Window {
|
||||
|
||||
//是否为独立窗口
|
||||
IsIndependent = false;
|
||||
|
||||
icon = null;
|
||||
name = null;
|
||||
jobInfo = null;
|
||||
jobChangeText = null;
|
||||
|
||||
OnClick = null;
|
||||
|
||||
constructor(gX, gY ) {
|
||||
base.constructor("创建角色职业介绍信息", gX, gY, 278, 600, 0);
|
||||
|
||||
// 职业图标
|
||||
icon = CL_SpriteObject("sprite/interface2/charactercreatever2/charactermark.img", 0);
|
||||
icon.SetPosition(0, 0);
|
||||
Addchild(icon);
|
||||
|
||||
//职业名称
|
||||
name = CL_SpriteObject("sprite/interface2/charactercreatever2/charctertitle.img", 0);
|
||||
name.SetPosition(55, 10);
|
||||
Addchild(name);
|
||||
|
||||
// 职业介绍
|
||||
jobInfo = FontAssetManager.GenerateNormal("职业介绍", false, {
|
||||
color = sq_RGBA(194, 160, 53, 255)
|
||||
});
|
||||
jobInfo.SetPosition(0, 52);
|
||||
Addchild(jobInfo);
|
||||
|
||||
local jobChangeTextY = 52 + jobInfo.GetSize().h + 5;
|
||||
// 转职
|
||||
jobChangeText = FontAssetManager.GenerateNormal("■ 转职:转职名 / 转职名", true, {
|
||||
color = sq_RGBA(194, 160, 53, 255)
|
||||
});
|
||||
jobChangeText.SetPosition(0, jobChangeTextY);
|
||||
Addchild(jobChangeText);
|
||||
|
||||
//创建角色按钮
|
||||
local createButton = Yosin_EmeStretch(59, jobChangeTextY + 30, 160, 36, "sprite/interface/lenheartwindowcommon.img", 172);
|
||||
//点击事件回调
|
||||
createButton.OnClick = function(Button) {
|
||||
if (OnClick) OnClick();
|
||||
}.bindenv(this);
|
||||
// 按钮文本
|
||||
local createText = CL_SpriteObject("sprite/interface2/charactercreatever2/charctertitle.img", 12);
|
||||
createText.SetPosition(42.5, 8);
|
||||
createButton.Addchild(createText);
|
||||
AddUIChild(createButton);
|
||||
|
||||
}
|
||||
|
||||
function SetJob(jobInfoMap) {
|
||||
icon.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/charactermark.img", jobInfoMap.index));
|
||||
name.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/charctertitle.img", jobInfoMap.nameIndex));
|
||||
jobInfo.SetText(jobInfoMap.info);
|
||||
jobChangeText.SetText("■ 转职:" + jobInfoMap.changJob);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -116,14 +447,73 @@ class CreateCharacter_SelectBase extends Yosin_Window {
|
|||
|
||||
|
||||
|
||||
//选择创建基础角色头像列表
|
||||
class _CreateCharacter_SelectBaseHeadList extends Yosin_Window {
|
||||
|
||||
//是否为独立窗口
|
||||
IsIndependent = false;
|
||||
|
||||
// 点击关闭
|
||||
clickOff = false;
|
||||
|
||||
OnClick = null;
|
||||
|
||||
buttonList = [];
|
||||
|
||||
constructor(gX, gY) {
|
||||
base.constructor("所有的职业头像", gX, gY, 278, 350, 0);
|
||||
|
||||
local headX = 0;
|
||||
local headY = 0;
|
||||
|
||||
for (local i = 0; i < 17; i++) {
|
||||
local jobEnum = getJobEnum(i);
|
||||
local headButton = HeadButton(headX, headY, jobEnum, getJobInfo(jobEnum).name);
|
||||
headButton.tag = i;
|
||||
AddUIChild(headButton);
|
||||
|
||||
buttonList.push(headButton);
|
||||
headX = headX + 67;
|
||||
if (i % 4 == 3) {
|
||||
headX = 0;
|
||||
headY = headY + 67;
|
||||
}
|
||||
}
|
||||
|
||||
// 点击事件回调
|
||||
for (local i = 0; i < buttonList.len(); i++) {
|
||||
|
||||
local headButton = buttonList[i];
|
||||
|
||||
headButton.OnClick = function (b) {
|
||||
if (clickOff) return;
|
||||
|
||||
for (local t = 0; t < buttonList.len(); t++) {
|
||||
local button = buttonList[t];
|
||||
button.state = 0;
|
||||
button.ChangeFrame();
|
||||
}
|
||||
headButton.state = 2;
|
||||
headButton.ChangeFrame();
|
||||
|
||||
if (OnClick) OnClick(headButton.tag);
|
||||
|
||||
}.bindenv(this);
|
||||
}
|
||||
|
||||
local button = buttonList[0];
|
||||
button.state = 2;
|
||||
button.ChangeFrame();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//头像按钮
|
||||
class HeadButton extends Yosin_CommonUi {
|
||||
|
||||
DeBugMode = true;
|
||||
|
||||
// 角色名称
|
||||
name = "";
|
||||
|
||||
|
|
@ -134,13 +524,22 @@ class HeadButton extends Yosin_CommonUi {
|
|||
state = 0;
|
||||
spriteState = 0;
|
||||
|
||||
// 角色头像精灵
|
||||
CharacterSprite = null;
|
||||
tag = 0;
|
||||
|
||||
// 角色头像覆盖精灵
|
||||
CharacterSpriteCover = null;
|
||||
// 角色头像
|
||||
Character = null;
|
||||
jobNameText = null;
|
||||
|
||||
constructor(X, Y, jobEnum, state = 0) {
|
||||
// 角色头像覆盖
|
||||
CharacterCover = null;
|
||||
|
||||
yellowBox = null;
|
||||
|
||||
blueBox = null;
|
||||
|
||||
|
||||
|
||||
constructor(X, Y, jobEnum, name, state = 0) {
|
||||
|
||||
this.name = name;
|
||||
this.state = state;
|
||||
|
|
@ -152,33 +551,59 @@ class HeadButton extends Yosin_CommonUi {
|
|||
base.constructor(X, Y, 62, 62);
|
||||
|
||||
// 角色头像
|
||||
CharacterSprite = CL_SpriteObject();
|
||||
CharacterSprite.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId));
|
||||
CharacterSprite.SetPosition(0, 0);
|
||||
Addchild(CharacterSprite);
|
||||
Character = CL_SpriteObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId)
|
||||
Character.SetPosition(0, 0);
|
||||
Addchild(Character);
|
||||
|
||||
CharacterSpriteCover = CL_SpriteObject();
|
||||
CharacterSpriteCover.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", state));
|
||||
CharacterSprite.SetPosition(0, 0);
|
||||
Addchild(CharacterSpriteCover);
|
||||
// 转职
|
||||
jobNameText = FontAssetManager.GenerateNormal(name, true, {
|
||||
color = sq_RGBA(194, 160, 53, 255)
|
||||
});
|
||||
jobNameText.SetPosition( 31 - jobNameText.GetSize().w / 2 , 45);
|
||||
Addchild(jobNameText);
|
||||
|
||||
CharacterCover = CL_SpriteObject( "sprite/interface2/charactercreatever2/characterbtn.img", 0)
|
||||
CharacterCover.SetPosition(0, 0);
|
||||
Addchild(CharacterCover);
|
||||
|
||||
yellowBox = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbtn.img", 2);
|
||||
yellowBox.SetPosition(0, 0);
|
||||
yellowBox.SetVisible(false);
|
||||
Addchild(yellowBox);
|
||||
|
||||
blueBox = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbtn.img", 1);
|
||||
blueBox.SetPosition(0, 0);
|
||||
blueBox.SetVisible(false);
|
||||
Addchild(blueBox);
|
||||
|
||||
ChangeFrame();
|
||||
}
|
||||
|
||||
function ChangeFrame() {
|
||||
if (spriteState == state) return;
|
||||
print(111);
|
||||
spriteState = state;
|
||||
|
||||
//不可用
|
||||
if (state == 3) {
|
||||
CharacterSprite.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId + 1));
|
||||
CharacterSpriteCover.SetVisible(false);
|
||||
Character.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId + 1));
|
||||
CharacterCover.SetVisible(false);
|
||||
yellowBox.SetVisible(false);
|
||||
blueBox.SetVisible(false);
|
||||
} else if (state == 2) {
|
||||
CharacterCover.SetVisible(false);
|
||||
yellowBox.SetVisible(true);
|
||||
blueBox.SetVisible(false);
|
||||
} else if (state == 1) {
|
||||
CharacterCover.SetVisible(false);
|
||||
yellowBox.SetVisible(false);
|
||||
blueBox.SetVisible(true);
|
||||
}else{
|
||||
CharacterSprite.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId));
|
||||
CharacterSpriteCover.SetVisible(true)
|
||||
CharacterSpriteCover.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", state));
|
||||
CharacterCover.SetVisible(true);
|
||||
yellowBox.SetVisible(false);
|
||||
blueBox.SetVisible(false);
|
||||
}
|
||||
|
||||
spriteState = state;
|
||||
|
||||
}
|
||||
|
||||
function Proc(Dt) {
|
||||
|
|
@ -188,7 +613,7 @@ class HeadButton extends Yosin_CommonUi {
|
|||
} else {
|
||||
//按下
|
||||
if (isLBDown) {
|
||||
state = 2;
|
||||
// state = 2;
|
||||
}
|
||||
//悬停
|
||||
else if (isInRect) {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ enum CHARACTERJOB {
|
|||
MAGE // 女魔法师
|
||||
PRIEST // 男圣职者
|
||||
AT_GUNNER // 女神枪手
|
||||
THIEF // 女暗夜使者
|
||||
THIEF // 暗夜使者
|
||||
AT_FIGHTER // 男格斗家
|
||||
AT_MAGE // 男魔法师
|
||||
DEMONIC_SWORDMAN // 黑暗武士
|
||||
|
|
|
|||
Loading…
Reference in New Issue