我有在图层中创建对象数组的代码,如下所示:

    var labels = layer.get('Label');
    var labelCount = labelLeft.length;

    var tweens = [];
    var tweenCounter = 1;

    var duration=5;
    for(var i=0; i<labelCount; i++)
    {
        var tween = new Kinetic.Tween({
            node: labelLeft[i],
            duration: animspeed[i],
            x: 0,
            onFinish: function() {
                if (tweenCounter !== labelCount) { //Prevent an undefined tween from being played at the end
                    tweens[tweenCounter].play();
                    tweenCounter++;
                }
            }
        });
        tweens.push(tween);
    }
    tweens[0].play();


问题是使用onFinish向左滚动后,我想隐藏对象。我尝试使用labelLeft [i] .hide()

onFinish: function() {
            labelLeft[i].hide();
            if (tweenCounter !== labelCount) { //Prevent an undefined tween from being played at the end
                tweens[tweenCounter].play();
                tweenCounter++;
            }
        }


但这会触发TypeError:labelLeft [i]未定义
有任何想法吗?请帮忙。谢谢

最佳答案

似乎是关闭问题。您可以尝试一下吗,我不确定是否可以使用,但是无论如何:

for(var i=0; i<labelCount; i++)
{
    var label = labelLeft[i];
    var tween = new Kinetic.Tween({
        node: labelLeft[i],
        duration: animspeed[i],
        x: 0,
        onFinish: function(l) {
            return function()
                hide(l);
        }(label)
    });
    tweens.push(tween);
}

function hide(label) {
    labelLeft[label].hide();
    if (tweenCounter !== labelCount) { //Prevent an undefined tween from being played at the end
        tweens[tweenCounter].play();
        tweenCounter++;
    }
}

关于javascript - 动态JS onFinish隐藏节点数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20260168/

10-12 12:48