# 延迟调用
点击舞台,将会触发延迟调用,每个字符延迟150毫秒调用,实现打字机效果
var Main = VueEgret.classMain({
data: function () {
return {
isComplete: true,
};
},
mounted: function () {
this.$stage.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouchTap, this);
},
methods: {
onTouchTap: function () {
/*** 本示例关键代码段开始 ***/
if (this.isComplete) {
this.isComplete = false;
this.typerEffect(
this.$refs['text'],
'\n每个字符延迟150毫秒调用,实现打字机效果',
150,
function () {
this.isComplete = true;
},
);
}
/*** 本示例关键代码段结束 ***/
},
/**
* 文字打字机效果
* obj 文本对象
* content 文字
* interval 打字间隔 毫秒
*/
typerEffect: function (obj, content, interval, backFun) {
var strArr = content.split('');
var len = strArr.length;
var fun = function (i) {
var self = this;
return function () {
obj.appendText(strArr[i]);
if (i >= len - 1 && backFun != null) {
backFun.call(self);
}
};
};
for (var i = 0; i < len; i++) {
setTimeout(fun.call(this, i), interval * i);
}
},
},
template: `<DisplayObjectContainer>
<TextField ref="text" x="30" y="30" size="24" textColor="0x000000" lineSpacing="10" multiline>
延迟调用示例
点击舞台显示效果
</TextField>
</DisplayObjectContainer>`,
})