0

我正在边做边学编程,只是意识到我缺乏一些关于循环的基础知识。

目前,我正在为 Sketch(设计师程序)创建一个插件。基本上,我有一个符号库,应该根据每个符号的单独规则将其放置在画板上。通过 API,我返回了这些符号在 JSON 中的位置。这就是我的 JSON 的结构:

{
boundingBox =     {
    height = "0.109773919";
    left = "0.0224986672";
    top = "0.005579207";
    width = "0.9701756";
};
probability = "0.9641495";
tagId = "013a0b7b-2b1d-4c18-8de7-fd37c91aa513";
tagName = navtop;
}

它目前的作用:它将 tagNames 与我的本地符号库匹配(创建符号)。现在我想添加另一个函数“positionInArtboard”。

var matchSymbol = function(data) {
   for (var i = 0; i < data.predictions.length; i++) {
   var percentage = parseFloat(data.predictions[i].probability);
   if (data.predictions[i].probability > 0.5) {
        createSymbol(data.predictions[i].tagName);
        positionInArtboard(data.predictions[i].tagName);
        }
    }
}

function positionInArtboard (tagName, x, y) {
var tabbars = document.getLayersNamed("tabbar")
var tabbar = tabbars[0];
var tabbarFrame = new sketch.Rectangle(tabbar.frame);
tabbarFrame.x = 0;
tabbarFrame.y = 618;
tabbar.frame = tabbarFrame

var navtops = document.getLayersNamed("navtop")
var navtop = navtops[0];
var navtopFrame = new sketch.Rectangle(navtop.frame);
navtopFrame.x = 0;
navtopFrame.y = 0;
navtop.frame = navtopFrame;
}

上面的代码工作得很好,但将来我会根据 JSON 响应为一些元素制定动态规则:

var buttons = document.getLayersNamed("button")
var button = buttons[0];
var buttonFrame = new sketch.Rectangle(button.frame);
navtopFrame.x = data.predictions[i].boundingBox.left * 375;
navtopFrame.y = data.predictions[i].boundingBox.top * 667;
navtop.frame = navtopFrame;

**我怎样才能更优雅地结合这两个函数并从 JSON 响应中传递数据?如何保持每个对象个体的框架规则,而不必一直重复块?**

对于这个基本问题,我很抱歉,如果有人可以推荐我可以阅读更多关于这些特定操作的资源,那也很棒。

非常感谢您!最好的,C

4

0 回答 0