澳门至尊网站-首页

您的位置:澳门至尊网站 > 免费资源 > Egret游戏开发,net中汉字转换成为拼音

Egret游戏开发,net中汉字转换成为拼音

2019-10-19 23:12

1.选择场景

  • 将汉字调换为拼音(eg:"笔者爱你"———>"WOAINI")
  • 取各样汉字的首字母(eg:"笔者是神州人"———>"WSZGPRADO")

本篇将第大器晚成传授游戏分界面包车型客车创设和规划,会选取到egret.eui的自定义组件,能够很直观的创设贰个玩耍全体,这里我们照样只要求选用EgretWing就足以完成目标,本篇恐怕是篇幅起码的叁个,但是关乎自定义组件和类承接,希望能够读者能够看理解,那对清朝的24日游开拓的怀恋扶植特别大。

2.事关到的组件

  • 零件1:ToolGood.Words【小编其实的就是这种】
  1. 零件名称:ToolGood.Words
  2. nuget地址:
  3. github地址【提示:500多个star】

自定义控件布局

3.关键代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ToolGood.Words;

namespace PinYinXiangGuan
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {

                var name = Console.ReadLine();
                if (string.IsNullOrEmpty(name))
                {
                    break;
                }
                //获取汉字的首字母
                Console.WriteLine(WordsHelper.GetFirstPinYin(name));
            }

        }
    }
}

率先先创设一个名字为SceneGameSkin的exml皮肤,直接在这里其间拖拖拽拽拼出开头的分界面:
图片 1

4.重要代码截图

图片 2

上边是标题区,下边是回应区,此时,找了了一下能源,发掘字的四方未有放进能源文件,没提到,大家得以一向动用eui.Rect这几个基本空间成立一个字块出来,exml描述如下:

5.假设有其余好的机件推荐,款待各位大佬补充

图片 3

<e:Rect ellipseWidth="20" fillColor="0xFFFFFF" strokeColor="0x0276D0" strokeWeight="4" ellipseHeight="20" right="0" left="0" bottom="0" top="0"/>

图片 4

探望是否和图片上的很像,在编辑器里的主导面板属性中是平素不ellipseWidth、ellipseHeight等等这么些属性的,需要点属性栏右上角的兼具属性标签手艺展现,然后微调就能够。

唯独,独有这么些字块背景是没用的,还索要充实Label来展现文字,但即使一个二个的非常就很劳碌了,能否应用skin来自己做三个自定组件本身管理并拍卖逻辑吗?那些不会细小略,先构造贰个skin然后配上八个自定义组件的代码就能够达成了。

新建二个基于eui.Component的肌肤,大小设置为80x80:

图片 5

<?xml version='1.0' encoding='utf-8'?>
<e:Skin class="WordSkin" width="80" height="80" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
    <e:Rect ellipseWidth="20" fillColor="0xFFFFFF" strokeColor="0x0276D0" strokeWeight="4" ellipseHeight="20" right="0" left="0" bottom="0" top="0"/>
    <e:Label id="lb_text" text="字" horizontalCenter="0" verticalCenter="0" textColor="0x000000" size="60"/>
</e:Skin>

新建二个typescript类,这里的名字就叫Word,承袭自eui.Component,管理代码如下:

//普通的一个字,用来做问题的字块使用
class Word extends eui.Component {
    protected lb_text:eui.Label;
    public constructor() {
          super();
          this.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onclick_tap,this);
    }
    protected onclick_tap(){
        console.log(this.lb_text.text);
    }
    //这里没有做成属性的原因是因为当应用到eui的时候,Skin还未指定,运行时候会出现报错,如果指定了SkinName,那么就会产生两次eui的构建浪费内存
    public setWordText(value:string){
        this.lb_text.text = value;
    }
    public getWordText():string{
        return this.lb_text.text;
    }
}

保留编写翻译一下,然后在UI设计器的零部件里就会来看二个Word自定义组件,然后将它拖进SceneGameSkin里,奇异,怎么什么都尚未啊,因为还尚无点名身体发肤:

图片 6 图片 7

钦点好肌肤后,就能彰显正确了,上边早先进行布局操作,拖放摆好Group到SceneGameSkin的分界面中,这里就能够用上Group的布局性子,比方上面包车型客车答应字里如日中天共是18个汉字,能够使用Tile的主意排列成一个稳步的阵列:

图片 8

如出生气勃勃辙上边的主题素材栏中,能够动用Group的横向排列,调治你的分界面直到满足。

图片 9

三番五次的办法扩充自定义组件

