[]关于缓动函数from的一些问题记录

以下为我第一次写的代码
```javaScript
var letterText = new Laya.Text();
letterText.text ="hello world";
letterText.width = 400;
letterText.height = 200;
letterText.fontSize = 36;
letterText.align = "center";
letterText.valign = "middle";
var offsetPos={offsetX:100,offsetY:100};
letterText.x = Laya.stage.width - letterText.width>>1 +offsetPos.offsetX;
letterText.y = 400;

Laya.Tween.from(letterText,{y:100},3,Laya
.Ease.backOut,new Handler(this,this.onEaseComplete),1,null,true);
function onEaseComplete(){
console.log("ease complete");
Laya.stage.addChild(letterText);
}
```


以上的代码主要存在三个问题:
1. from()中的duration和delay都是以毫秒为单位,所以3,1想表示3秒,1秒需要使用3000,1000作为参数
2. Laya.Handler 的创建需要使用Laya.Handler.create(,)来实现,不是new Handler.(这条不知道对不对,反正用new Handler报错了)
3. 不应该在from的complete的回掉函数中才把letterText加入到Laya.stage中,不然from动作都已经结束了就看不到效果了.
以下为修改后的代码:
```javaScript
var letterText = new Laya.Text();
Laya.stage.addChild(letterText);
letterText.text ="hello world";
letterText.width = 400;
letterText.height = 200;
letterText.fontSize = 36;
letterText.align = "center";
letterText.valign = "middle";
var offsetPos={offsetX:100,offsetY:100};
letterText.x = Laya.stage.width - letterText.width>>1 +offsetPos.offsetX;
letterText.y = 400;
Laya.Tween.from(letterText,{y:100},3000,Laya
.Ease.backOut,Laya.Handler.create(this,this.onEaseComplete),1000,null,true);
function onEaseComplete(){
console.log("ease complete");
}
```

 
PS:想要from起作用,那么Laya.stage.addChild(letterText)放的位置在from的前后都可以吗?如果可以放在后面,那这种情况怎么控制complete回调和addChild的顺序.
 
一下代码为添加Props中的update回调后的代码
```javaScript
var letterText = new Laya.Text();

Laya.stage.addChild(letterText);
letterText.text ="hello world";
letterText.width = 400;
letterText.height = 200;
letterText.fontSize = 36;
letterText.align = "center";
letterText.valign = "middle";
var offsetPos={offsetX:100,offsetY:100};
letterText.x = Laya.stage.width - letterText.width>>1 +offsetPos.offsetX;
letterText.y = 400;

Laya.Tween.to(letterText,{y:100,update:new Laya.Handler(this,this.changeColor,[letterText])},3000,Laya
.Ease.backOut,Laya.Handler.create(this,this.onEaseComplete),1000,null,true);
function onEaseComplete(){
console.log("ease complete");
}
function changeColor(text){
console.log("update");
var c = Math.floor(Math.random()*4);
console.log(c);
switch(c)
{
case 0:text.color='red';break;
case 1:text.color="blue";break;
case 2:text.color ='black';break;
case 3:text.color = 'green';break;
case 4:text.color = "yellow";break;
}
console.log(text.color);
}
```
注意Props中的Handler创建方式需要使用new Laya.Handler()方式.
 
总结以上出现的尚未解决问题:
    1. 想要from起作用,那么Laya.stage.addChild(letterText)放的位置在from的前后都可以吗?如果可以放在后面,那这种情况怎么控制complete回调和addChild的顺序?
    2. new Handler (在加载图片loadImage时可行)和new Laya.Handler(在from的Props的update回调函数时可行) 和 Laya.Handler.create (在加载图集和from的complete回调函数时可行)的区别?为什么会在交替使用时失败?
已邀请:

Aar0n

赞同来自:

handler这个 可以点进去看源码, 看new 和create的区别 。。。 添加放在前后一般问题不大,有些时候看需求,需要调整顺序。。。这个handler 你看了源码里面的注释就能有更深的理解。

要回复问题请先

商务合作
商务合作