egret自定义控件

本文介绍了如何在Egret游戏中创建自定义控件,特别是实现一个支持多语言的Label。通过创建皮肤文件和对应的实现类,详细步骤包括:设计XML皮肤、编写实现类,并将控件添加到项目主题中,确保正确引用模块名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在游戏中我们难免会用到自定义控件,比如多语言翻译等

egret的自定义控件目前需要和皮肤进行绑定,才可以使用,下面我们一步步来实现一个多语言支持的Label

一:首先,我们在自己的皮肤文件夹(可以是resource下面的任意文件夹)下面新建一个皮肤
<?xml version='1.0' encoding='utf-8'?>
<e:Skin class="LocalLabelSkin" minHeight="10" minWidth="10" xmlns:e="http://ns.egret.com/eui">
    <e:Label id="myLabel" text="标签" x="0" y="0"/>
</e:Skin>

比如这种

二:光有皮肤还不够,我们需要为这个皮肤写一个对应的实现类
module component {
    /**
     *
     * @author xxx
     * @date 2016.07.04
     * @desc 多语言label
     *
     */
    export class SFLocalLabel extends eui.Component{
        private myLabel:eui.Label;
        public constructor() {
            super();
            this.skinName ="LocalLabelSkin";
        }
        public get size(): number {
            return this.myLabel.size;
        }

        public set size(value: number) {
            this.myLabel.size;
        }
        /**
         * 重载设置文本
         */ 
        public set text(value:string){
            this.myLabel.text = manager.SFLanaguageManager.getInstance<manager.SFLanaguageManager>().translate(value);
        }
        public get text(): string {
            return this.myLabel.text;
        }
        public get bold(): boolean {
            return this.myLabel.bold;
        }

        public set bold(value: boolean) {
            this.myLabel.bold=value;
        } 
        public get textColor(): number {
            return this.myLabel.textColor;
        }

        public set textColor(value: number) {
            this.myLabel.textColor=value;
        }
    }
}

模块是component.

现在这样还不能直接使用,我们需要把这个控件添加到我们的主题中
打开-项目-主题,添加控件,然后添加上我们的自定义控件就可以了,记住,控件名一定要包含模块名,不然找不到的,这里就是component.SFLocalLabel 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值