Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导入数据后如何在After Effects中访问XML元素?_Javascript_Xml_After Effects - Fatal编程技术网

Javascript 导入数据后如何在After Effects中访问XML元素?

Javascript 导入数据后如何在After Effects中访问XML元素?,javascript,xml,after-effects,Javascript,Xml,After Effects,今天早些时候,我使用JSon发布了类似的内容,但放弃了,我转而使用XML。有人能告诉我我做错了什么吗?我有一个xml文件,正在通过After Effects中的脚本进行解析,我不知道如何访问xml元素 我的XML文件是: <?xml version="1.0" encoding="utf-8"?> <root> <f> <accelX>0.4682</accelX>

今天早些时候,我使用JSon发布了类似的内容,但放弃了,我转而使用XML。有人能告诉我我做错了什么吗?我有一个xml文件,正在通过After Effects中的脚本进行解析,我不知道如何访问xml元素

我的XML文件是:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <f>
        <accelX>0.4682</accelX>
        <accelY>-0.0352</accelY>
        <accelZ>-0.9247</accelZ>
        <gyroX>0.0555</gyroX>
        <gyroY>0.004</gyroY>
        <gyroZ>-0.0684</gyroZ>
    </f>
    <f>
        <accelX>-0.4682</accelX>
        <accelY>-0.0219</accelY>
        <accelZ>-0.9186</accelZ>
        <gyroX>0.0049</gyroX>
        <gyroY>0.0851</gyroY>
        <gyroZ>-0.046</gyroZ>
    </f>
</root>
我写错了吗?After Effects将创建一个值为“0”的关键帧,但不会完成for…循环,也不会完成脚本。
我对这些元素的访问是否有误?

我认为核心问题是
data.f[0].accelX
的值是一个字符串,而不是一个数字(例如
“4.6”
而不是
4.6
),因此
setValueAtTime
以一个非数字的值结束,这不起作用1

解决方案是在其上使用
parseFloat

var-temp=parseFloat(data.f[0].accelX);
有了这些,再加上laayers的打字错误,我就可以让它工作了。我想。我不知道它应该做什么,但我最终得到了一个新的空层,它在x轴上有20个旋转关键帧,感觉像是在进步

我认为在养育子女和命名方面可能仍然存在一些问题,但我认为上述问题会让你摆脱困境,进入下一个问题

干杯



1我认为它可能会使脚本崩溃并在某个地方发出错误消息,但我真的不记得AE脚本是如何工作的,而且我没有安装ESTK(显然),因此我无法打开脚本编辑器。

我想你想要的是
f[I]
而不是
f[0]
f[0]
每次循环都会为您提供相同的项(第一项)。是的,这是真的,我确实在某个时候有过,我想我在尝试排除故障时更改了它;不过,在这一点上,我很乐意连续得到f[0]20次。。。不管怎样,它都不起作用。我还没有仔细看你的代码——几分钟后我到电脑前会看的。现在看。抱歉延误。
laayers
有一个额外的“a”?是的!!谢谢你花时间来研究这个,它正在工作,至少在目前的状态下-我不熟悉parseFloat,所以我只能想象我会用它绕圈子跑多久。再次感谢你。
var file = new File;
var check = 0;

var mainWindow = new Window("palette", "File Reader", undefined);
mainWindow.orientatizzaaq1on = "column";

var groupOne = mainWindow.add("group", undefined, "groupOne");
groupOne.orientation = "row";
var fileLocBox = groupOne.add("edittext", undefined, "Selected File Location");
fileLocBox.size = [150, 20];
var getFileButton = groupOne.add("button", undefined, "File...");
getFileButton.helpTip = "Select a .json file to change the comp";

var groupTwo = mainWindow.add("group", undefined, "groupTwo");
groupTwo.orientation = "row";
var applyButton = groupTwo.add("button", undefined, "Apply");

mainWindow.center();
mainWindow.show();

getFileButton.onClick = function() {
    file = file.openDlg("Open a file", "Acceptable Files:*.xml");
    fileLocBox.text = file.fsName;
    check = 1;
    }

applyButton.onClick = function() {
        if(check == 0) {
                alert("Please select a file");
                return false;
            } else {
                //app.beginUndoGroup("Comp Changes");
                var fileExtension = fileLocBox.text;
                var fileData;
                
                if(fileExtension.substring(fileExtension.length-4, fileExtension.length) == "json") {
                    fileData = readJson();
                    } else {
                        switch(fileExtension.substring(fileExtension.length-3, fileExtension.length)) {
                            case "txt":
                                //fileData = readTxt();
                            break;
                            case "xml":
                                fileData = readXml();
                            break;
                            }
                        }
                    changeComp(fileData);
                }
            alert("done");
   }

function readXml() {
    file.open("r");
    var xmlString = file.read();
    var myXml = new XML(xmlString);
    file.close();
    return myXml;
    }

function changeComp(data) {
    var nullz = app.project.activeItem.layers.addNull();
    nullz.threeDLayer = true;
    nullz.name = "parent to me";
    for (i = 0; i < 20; i++) {
       var temp = data.f[0].accelX;
       var t =i/25;
      nullz.xRotation.setValueAtTime(t, temp);
      }
  }
var temp = data.f[0].accelX;