参与白鹭引擎游戏制作中遇到的基本问题解决(防忘记)


字号没有 22
mg.alertManager.showAlert(SpecialTeQuanAlert, true, true, TypeTeQuan.CFGID_3);  弹窗跳转
mg.uiManager.show(dialog.RechareTeHuiMain, { tabIndex: TypeFunOpenIndex.XYLC }); 界面跳转

奖励小组件:
这段可以经常看 :  var voBuy: vo.SgActivityListVO = GameModels.sgActivity.getSgActivityListVOByType(game.sgActivityType.xylc_buy);
        var voList: vo.SgActivityRewardListVO[] = voBuy.actRewardListVO;
        for (let i: number = 0; i < this._rwards.length; i++) {
            if (voList[i]) {
                this._rwards[i].data = { reward: voList[i].otherRewards, day: i + 1 };
            }
        }

多个奖励的
    // { reward: voList[i].otherRewards, day: i + 1 }
                var rewards: Array<string> = this.data.reward.split(";");
                for (var i: number = 0; i < this._rwards.length; i++) {
                    var iconBox: components.RewardItemBox = this._rwards[i];
                    if (i < rewards.length) {
                        iconBox.dataSource = rewards[i];
                        this.boxGroup.addChild(iconBox);
                    } else {
                        if (iconBox.parent) {
                            iconBox.parent.removeChild(iconBox);
                        }
                    }
                }

添加未知奖励个数奖励:
if (this.data) {
                this.groupReward.removeChildren();
                var tempFind: templates.dataSetting[] = Templates.getTemplatesByProperty(templates.Map.DATASETTING, "type", 158);
                if (!tempFind) return;
                var findNameList = tempFind[4].value.split(";")
                for (let i = 0; i < findNameList.length; i++) {
                    if (this.data.playerType == findNameList[i].split("_")[0]) {
                        this.labFindName.text = findNameList[i].split("_")[1];
                    }
                }
                var smallAwds: string[] = this.data.rewardItem;
                this._rwards = smallAwds;
                for (let i: number = 0; i < this._rwards.length; i++) {
                    var rend: components.RewardItemBox = new components.RewardItemBox();
                    rend.dataSource = this._rwards[i];
                    this.groupReward.addChild(rend);
                }
            } else {
                this.groupReward.removeChildren();
            }

永久次数:

if (GameModels.clientTag.tagCountSByType(1, TypeClientTag.Talk_7) <= 0) {
                main.mainTalk1.instance.add(7097);
                GameModels.clientTag.clientAddTag(1, TypeClientTag.Talk_7);
            }

给list添加组件
var rend: renderer.ImperialEdictListRenderer;
            for (let i = 0; i < len; i++) {
                rend = this.list.getElementAt(i) as renderer.ImperialEdictListRenderer;
                if (!!rend) {
                    rend.all.x = rend.all.width;
                    rend.showEffect(i);
                }
            }

添加音效:
AudioManager.playSoundByConfID(TypeSound.GET_REWARD);

关闭当前弹窗:
this.dispatchEventWith(egret.Event.CLOSE);

关闭当前打开的所有界面的弹窗或者界面:GameManager文件
mg.uiManager.removeAllDialogs();
mg.alertManager.closeALert();
mg.alertnewManager.closeAllAlert();

读配置表:通过一个任意属性获取本地数据模板
var tempRefine: templates.equipRefine = Templates.getTemplateByProperty(templates.Map.EQUIPREFINE, "lv", this._template.lv);

Templates.ts文件有获取配置表的方法

读配置设置文字(携带参数的,多个参数逗号隔开,依次放在后面),没有参数的直接Language.E_WJDJ1JS
this.openTxt.text = Language.getExpression(Language.E_WJDJ1JS, funcVO.openLv);
文字有颜色的
this.labFind.textFlow = utils.TextFlowMaker.htmlParser(Language.getExpression(Language.E_HYDMSKZHJL, tempFind[3].value, tempFind[2].value));

弹文字tip提示
mg.alertManager.tip(Language.J_HQCG);

