增加用户名密码登录

This commit is contained in:
2026-03-12 10:52:03 +08:00
parent b11d1c94c1
commit bedc2009fc
22 changed files with 275 additions and 29 deletions

View File

@@ -249,7 +249,7 @@ bool LoginMission::onSocketSubLogonSuccess(void* data, int size)
pGlobalUserData->dwExperience =pData->dwExperience; pGlobalUserData->dwExperience =pData->dwExperience;
pGlobalUserData->cbInsureEnabled = pData->cbInsureEnabled; pGlobalUserData->cbInsureEnabled = pData->cbInsureEnabled;
pGlobalUserData->cbWXShareTimes = pData->cbWXShareTimes; pGlobalUserData->cbWXShareTimes = pData->cbWXShareTimes;
//strncpy(pGlobalUserData->szNickName, (char*)pData->szNickName, countarray(pGlobalUserData->szNickName)-1); strncpy(pGlobalUserData->szNickName, (char*)pData->szNickName, countarray(pGlobalUserData->szNickName)-1);
strncpy(pGlobalUserData->szAccounts, ((char*)pData->szAccounts), countarray(pGlobalUserData->szAccounts)-1); strncpy(pGlobalUserData->szAccounts, ((char*)pData->szAccounts), countarray(pGlobalUserData->szAccounts)-1);
// 抽奖信息; // 抽奖信息;

View File

