gpt4 book ai didi

javascript - 回调函数中的引用

转载 作者:行者123 更新时间:2023-11-29 22:14:34 25 4
gpt4 key购买 nike

我试图通过回调函数 onUpdateTween( groups[i], this ); 传递一个对象,但它没有给我正确的对象。它只给了我组数组中的最后一个对象。我该如何解决这个问题?

function transform( duration ) {    
for ( var i = 0; i < groups.length ; i ++ ) {

new TWEEN.Tween(object.rotation)
.to( rot , duration )
.easing( TWEEN.Easing.Exponential.InOut )
.onUpdate( function() {
onUpdateTween( groups[i], this );
})
.start();

}
}

最佳答案

只需在循环中调用一个函数:

function transform( duration ) {    
for ( var i = 0; i < groups.length; i ++ ) {
transformGroup( groups[i] );
}

function transformGroup( group ) {
new TWEEN.Tween(object.rotation)
.to( rot, duration )
.easing( TWEEN.Easing.Exponential.InOut )
.onUpdate( function() {
onUpdateTween( group, this );
})
.start();
}
}

每次调用 transformOne() 函数时,它都会创建一个包含 group 参数的闭包,以便 onUpdate() 处理程序获取正确的组。

或者另一种方式来做同样的事情:

function transform( duration ) {    
for ( var i = 0; i < groups.length; i ++ ) {
transformGroup( groups[i], duration );
}
}

function transformGroup( group, duration ) {
new TWEEN.Tween(object.rotation)
.to( rot, duration )
.easing( TWEEN.Easing.Exponential.InOut )
.onUpdate( function() {
onUpdateTween( group, this );
})
.start();
}

任何一种方法都可以。

this 是否获得了您需要的值(value),还是这也是一个问题?

关于javascript - 回调函数中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com