net中汉字转变来为拼音,成语大挑衅

图片 9

net中汉字转变来为拼音,成语大挑衅

1.应用项景

  • 将汉字转变为拼音(eg:”小编爱您”———>”WOAINI”)
  • net中汉字转变来为拼音,成语大挑衅。取各样汉字的首字母(eg:”小编是中华夏族”———>”WSZG福睿斯”)

本篇将首要讲授游戏界面包车型客车创设和安顿,会接受到egret.eui的自定义组件,能够很直观的营造三个娱乐全部,这里大家依然只必要运用EgretWing就能够达成目标,本篇或许是篇幅起码的壹个,可是涉及自定义组件和类世襲,希望能够读者能够看明白,那对以往的嬉戏开垦的沉思支持非常大。

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的肌肤,大小设置为80×80:

图片 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的布局性格,比方下边包车型客车应对字里生龙活虎共是十八个汉字,能够利用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能源方面请到第二篇的背后下载) 

admin

网站地图xml地图