@@ -7,8 +7,14 @@
#include "GlobalJosn.h" #include "GlobalJosn.h"
#include "YvVoiceManager.hpp" #include "YvVoiceManager.hpp"
#include "13S_GameLogic.h" #include "13S_GameLogic.h"
#include "MD5.h"
LogonScene::LogonScene() LogonScene::LogonScene()
: m_pPanelAccount(nullptr)
, m_pTxtUsername(nullptr)
, m_pTxtPassword(nullptr)
, m_pBtnLogin(nullptr)
, m_pBtnClose(nullptr)
{ {
m_kLoginMission.setUrl(GlobalJosn::getInstance()->m_strLogonIp.c_str(), GlobalJosn::getInstance()->m_iPort); m_kLoginMission.setUrl(GlobalJosn::getInstance()->m_strLogonIp.c_str(), GlobalJosn::getInstance()->m_iPort);
@@ -43,6 +49,31 @@ bool LogonScene::init()
btnWeiXinLogon->addClickEventListener(CC_CALLBACK_1(LogonScene::onWeiXinLogon, this)); btnWeiXinLogon->addClickEventListener(CC_CALLBACK_1(LogonScene::onWeiXinLogon, this));
// Account login entry button
auto btnAccountLogin = (Button*)rootPanel->getChildByName("btnAccountLogin");
if (btnAccountLogin)
{
btnAccountLogin->addClickEventListener(CC_CALLBACK_1(LogonScene::onShowAccountPanel, this));
}
// Account login panel
m_pPanelAccount = rootPanel->getChildByName("panelAccount");
if (m_pPanelAccount)
{
m_pPanelAccount->setVisible(false);
auto imgBg = m_pPanelAccount->getChildByName("imgBg");
if (imgBg)
{
m_pTxtUsername = (TextField*)imgBg->getChildByName("txtUsername");
m_pTxtPassword = (TextField*)imgBg->getChildByName("txtPassword");
m_pBtnLogin = (Button*)imgBg->getChildByName("btnLogin");
m_pBtnClose = (Button*)imgBg->getChildByName("btnClose");
if (m_pBtnLogin) m_pBtnLogin->addClickEventListener(CC_CALLBACK_1(LogonScene::onUsernameLogon, this));
if (m_pBtnClose) m_pBtnClose->addClickEventListener(CC_CALLBACK_1(LogonScene::onHideAccountPanel, this));
}
}
//对手机返回键的监听 //对手机返回键的监听
auto keyListener = EventListenerKeyboard::create(); auto keyListener = EventListenerKeyboard::create();
//和回调函数绑定 //和回调函数绑定
@@ -130,22 +161,37 @@ void LogonScene::onGPLoginSuccess()
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance(); CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData(); tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
//UserDefault::getInstance()->setStringForKey("Accounts",pGlobalUserData->szAccounts); //UserDefault::getInstance()->setStringForKey("Accounts",pGlobalUserData->szAccounts);
//UserDefault::getInstance()->setStringForKey("Password",m_kPssword); //UserDefault::getInstance()->setStringForKey("Password",m_kPssword);
m_kPssword = "WeiXinPassword";
if (pGlobalUserData != nullptr) if (pGlobalUserData != nullptr)
{ {
UserDefault::getInstance()->setStringForKey("Accounts", pGlobalUserData->szAccounts); //UserDefault::getInstance()->setStringForKey("Accounts", pGlobalUserData->szAccounts);
UserDefault::getInstance()->setStringForKey("Password", m_kPssword); //UserDefault::getInstance()->setStringForKey("Password", m_kPssword);
// 更新微信最新信息; // 更新微信最新信息;
pGlobalUserData->cbGender = m_kWeiXinUserInfo.sex; // Only update WeChat info for WeChat login (not username login)
strncpy(pGlobalUserData->szNickName, m_kWeiXinUserInfo.nickname.c_str(), LEN_NICKNAME - 1); if (!m_kWeiXinUserInfo.openid.empty())
strncpy(pGlobalUserData->szHeadHttp, m_kWeiXinUserInfo.headimgurl.c_str(), LEN_HEAD_HTTP - 1); {
pGlobalUserData->cbGender = m_kWeiXinUserInfo.sex;
strncpy(pGlobalUserData->szNickName, m_kWeiXinUserInfo.nickname.c_str(), LEN_NICKNAME - 1);
strncpy(pGlobalUserData->szHeadHttp, m_kWeiXinUserInfo.headimgurl.c_str(), LEN_HEAD_HTTP - 1);
#if CC_TARGET_PLATFORM != CC_PLATFORM_WIN32 #if CC_TARGET_PLATFORM != CC_PLATFORM_WIN32
UserInfo::Instance().modifyWeiXinInfo(m_kWeiXinUserInfo.sex, m_kWeiXinUserInfo.nickname, m_kWeiXinUserInfo.headimgurl); UserInfo::Instance().modifyWeiXinInfo(m_kWeiXinUserInfo.sex, m_kWeiXinUserInfo.nickname, m_kWeiXinUserInfo.headimgurl);
#endif #endif
}
else
{
strcpy(pGlobalUserData->szPassword, m_kPssword.c_str());
// Username login: clear head URL to use default avatar
pGlobalUserData->szHeadHttp[0] = '\0';
}
} }
} }
@@ -339,4 +385,86 @@ void LogonScene::ResponseResult(rapidjson::Document* pDoc)
} }
#endif #endif
}
//==================================================
// Username/Password Login
//==================================================
void LogonScene::onShowAccountPanel(Ref*)
{
YSAudioEngine::Instance().playBtnClickEffect();
if (m_pPanelAccount)
{
m_pPanelAccount->setVisible(true);
if (m_pTxtUsername) m_pTxtUsername->setString(UserDefault::getInstance()->getStringForKey("Accounts", ""));
if (m_pTxtPassword) m_pTxtPassword->setString(UserDefault::getInstance()->getStringForKey("Password", ""));
}
}
void LogonScene::onHideAccountPanel(Ref*)
{
YSAudioEngine::Instance().playBtnClickEffect();
if (m_pPanelAccount)
{
m_pPanelAccount->setVisible(false);
}
}
void LogonScene::onUsernameLogon(Ref*)
{
YSAudioEngine::Instance().playBtnClickEffect();
std::string strUsername = "";
std::string strPassword = "";
if (m_pTxtUsername) strUsername = m_pTxtUsername->getString();
if (m_pTxtPassword) strPassword = m_pTxtPassword->getString();
// Input validation
if (strUsername.empty())
{
PopScene::Instance().show(utility::a_u8("请输入用户名"));
return;
}
if (strPassword.empty())
{
PopScene::Instance().show(utility::a_u8("请输入密码"));
return;
}
if (strUsername.length() < 4)
{
PopScene::Instance().show(utility::a_u8("用户名至少4个字符"));
return;
}
if (strPassword.length() < 6)
{
PopScene::Instance().show(utility::a_u8("密码至少6个字符"));
return;
}
if (m_pPanelAccount) m_pPanelAccount->setVisible(false);
LoadingScene::Instance().show(this);
// 保存输入的 用户名和密码
UserDefault::getInstance()->setStringForKey("Accounts", strUsername);
UserDefault::getInstance()->setStringForKey("Password", strPassword);
// MD5 encrypt password
m_kPssword = md5(strPassword);
// Clear WeChat info (mark as username login)
m_kWeiXinUserInfo = WxUserInfo();
// Build login packet
CMD_GP_LogonAccounts loginAccount;
zeromemory(&loginAccount, sizeof(loginAccount));
loginAccount.dwPlazaVersion = Helps::Instance()->GetPlazaVersion();
loginAccount.cbValidateFlags = MB_VALIDATE_FLAGS | LOW_VER_VALIDATE_FLAGS;
strcpy(loginAccount.szAccounts, strUsername.c_str());
strcpy(loginAccount.szPassword, m_kPssword.c_str());
loginAccount.szOpenId[0] = '\0';
loginAccount.szUnionid[0] = '\0';
cocos2d::log("Username Login: account=%s", loginAccount.szAccounts);
m_kLoginMission.loginAccount(loginAccount);
} }

