前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >egret知(填)识(坑)点集

egret知(填)识(坑)点集

作者头像
陨石坠灭
发布2020-01-21 15:43:53
1.1K0
发布2020-01-21 15:43:53
举报
文章被收录于专栏:全栈之路全栈之路
1. egret.Label 富文本用法
代码语言:javascript
复制
...
public lbTest:eui.Label;
...

lbTest.textFlow=[
  {text:"hello",style:{size:12,textColor:oxffffff}},
   {text:"hello",style:{size:16,textColor:oxffff00}}
]

富文本还可以添加链接,同时可以给链接添加下划线哦 \^0\^

代码语言:javascript
复制
var ADDRESS = "egret知(填)识(坑)点集";
lbTest.textFlow=[
...
{
  text: ADDRESS,
  style: { textColor: 0x76b7e8, size: 21, href:"https://www.jianshu.com/p/a4d600ce46af", underline: true },
}
...
]

给链接添加事件:

代码语言:javascript
复制
var ADDRESS = "egret知(填)识(坑)点集";
lbTest.textFlow=[
{
  text: ADDRESS,
  style: { textColor: 0x76b7e8, size: 21, href:"event:gotoPage", underline: true },
}
...
]

lbTest.addEventListener( egret.TextEvent.LINK, function( evt:egret.TextEvent ){
      console.log( evt.text );
      if(isMobile){
          evt.preventDefault();
      }
      window.open("https://www.jianshu.com/p/a4d600ce46af","_blank");
}, this );

但是这样写可能会带来坑,在监听egret.TextEvent.LINK事件的函数内跳转链接,会被浏览器阻止!!!

因此,兼容移动端时,应该这么些:

代码语言:javascript
复制
var ADDRESS = "egret知(填)识(坑)点集";
lbTest.textFlow=[
{
  text: ADDRESS,
  style: { textColor: 0x76b7e8, size: 21, href: isMobile ? "event:gotoPage" : "https://www.jianshu.com/p/a4d600ce46af", underline: true },
}
...
]

lbTest.addEventListener( egret.TextEvent.LINK, function( evt:egret.TextEvent ){
      console.log( evt.text );
      if(isMobile){
          evt.preventDefault();
      }
}, this );

具体情况,请看 论egret的坑

2. 骨骼动画

加载:

代码语言:javascript
复制
 let dragonebonesData = RES.getRes(<*.json>);
 let textureData = RES.getRes(<*_ske.json>); 
 let texture = RES.getRes(<*.png>);
 let factory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
 factory.addDragonBonesData(dragonBones.DataParser.parseDragonBonesData(dragonebonesData));
 factory.addTextureAtlas(new dragonBones.EgretTextureAtlas(texture , textureData));

 var armature:dragonBones.FastArmature = factory.buildFastArmature(armatureName);
 armature.enableAnimationCache(30); 
...

替换控件,方法为dragonBones.Slot.setDisplay(dispaly:any),但是并不是每一次都能成功设置上,display也并不是一直有值,以下提供一种方式参考,并不一定对哈:

代码语言:javascript
复制
private testGroup:eui.Group;//参考点
...

armature.addEventListener(dragonBones.AnimationEvent.START, function(){
  egret.setTimeout(function(){
    let group = this.testGroup;
    let slot: dragonBones.Slot = armature.getSlot("<骨骼名称>");
    let cell = new <控件类>();
    cell.width =group.width;
    cell.height = group.height;
    cell.anchorOffsetX = group.width / 2;
    cell.anchorOffsetY = group.height / 2;
    slot.setDisplay(cell);    
 },this,200);
},this);  
3. 事件

按钮点击事件

代码语言:javascript
复制
private btnTest:eui.Button;
...
btnTest.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onTouch,this);
...
private onTouch(event){
  switch(event.target){
     case this.btnTest:{
        //TODO
      }
  }
}

控件加入和移除事件:

代码语言:javascript
复制
this.addEventListener(egret.Event.ADDED_TO_STAGE...
this.addEventListener(egret.Event.REMOVED_FROM_STAGE...

定时执行

代码语言:javascript
复制
...
let timer:egret.Timer = new egret.Timer(RETRY_INTERVALS[this._retries], 1);
timer.addEventListener(egret.TimerEvent.TIMER,this.text, this);
timer.start();
...
private test(event){
//TODO
}
4. 控件状态替换
代码语言:javascript
复制
class TestLayer eui.Component implements  eui.UIComponent{
...
this.skin.currentState = this.skin.states[0].name;
...
}
5.获取时间的方式
代码语言:javascript
复制
...
let date = Date.now()
...
6.http请求

http://edn.egret.com/cn/article/index/id/589


10.13更新

7.移动端接口适配
代码语言:javascript
复制
 interface MobileInterface {
        ...
        openLink(url:string):void
        ...
    }

    export const API: MobileInterface = window['iface'];
8.获取url参数
代码语言:javascript
复制
var id = egret.getOption('id');
9.Object.keysObject.values的使用
代码语言:javascript
复制
var obj = {};
var keys = (<any>Object).keys(obj);
var values = (<any>Object).values(obj);
10.StringNumberMath等方法的拓展
代码语言:javascript
复制
interface String {
...
  format(...args:any[]): string;
}

String.prototype.format = function () {
    var a = this;
    for (k in arguments) {
        a = a.replace("{" + k + "}", arguments[k]);
    }
    return a;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/09/02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. egret.Label 富文本用法
  • 2. 骨骼动画
  • 3. 事件
  • 4. 控件状态替换
  • 5.获取时间的方式
  • 6.http请求
  • 7.移动端接口适配
  • 8.获取url参数
  • 9.Object.keys和Object.values的使用
  • 10.String、Number、Math等方法的拓展
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档