微信小游戏里的拖动touch, 在拖动距离比较大时,会有很大的延迟。
下面是录的视频,拖动时手指绝对一条线直接滑过,但是touch里的回调却延迟了很久
在web和native里都是没有问题的。视频下面附上关键代码
creator.rar (672.5 KB)
视频中卡顿的时候,根本就没到touch方法里面来。求官方关注一下。
onTouch(event,d){
if(this.cards[0].length == 0){
return;
}
if(event.type == cc.Node.EventType.TOUCH_START){
for(var i=0; i<this.cards[0].length; i++){
var card =this.cards[0][i];
card.color = this.normalColor;
if(card.y == this.startPoint[0].y){
card.isSelect = false
}
}
event.stopPropagation();
if(this.selectFunc){
this.selectFunc();
}
}
var pos = this.cardNode[0].convertToNodeSpace(event.getLocation())
var card = this.getCardByTouch(pos.x-this.cardNode[0].width/2);
if(card && !card.isControl){
card.color = this.selectColor;
card.isControl = true;
this.console.string = 'touch'+ card.cardData
}
if(event.type == cc.Node.EventType.TOUCH_END || event.type == cc.Node.EventType.TOUCH_CANCEL){
var cards = [];
for(var i=0; i<this.cards[0].length; i++){
var card = this.cards[0][i];
card.color = this.normalColor;
if(card.isControl){
card.isSelect = !card.isSelect;
}
if(card.isSelect){
cards.push(card.cardData);
}
card.isSelect = false
card.y = 0
card.isControl = false;
}
if(cards.length == 0){
this.selectCards = [];
return
}
if(this.selectCards.length == 0){
this.selectCards = GameLogic.SearchOutCards({type:GameLogic.CardType.invalid},cards);
} else {
this.selectCards = cards;
}
console.log(this.selectCards);
for(var i=0; i<this.selectCards.length; i++){
var cardData = this.selectCards[i];
var card = null;
for(var j=0; j<this.cards[0].length; j++){
var c = this.cards[0][j];
if(c.cardData == cardData){
card = c;
break;
}
}
if(card){
card.isSelect = true;
card.y = this.startPoint[0].y+30
}
}
if(this.selectCards.length > 0 && this.selectFunc){
SoundMgr.playSound('xuanpai.wav')
this.selectFunc(this.selectCards);
}
}
},
getCardByTouch(x){
var startx = this.cards[0][0].x;
if(x < startx){
return null;
}
var len = Math.floor((x - this.cards[0][0].x) /65)
if(len >= this.cards[0].length){
if(len <= this.cards[0].length+2){
return this.cards[0][this.cards[0].length-1]
}
return null;
}
return this.cards[0][len]
},