微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

for() 循环不重复 - Extendscript After Effects

如何解决for() 循环不重复 - Extendscript After Effects

我的 for 循环不会重复。说到循环,我是个菜鸟,希望得到任何帮助。

我有一个下拉列表,用户可以在其中选择一个数字 (1-10)。在选择时,我的脚本会生成许多应用了滑块效果的文本图层(这部分正在工作),然后将表达式应用于所选图层的动画师,该动画师喜欢生成控制图层的滑块的关键帧值。

编辑

我开始更好地理解循环,因为循环是重复的(感谢@CherryDT)。 我想出了以下解决方案,我的执行可能会有一点不足,并且它没有完全返回我需要的东西。

希望得到任何指点。

这是我的代码(如果下拉选择设置为 3)。

    startRangeExp.expression; 

    var key = [];
    var x = "if(numKeys > 2){\n" + 
            "if (time < key(2).time){\n" +
                "key1;\n" ;
    var y = [];
    var z = "}\n" + 
            "}else{\n" + 
            "key1;\n" + 
            "};\n" ;
    var expressionStart ='';
    var expressionSecondPart ='';
    var expressionThirdPart ='';
    var expressionEnd ='';
        for(var i = 1; i <=pal.grp.groupFive.keyDrop.selection.index; i++){

            key[i] = "key"+i+ "= thisComp.layer('" +myLayers[0].name+ '_key_'+i + "').effect('Slider Control')('Slider').value;\n";
        
            y[i] = "} else if (time < key("+i+").time){\n" +
                                "key"+i+";\n";
            
    expressionStart += key[i];
    expressionSecondPart  = x;
    expressionThirdPart += y[i];
    expressionEnd = z;

startRangeExp.expression = expressionStart + expressionSecondPart  + expressionThirdPart + expressionEnd;   
        }

返回这个

key1= thisComp.layer('Text-Layer-Name_1_key_1').effect('Slider Control')('Slider').value;
key2= thisComp.layer('Text-Layer-Name_1_key_2').effect('Slider Control')('Slider').value;
key3= thisComp.layer('Text-Layer-Name_1_key_3').effect('Slider Control')('Slider').value;
if(numKeys > 2){
  if (time < key(2).time){
    key1;
  } else if (time < key(1).time){
    key1;
  } else if (time < key(2).time){
    key2;
  } else if (time < key(3).time){
    key3;
  }
}else{
  key1;
};

期望的回报看起来像这样

key1 = thisComp.layer('Text-Layer-Name_1_key_1').effect('Slider Control')('Slider');
key2 = thisComp.layer('Text-Layer-Name_1_key_1').effect('Slider Control')('Slider');
key3 = thisComp.layer('Text-Layer-Name_1_key_1').effect('Slider Control')('Slider');
if(numKeys > 2){ 
  if (time < key(2).time){
    key1;
  }else if (time < key(3).time){
    key2;
  }else{
    key3;
  }
}else{ 
  key1; 
};

关于我应该如何编辑代码以获得预期结果的任何建议?

干杯, J

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。