那正是说好了,自此基本桃月经成功,日常的话,后边就能够完全靠代码调节来落到实处字块的体现和拍卖了,但那还非常不足,因为上边包车型地铁字和地方的字即使样子同样,但管理的逻辑差别样,比方说,上面包车型大巴字是一些就自身未有,同期将文件放置到下面的答案中,而地点的字点击就能够移除自个儿的文书呈现,同一时间将下边包车型地铁对应字块彰显出来,假若用比较笨的办法,正是在代码中加三个字典对应起来,然后扩充一大堆,看起来很绕圈的代码,其实这里的娱乐逻辑极粗略,三个答案字只会相应一个答应字,假如在组件上带上回答字块的对象,不就好管理了吗?固然每一种Word控件都增添叁个变量保存选定太显得暴力,这里能够动用持续增添贰个SelectWord变量,而任何的逻辑能够因此重载方法来保持代码的简洁性,上面正是得以达成了四个一而再自Word的AnswerWord类,这么些类一样在保存编写翻译后,也会产出在自定义组件中,

//继承自“问题字”,“答案字”是放在上面回答区域,
//由于当答案字点击的时候,答案字会消失并将对应的问题字还原显示
class AnswerWord extends Word{
    public SelectWord:Word = null;
    public constructor() {
        super();
    }
    protected onclick_tap() {
        if(this.SelectWord != null){
            this.SelectWord.visible = true;
            this.SelectWord = null;
            this.setWordText("");
        }
        console.log("AnswerWord");
    }
    //当一个问题字被选择添加到回答的时,设置不可见,并保存到本对象中以后使用
    public SetSelectWord(word:Word){
        word.visible = false;
        this.setWordText(word.getWordText());
        this.SelectWord = word;
    }
}

那正是说我们将地点的八个汉字都给替换到AnswerWord,点击一下严阵以待看看命令栏里的出口,不知情的能够参照上边包车型大巴申明。

末段的SceneGameSkin.exml代码如下:

图片 10图片 11

<?xml version='1.0' encoding='utf-8'?>
<e:Skin class="SceneGameSkin" width="720" height="1136" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing" xmlns:ns1="*">
    <e:Image source="GameBG3_jpg" left="0" top="0" bottom="0" right="0"/>
    <e:Image source="WordFrame_png" x="39" y="120"/>
    <e:Group id="group_words" width="538" height="417" x="108" y="637">
        <ns1:Word x="80" y="106" skinName="WordSkin"/>
        <ns1:Word skinName="WordSkin" y="116" x="90"/>
        <ns1:Word skinName="WordSkin" y="126" x="100"/>
        <ns1:Word skinName="WordSkin" y="136" x="110"/>
        <ns1:Word skinName="WordSkin" y="146" x="120"/>
        <ns1:Word skinName="WordSkin" y="156" x="130"/>
        <ns1:Word skinName="WordSkin" y="166" x="140"/>
        <ns1:Word skinName="WordSkin" y="176" x="150"/>
        <ns1:Word skinName="WordSkin" y="186" x="160"/>
        <ns1:Word skinName="WordSkin" y="196" x="170"/>
        <ns1:Word skinName="WordSkin" y="206" x="180"/>
        <ns1:Word skinName="WordSkin" y="216" x="190"/>
        <ns1:Word skinName="WordSkin" y="226" x="200"/>
        <ns1:Word skinName="WordSkin" y="236" x="210"/>
        <ns1:Word skinName="WordSkin" y="246" x="220"/>
        <ns1:Word skinName="WordSkin" y="256" x="230"/>
        <ns1:Word skinName="WordSkin" y="266" x="240"/>
        <ns1:Word skinName="WordSkin" y="276" x="250"/>
        <ns1:Word skinName="WordSkin" y="286" x="260"/>
        <ns1:Word skinName="WordSkin" y="296" x="270"/>
        <e:layout>
            <e:TileLayout horizontalGap="30" verticalGap="30"/>
        </e:layout>
    </e:Group>
    <e:Button id="btn_back" x="11" y="8">
        <e:skinName>
            <e:Skin states="up,down,disabled">
                <e:Image width="100%" height="100%" source="BackBtn_png" source.down="BackBtn1_png"/>
                <e:Label id="labelDisplay" horizontalCenter="0" verticalCenter="0"/>
            </e:Skin>
        </e:skinName>
    </e:Button>
    <e:Image id="img_question" width="390" height="260" y="179" horizontalCenter="0"/>
    <e:Group id="group_answer" width="373" height="95" x="177" y="464">
        <ns1:AnswerWord skinName="WordSkin" y="478" x="185"/>
        <ns1:AnswerWord skinName="WordSkin" y="478" x="284"/>
        <ns1:AnswerWord skinName="WordSkin" y="478" x="378"/>
        <ns1:AnswerWord skinName="WordSkin" y="478" x="475"/>
        <e:layout>
            <e:HorizontalLayout gap="15"/>
        </e:layout>
    </e:Group>
</e:Skin>

SceneGameSkin.exml

本篇已经完工,这里上学应用了自定义组件、类承袭(或说组件继承),来搭建和规划游戏的主分界面,将基础做好,后边的费用工作就轻松相当多了。

本篇项目源码:ChengyuTiaozhan3.zip(由于知乎的文件大小限制,resource能源方面请到第二篇的末尾下载) 

本文由澳门至尊网站发布于免费资源,转载请注明出处:Egret游戏开发,net中汉字转换成为拼音

关键词: