创建一个for循环以在Javascript中定位元素

时间:2018-07-25 09:53:10

标签: javascript json for-loop position sketchapp

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

当前,我正在创建一个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

0 个答案:

没有答案