View File

@@ -1,7 +1,8 @@
#pragma once #pragma once
#include "cocos2d.h" #include "cocos2d.h"
#include "cocostudio/CocoStudio.h" #include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#include "MD5.h"
#include "MissionWeiXin.h" #include "MissionWeiXin.h"
#include "LoginMission.h" #include "LoginMission.h"
@@ -51,10 +52,22 @@ public:
//请求版本信息结果 //请求版本信息结果
void ResponseResult(rapidjson::Document* pDoc); void ResponseResult(rapidjson::Document* pDoc);
// Username login
void onShowAccountPanel(Ref*);
void onHideAccountPanel(Ref*);
void onUsernameLogon(Ref*);
private: private:
LoginMission m_kLoginMission; LoginMission m_kLoginMission;
std::string m_kPssword; std::string m_kPssword;
WxUserInfo m_kWeiXinUserInfo; WxUserInfo m_kWeiXinUserInfo;
// Account login UI
Node* m_pPanelAccount;
cocos2d::ui::TextField* m_pTxtUsername;
cocos2d::ui::TextField* m_pTxtPassword;
cocos2d::ui::Button* m_pBtnLogin;
cocos2d::ui::Button* m_pBtnClose;
}; };

View File

@@ -27,6 +27,7 @@
<Image Name="scmj_system_notice_bg.png" /> <Image Name="scmj_system_notice_bg.png" />
<Image Name="scmj_system_tips_bg.png" /> <Image Name="scmj_system_tips_bg.png" />
<Image Name="scmj_zjxq_background.png" /> <Image Name="scmj_zjxq_background.png" />
<Image Name="username_login_bg.png" />
</Folder> </Folder>
<Folder Name="Font"> <Folder Name="Font">
<TTF Name="minijh.TTF" /> <TTF Name="minijh.TTF" />
@@ -261,6 +262,7 @@
<Folder Name="Logon"> <Folder Name="Logon">
<Image Name="bg.png" /> <Image Name="bg.png" />
<Image Name="dengdai.png" /> <Image Name="dengdai.png" />
<Image Name="entry_btn_username.png" />
<Image Name="entry_btn_weixin2.png" /> <Image Name="entry_btn_weixin2.png" />
<Image Name="gou.png" /> <Image Name="gou.png" />
<Image Name="heikuang.png" /> <Image Name="heikuang.png" />

View File

@@ -1,5 +1,5 @@
<SolutionConfig Version="3.10.0.0"> <SolutionConfig Version="3.10.0.0">
<PublishDirectory Value="H:/git/wnmj/wnmj/Resources/" /> <PublishDirectory Value="D:\Mine\res" />
<PackageDirectory Value="package/" /> <PackageDirectory Value="package/" />
<PublishType Value="Reference" /> <PublishType Value="Reference" />
<SolutionSize Value="960 * 640" /> <SolutionSize Value="960 * 640" />

View File

