- 注册时间
- 2017-9-15
- 最后登录
- 2018-5-6
- 阅读权限
- 20
- 积分
- 31
- 精华
- 0
- 帖子
- 8
|
大神你好,我用引擎(LMouseEvent)写了滑屏的东西,比如一个很长的元件,上下滑动,在PC上移动的灵敏度和跟随度都没问题,搁在手机上移动跟随有点缓慢延迟的感觉。我就想了解一下是引擎本身在手持端上的问题还是我写的LMouseEvent写导致的问题?请大神赐教。
function VerMoveLesson() {
base(this, LSprite, []);
var self = this;
self.Mobj;
self.Mchild;
self.es = true;
self.crm = false;
}
VerMoveLesson.prototype.VerMove = function(obj, child, stagewidth, stageheight) {
base(this, LSprite, []);
var self = this;
self.Mobj = obj;
self.Mobj.removeAllEventListener();
self.Mchild = child;
self.Mchild.removeAllEventListener();
self.Mobj.self = self;
self.Mobj.removeAllEventListener();
self.Mchild.removeAllEventListener();
self.MIsDown = false;
self.distance = 0;
self.upDistance = 0;
self.stageWidth;
self.stageHeight;
self.speed = 10;
self.easing = 0.2;
self.targetX;
self.targetY;
self.dir = 0;
var tempMask = new LSprite();
tempMask.graphics.drawRoundRect(0, "#333333", [0, 0, stagewidth, stageheight, 0], false, "#000000");
child.mask = tempMask;
var Mtimer;
if(self.Mchild.getHeight() > stageheight) {
self.stageHeight = stageheight;
self.stageWidth = stagewidth;
self.Mchild.addEventListener(LMouseEvent.MOUSE_DOWN, onMDown); //alert(self.Mchild);
self.Mchild.addEventListener(LMouseEvent.MOUSE_UP, onMUp);
self.Mobj.addEventListener(LMouseEvent.MOUSE_MOVE, onMMove);
self.crm = true;
}
function onMDown(e) {
self.Mobj.removeEventListener(LEvent.ENTER_FRAME, self.onframe)
self.distance = e.selfY + self.Mobj.y;
self.upDistance = e.offsetY;
self.MIsDown = true;
}
function onMUp(e) {
if(self.Mchild.y<= self.stageHeight - self.Mchild.getHeight()) {
self.Mchild.y = self.stageHeight - self.Mchild.getHeight();
}
self.targetY = self.Mchild.y;
if(Math.abs(e.offsetY - self.upDistance) > 100) {
clearTimeout(Mtimer);
self.MIsDown = false;
var temp = e.offsetY - self.upDistance;
self.upDistance = temp;
self.targetY = self.Mchild.y + temp;
if(self.upDistance > 0) {
self.dir = 1;
} else {
self.dir = -1;
}
}
if(self.targetY <= self.stageHeight - self.Mchild.getHeight()) {
self.targetY = self.stageHeight - self.Mchild.getHeight();
}
if(self.targetY > 0) {
self.targetY = 0;
}
if(self.getEs() == true) {
self.Mobj.addEventListener(LEvent.ENTER_FRAME, self.onframe)
} else {
self.setEs(true);
self.targetY = self.Mchild.y;
}
}
function onMMove(e) {
if(self.MIsDown == true) {
var temp = e.offsetY;
self.upDistance = temp;
self.Mchild.y = e.offsetY - self.distance;
if(self.Mchild.y <= self.stageHeight - self.Mchild.getHeight() - 100) {
self.Mchild.y = self.stageHeight - self.Mchild.getHeight() - 100;
}
if(self.Mchild.y >= 100) {
self.Mchild.y = 100;
}
}
}
}
VerMoveLesson.prototype.getEs = function() {
var self = this;
return self.es;
}
VerMoveLesson.prototype.setEs = function(es) {
var self = this;
self.es = es;
}
VerMoveLesson.prototype.onframe = function(e) {
var self = e.currentTarget.self; //console.log(e.currentTarget.self);
var dy = self.targetY - self.Mchild.y;
if(Math.abs(dy) < 1) {
self.Mchild.y = self.targetY;
self.Mobj.removeEventListener(LEvent.ENTER_FRAME, self.onframe);
} else {
var vy = dy * self.easing;
self.Mchild.y += vy;
}
}function VerMoveLesson() {
base(this, LSprite, []);
var self = this;
self.Mobj;
self.Mchild;
self.es = true;
self.crm = false;
}
VerMoveLesson.prototype.VerMove = function(obj, child, stagewidth, stageheight) {
base(this, LSprite, []);
var self = this;
self.Mobj = obj;
self.Mobj.removeAllEventListener();
self.Mchild = child;
self.Mchild.removeAllEventListener();
self.Mobj.self = self;
self.Mobj.removeAllEventListener();
self.Mchild.removeAllEventListener();
self.MIsDown = false;
self.distance = 0;
self.upDistance = 0;
self.stageWidth;
self.stageHeight;
self.speed = 10;
self.easing = 0.2;
self.targetX;
self.targetY;
self.dir = 0;
var tempMask = new LSprite();
tempMask.graphics.drawRoundRect(0, "#333333", [0, 0, stagewidth, stageheight, 0], false, "#000000");
child.mask = tempMask;
var Mtimer;
if(self.Mchild.getHeight() > stageheight) {
self.stageHeight = stageheight;
self.stageWidth = stagewidth;
self.Mchild.addEventListener(LMouseEvent.MOUSE_DOWN, onMDown); //alert(self.Mchild);
self.Mchild.addEventListener(LMouseEvent.MOUSE_UP, onMUp);
self.Mobj.addEventListener(LMouseEvent.MOUSE_MOVE, onMMove);
self.crm = true;
}
function onMDown(e) {
self.Mobj.removeEventListener(LEvent.ENTER_FRAME, self.onframe)
self.distance = e.selfY + self.Mobj.y;
self.upDistance = e.offsetY;
self.MIsDown = true;
}
function onMUp(e) {
if(self.Mchild.y<= self.stageHeight - self.Mchild.getHeight()) {
self.Mchild.y = self.stageHeight - self.Mchild.getHeight();
}
self.targetY = self.Mchild.y;
if(Math.abs(e.offsetY - self.upDistance) > 100) {
clearTimeout(Mtimer);
self.MIsDown = false;
var temp = e.offsetY - self.upDistance;
self.upDistance = temp;
self.targetY = self.Mchild.y + temp;
if(self.upDistance > 0) {
self.dir = 1;
} else {
self.dir = -1;
}
}
if(self.targetY <= self.stageHeight - self.Mchild.getHeight()) {
self.targetY = self.stageHeight - self.Mchild.getHeight();
}
if(self.targetY > 0) {
self.targetY = 0;
}
if(self.getEs() == true) {
self.Mobj.addEventListener(LEvent.ENTER_FRAME, self.onframe)
} else {
self.setEs(true);
self.targetY = self.Mchild.y;
}
}
function onMMove(e) {
if(self.MIsDown == true) {
var temp = e.offsetY;
self.upDistance = temp;
self.Mchild.y = e.offsetY - self.distance;
if(self.Mchild.y <= self.stageHeight - self.Mchild.getHeight() - 100) {
self.Mchild.y = self.stageHeight - self.Mchild.getHeight() - 100;
}
if(self.Mchild.y >= 100) {
self.Mchild.y = 100;
}
}
}
}
VerMoveLesson.prototype.getEs = function() {
var self = this;
return self.es;
}
VerMoveLesson.prototype.setEs = function(es) {
var self = this;
self.es = es;
}
VerMoveLesson.prototype.onframe = function(e) {
var self = e.currentTarget.self; //console.log(e.currentTarget.self);
var dy = self.targetY - self.Mchild.y;
if(Math.abs(dy) < 1) {
self.Mchild.y = self.targetY;
self.Mobj.removeEventListener(LEvent.ENTER_FRAME, self.onframe);
} else {
var vy = dy * self.easing;
self.Mchild.y += vy;
}
}
|
|