序列帧特效
mg.effectManager.bindEffect(this.btnGet, TypeEffectId.BUTTON_EFF_MID);

添加定时器
utils.timer.once(250, this, () => {
            this._isMoveBack = false;
        });

清除定时器
if (this._isMoveBack) return;

配置导出到本地:

七日挑战界面是 jinjietiaozhanview

浅拷贝:concat()

每次上线有奖励的时候显示红点:不把奖励和标记联系在一起,上线的时候先给标记(this._isFirstOpenFind)为true,判断红点的时候同时满足这两个条件 if (this._isFirstOpenFind && newFindRewards.length > 0) return true;

添加滤镜:(按钮变成灰色)
utils.DisplayUtil.addFilter(this.btnLeft, utils.DisplayUtil.GRAY_FILTER2);
清除滤镜:(按钮灰显放开)
utils.DisplayUtil.clearFilter(this.btnLeft);

scroller下面含group 要让group里面居中 要在代码里面设置scroler的宽高

点击事件有时用到
var index = this._items.indexOf(e.currentTarget);

需要mg.uiManager.show的时候需要调用 
Mediator.getMediator(this).onAdd(this, this.enter);
            Mediator.getMediator(this).onRemove(this, this.exit);

如果是界面中的组件的时候 需要在引用的界面里面enter   (eg: this.prospect.enter();)和移除;

锚点设置:思路打开 锚点不一定在图片上,也可以在外面(get)

数组排序:eg:
eventArr.sort((a: vo.GameHoleEventVO, b: vo.GameHoleEventVO) => {
                return a.stepId - b.stepId;
            })
多条件排序:
this._listArr.sort((a: vo.ItemVO, b: vo.ItemVO) => {
                if (a["isSelect"] != b["isSelect"]) {
                    return a["isSelect"] ? -1 : 1;
                } else if (a["isLead"] != b["isLead"]) {
                    return a["isLead"] ? -1 : 1;
                } else if (a.templateProp.quality != b.templateProp.quality) {
                    return b.templateProp.quality - a.templateProp.quality;
                } else if (a.templateProp.id != b.templateProp.id) {
                    return parseInt(a.templateProp.id) - parseInt(b.templateProp.id);
                }
                return 0;
            });
(a-b)此时为升序,即从小到大排序。
当a-b>0时,a>b,相当于return 1,ab之间交换;
当a-b=0时,相当于return 0,不交换,;
当a-b<0时,a<b,相当于return -1,不交换。
如果想要降序,则可以将 return a-b变为return b-a;

隐藏左上角标题在Dialog.ts文件里

注意:使用特效的时候 要注意一下清除特效
清除tween动画:egret.Tween.removeTweens(目标); eg:this

使用物品id从缓存池取出:
itemvo = vo.fromPool(vo.ItemVO, parseInt(GameModels.shengQi.rewardId)) as vo.ItemVO;

问题:遇到弹窗界面里面的代码走了 但是没有弹界面,可以是弹了 界面被关闭导致的 ; 或者在弹窗移除那里断点,看下堆栈,是从哪里关闭的,可能是场景去的是空场景;

派发事件时传参数:
GameModels.hole.dispatchEventWith(mo.ModelHole.HOLE_DOOR);//不传参数的写法
GameModels.hole.dispatchEventWith(mo.ModelHole.HOLE_DOOR, false, this._nextLevel);//传参数的写法
接收: 用 e.data
private onClickHandler(e: egret.Event) {
    this._nextLevel = e.data ? e.data : this._nextLevel;
}

有协议的代码 前后端代码要一起提交,避免报错

网页上面卡断点 ctrl+P 输入界面;

this.once(egret.Event.RENDER, () => {})

进度条滚动距离参考 (ChapterInfoAlert)
if (scroller0Width < scrollerW) {
            this.scroller0.viewport.scrollH = 0;
        } else if (scroller0Width - receivedW < scrollerW) {
            this.scroller0.viewport.scrollH = scroller0Width - scrollerW;
        } else {
            this.scroller0.viewport.scrollH = receivedW;
        }

看战报: b+(空格)+战报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值