@@ -31,9 +31,6 @@
<Item Key="TabsParamsKey"> <Item Key="TabsParamsKey">
<Value ctype="TabsInfo"> <Value ctype="TabsInfo">
<OpenedDocuments> <OpenedDocuments>
<FilePathData Path="Platform/MainScene.csd" />
<FilePathData Path="Platform/UnionScene.csd" />
<FilePathData Path="Platform/CreateScene.csd" />
<FilePathData Path="Platform/LogonScene.csd" /> <FilePathData Path="Platform/LogonScene.csd" />
</OpenedDocuments> </OpenedDocuments>
<ActiveDocument Path="Platform/LogonScene.csd" /> <ActiveDocument Path="Platform/LogonScene.csd" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -4,65 +4,171 @@
<Content> <Content>
<Animation Duration="0" Speed="1.0000" /> <Animation Duration="0" Speed="1.0000" />
<ObjectData Name="Scene" Tag="3" ctype="GameNodeObjectData"> <ObjectData Name="Scene" Tag="3" ctype="GameNodeObjectData">
<Size X="1280.0000" Y="720.0000" /> <Size X="960.0000" Y="640.0000" />
<Children> <Children>
<AbstractNodeData Name="bgSprite" CanEdit="False" ActionTag="-860251773" Tag="4" IconVisible="False" ctype="SpriteObjectData"> <AbstractNodeData Name="bgSprite" CanEdit="False" ActionTag="-860251773" Tag="4" IconVisible="False" RightMargin="-320.0000" TopMargin="-80.0000" ctype="SpriteObjectData">
<Size X="1280.0000" Y="720.0000" /> <Size X="1280.0000" Y="720.0000" />
<AnchorPoint /> <AnchorPoint />
<Position /> <Position />
<Scale ScaleX="1.0000" ScaleY="1.0000" /> <Scale ScaleX="1.0000" ScaleY="1.0000" />
<CColor A="255" R="255" G="255" B="255" /> <CColor A="255" R="255" G="255" B="255" />
<PrePosition /> <PrePosition />
<PreSize X="1.0000" Y="1.0000" /> <PreSize X="1.3333" Y="1.1250" />
<FileData Type="Normal" Path="Platform/Logon/bg.png" Plist="" /> <FileData Type="Normal" Path="Platform/Logon/bg.png" Plist="" />
<BlendFunc Src="1" Dst="771" /> <BlendFunc Src="1" Dst="771" />
</AbstractNodeData> </AbstractNodeData>
<AbstractNodeData Name="btnWeiXinLogon" CanEdit="False" ActionTag="534804348" Tag="6" IconVisible="False" LeftMargin="473.0000" RightMargin="473.0000" TopMargin="495.9373" BottomMargin="119.0627" TouchEnable="True" FontSize="14" LeftEage="15" RightEage="15" TopEage="11" BottomEage="11" Scale9OriginX="15" Scale9OriginY="11" Scale9Width="304" Scale9Height="83" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="ButtonObjectData"> <AbstractNodeData Name="btnWeiXinLogon" CanEdit="False" ActionTag="534804348" Tag="6" IconVisible="False" LeftMargin="410.9993" RightMargin="215.0007" TopMargin="415.9373" BottomMargin="119.0627" TouchEnable="True" FontSize="14" LeftEage="15" RightEage="15" TopEage="11" BottomEage="11" Scale9OriginX="15" Scale9OriginY="11" Scale9Width="304" Scale9Height="83" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="ButtonObjectData">
<Size X="334.0000" Y="105.0000" /> <Size X="334.0000" Y="105.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" /> <AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="640.0000" Y="171.5627" /> <Position X="577.9993" Y="171.5627" />
<Scale ScaleX="1.0000" ScaleY="1.0000" /> <Scale ScaleX="0.5581" ScaleY="0.5866" />
<CColor A="255" R="255" G="255" B="255" /> <CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.5000" Y="0.2383" /> <PrePosition X="0.6021" Y="0.2681" />
<PreSize X="0.2609" Y="0.1458" /> <PreSize X="0.3479" Y="0.1641" />
<TextColor A="255" R="65" G="65" B="70" /> <TextColor A="255" R="65" G="65" B="70" />
<NormalFileData Type="Normal" Path="Platform/Logon/entry_btn_weixin2.png" Plist="" /> <NormalFileData Type="Normal" Path="Platform/Logon/entry_btn_weixin2.png" Plist="" />
<OutlineColor A="255" R="255" G="0" B="0" /> <OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" /> <ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData> </AbstractNodeData>
<AbstractNodeData Name="ckboxAgree" CanEdit="False" ActionTag="-1204790824" Tag="7" IconVisible="False" LeftMargin="507.9994" RightMargin="716.0006" TopMargin="647.1973" BottomMargin="16.8027" CheckedState="True" ctype="CheckBoxObjectData"> <AbstractNodeData Name="ckboxAgree" CanEdit="False" ActionTag="-1204790824" Tag="7" IconVisible="False" LeftMargin="507.9994" RightMargin="396.0006" TopMargin="567.1973" BottomMargin="16.8027" CheckedState="True" ctype="CheckBoxObjectData">
<Size X="56.0000" Y="56.0000" /> <Size X="56.0000" Y="56.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" /> <AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="535.9994" Y="44.8027" /> <Position X="535.9994" Y="44.8027" />
<Scale ScaleX="1.0000" ScaleY="1.0000" /> <Scale ScaleX="1.0000" ScaleY="1.0000" />
<CColor A="255" R="255" G="255" B="255" /> <CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.4187" Y="0.0622" /> <PrePosition X="0.5583" Y="0.0700" />
<PreSize X="0.0437" Y="0.0778" /> <PreSize X="0.0583" Y="0.0875" />
<NormalBackFileData Type="Normal" Path="Platform/Logon/heikuang.png" Plist="" /> <NormalBackFileData Type="Normal" Path="Platform/Logon/heikuang.png" Plist="" />
<NodeNormalFileData Type="Normal" Path="Platform/Logon/gou.png" Plist="" /> <NodeNormalFileData Type="Normal" Path="Platform/Logon/gou.png" Plist="" />
</AbstractNodeData> </AbstractNodeData>
<AbstractNodeData Name="linkAgree" CanEdit="False" ActionTag="-1313187649" Tag="8" IconVisible="False" LeftMargin="577.0000" RightMargin="515.0000" TopMargin="662.1973" BottomMargin="31.8027" ctype="SpriteObjectData"> <AbstractNodeData Name="linkAgree" CanEdit="False" ActionTag="-1313187649" Tag="8" IconVisible="False" LeftMargin="577.0000" RightMargin="195.0000" TopMargin="582.1973" BottomMargin="31.8027" ctype="SpriteObjectData">
<Size X="188.0000" Y="26.0000" /> <Size X="188.0000" Y="26.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" /> <AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="671.0000" Y="44.8027" /> <Position X="671.0000" Y="44.8027" />
<Scale ScaleX="1.0000" ScaleY="1.0000" /> <Scale ScaleX="1.0000" ScaleY="1.0000" />
<CColor A="255" R="255" G="255" B="255" /> <CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.5242" Y="0.0622" /> <PrePosition X="0.6990" Y="0.0700" />
<PreSize X="0.1469" Y="0.0361" /> <PreSize X="0.1958" Y="0.0406" />
<FileData Type="Normal" Path="Platform/Logon/tongyi.png" Plist="" /> <FileData Type="Normal" Path="Platform/Logon/tongyi.png" Plist="" />
<BlendFunc Src="1" Dst="771" /> <BlendFunc Src="1" Dst="771" />
</AbstractNodeData> </AbstractNodeData>
<AbstractNodeData Name="txtVersion" CanEdit="False" ActionTag="-1512667945" Tag="79" IconVisible="False" LeftMargin="1071.5544" RightMargin="26.4456" TopMargin="662.1973" BottomMargin="31.8027" FontSize="26" LabelText="版本v1.0.0.1" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="TextObjectData"> <AbstractNodeData Name="txtVersion" CanEdit="False" ActionTag="-1512667945" Tag="79" IconVisible="False" LeftMargin="1071.5544" RightMargin="-293.5544" TopMargin="582.1973" BottomMargin="31.8027" FontSize="26" LabelText="版本v1.0.0.1" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="TextObjectData">
<Size X="182.0000" Y="26.0000" /> <Size X="182.0000" Y="26.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" /> <AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="1162.5544" Y="44.8027" /> <Position X="1162.5544" Y="44.8027" />
<Scale ScaleX="1.0000" ScaleY="1.0000" /> <Scale ScaleX="1.0000" ScaleY="1.0000" />
<CColor A="255" R="255" G="255" B="255" /> <CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.9082" Y="0.0622" /> <PrePosition X="1.2110" Y="0.0700" />
<PreSize X="0.1422" Y="0.0361" /> <PreSize X="0.1896" Y="0.0406" />
<OutlineColor A="255" R="255" G="0" B="0" /> <OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" /> <ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData> </AbstractNodeData>
<AbstractNodeData Name="btnAccountLogin" CanEdit="False" ActionTag="1570294965" Tag="105" IconVisible="False" LeftMargin="612.9254" RightMargin="13.0746" TopMargin="415.7813" BottomMargin="119.1947" TouchEnable="True" StretchHeightEnable="True" FontSize="14" LeftEage="15" RightEage="15" TopEage="11" BottomEage="11" Scale9OriginX="15" Scale9OriginY="11" Scale9Width="304" Scale9Height="83" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="ButtonObjectData">
<Size X="334.0000" Y="105.0240" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="779.9254" Y="171.7067" />
<Scale ScaleX="0.5581" ScaleY="0.5866" />
<CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.8124" Y="0.2683" />
<PreSize X="0.3479" Y="0.1641" />
<TextColor A="255" R="65" G="65" B="70" />
<NormalFileData Type="Normal" Path="Platform/Logon/entry_btn_username.png" Plist="" />
<OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData>
<AbstractNodeData Name="panelAccount" CanEdit="False" ActionTag="1044463357" VisibleForFrame="False" Tag="110" IconVisible="False" LeftMargin="148.8260" RightMargin="-148.8259" TopMargin="-38.2719" BottomMargin="38.2718" TouchEnable="True" ClipAble="False" BackColorAlpha="153" ComboBoxIndex="1" ColorAngle="90.0000" Scale9Width="1" Scale9Height="1" ctype="PanelObjectData">
<Size X="960.0000" Y="640.0000" />
<Children>
<AbstractNodeData Name="imgBg" ActionTag="2066810041" Tag="111" IconVisible="False" LeftMargin="-7.5016" RightMargin="-7.4984" TopMargin="-4.9985" BottomMargin="-5.0015" LeftEage="184" RightEage="184" TopEage="140" BottomEage="140" Scale9OriginX="184" Scale9OriginY="140" Scale9Width="607" Scale9Height="370" ctype="ImageViewObjectData">
<Size X="975.0000" Y="650.0000" />
<Children>
<AbstractNodeData Name="txtUsernameLabel" ActionTag="349947350" Tag="113" IconVisible="False" LeftMargin="281.1583" RightMargin="595.8417" TopMargin="219.8150" BottomMargin="402.1850" FontSize="28" LabelText="用户名:" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="TextObjectData">
<Size X="98.0000" Y="28.0000" />
<AnchorPoint ScaleX="0.4692" ScaleY="0.4910" />
<Position X="327.1353" Y="415.9344" />
<Scale ScaleX="1.0000" ScaleY="1.1507" />
<CColor A="255" R="69" G="101" B="115" />
<PrePosition X="0.3355" Y="0.6399" />
<PreSize X="0.1005" Y="0.0431" />
<OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData>
<AbstractNodeData Name="txtUsername" ActionTag="349947351" Tag="114" IconVisible="False" LeftMargin="400.1547" RightMargin="274.8453" TopMargin="217.5750" BottomMargin="390.4250" TouchEnable="True" FontSize="26" IsCustomSize="True" LabelText="" PlaceHolderText="请输入用户名" MaxLengthText="20" ctype="TextFieldObjectData">
<Size X="300.0000" Y="42.0000" />
<AnchorPoint ScaleX="0.4974" ScaleY="0.4516" />
<Position X="549.3691" Y="409.3927" />
<Scale ScaleX="1.0000" ScaleY="1.1421" />
<CColor A="255" R="69" G="101" B="115" />
<PrePosition X="0.5635" Y="0.6298" />
<PreSize X="0.3077" Y="0.0646" />
</AbstractNodeData>
<AbstractNodeData Name="txtPasswordLabel" ActionTag="349947352" Tag="115" IconVisible="False" LeftMargin="281.1585" RightMargin="595.8416" TopMargin="285.7213" BottomMargin="336.2787" FontSize="28" LabelText="密 码:" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="TextObjectData">
<Size X="98.0000" Y="28.0000" />
<AnchorPoint ScaleX="0.4692" ScaleY="0.4151" />
<Position X="327.1355" Y="347.9009" />
<Scale ScaleX="1.0000" ScaleY="1.1066" />
<CColor A="255" R="69" G="101" B="115" />
<PrePosition X="0.3355" Y="0.5352" />
<PreSize X="0.1005" Y="0.0431" />
<OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData>
<AbstractNodeData Name="txtPassword" ActionTag="349947353" Tag="116" IconVisible="False" LeftMargin="400.1547" RightMargin="274.8453" TopMargin="283.7927" BottomMargin="324.2073" TouchEnable="True" FontSize="26" IsCustomSize="True" LabelText="" PlaceHolderText="请输入密码" MaxLengthText="20" PasswordEnable="True" ctype="TextFieldObjectData">
<Size X="300.0000" Y="42.0000" />
<AnchorPoint ScaleX="0.5020" ScaleY="0.4395" />
<Position X="550.7581" Y="342.6675" />
<Scale ScaleX="1.0000" ScaleY="1.0371" />
<CColor A="255" R="69" G="101" B="115" />
<PrePosition X="0.5649" Y="0.5272" />
<PreSize X="0.3077" Y="0.0646" />
</AbstractNodeData>
<AbstractNodeData Name="btnLogin" ActionTag="-803849343" Tag="117" IconVisible="False" LeftMargin="266.1620" RightMargin="479.8380" TopMargin="407.7087" BottomMargin="140.2913" TouchEnable="True" FontSize="42" Scale9Enable="True" LeftEage="15" RightEage="15" TopEage="11" BottomEage="11" Scale9OriginX="15" Scale9OriginY="11" Scale9Width="199" Scale9Height="80" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="ButtonObjectData">
<Size X="229.0000" Y="102.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="380.6620" Y="191.2913" />
<Scale ScaleX="0.8500" ScaleY="0.8500" />
<CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.3904" Y="0.2943" />
<PreSize X="0.2349" Y="0.1569" />
<TextColor A="255" R="255" G="255" B="255" />
<NormalFileData Type="Normal" Path="common/Img/common_btn_conform_1.png" Plist="" />
<OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData>
<AbstractNodeData Name="btnClose" ActionTag="-789566110" Tag="118" IconVisible="False" LeftMargin="467.1593" RightMargin="278.8407" TopMargin="407.7087" BottomMargin="140.2913" TouchEnable="True" FontSize="42" Scale9Enable="True" LeftEage="15" RightEage="15" TopEage="11" BottomEage="11" Scale9OriginX="15" Scale9OriginY="11" Scale9Width="199" Scale9Height="80" ShadowOffsetX="2.0000" ShadowOffsetY="-2.0000" ctype="ButtonObjectData">
<Size X="229.0000" Y="102.0000" />
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="581.6593" Y="191.2913" />
<Scale ScaleX="0.8500" ScaleY="0.8500" />
<CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.5966" Y="0.2943" />
<PreSize X="0.2349" Y="0.1569" />
<TextColor A="255" R="255" G="255" B="255" />
<NormalFileData Type="Normal" Path="common/Img/common_btn_cancel_1.png" Plist="" />
<OutlineColor A="255" R="255" G="0" B="0" />
<ShadowColor A="255" R="110" G="110" B="110" />
</AbstractNodeData>
</Children>
<AnchorPoint ScaleX="0.5000" ScaleY="0.5000" />
<Position X="479.9984" Y="319.9985" />
<Scale ScaleX="0.4777" ScaleY="0.6056" />
<CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.5000" Y="0.5000" />
<PreSize X="1.0156" Y="1.0156" />
<FileData Type="Normal" Path="common/background/username_login_bg.png" Plist="" />
</AbstractNodeData>
</Children>
<AnchorPoint ScaleX="0.4573" ScaleY="0.4674" />
<Position X="587.8015" Y="337.3886" />
<Scale ScaleX="1.3378" ScaleY="1.1205" />
<CColor A="255" R="255" G="255" B="255" />
<PrePosition X="0.6123" Y="0.5272" />
<PreSize X="1.0000" Y="1.0000" />
<SingleColor A="255" R="0" G="0" B="0" />
<FirstColor A="255" R="150" G="200" B="255" />
<EndColor A="255" R="255" G="255" B="255" />
<ColorVector ScaleY="1.0000" />
</AbstractNodeData>
</Children> </Children>
</ObjectData> </ObjectData>
</Content> </Content>

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB