我正在边做边学编程,只是意识到我缺乏一些关于循环的基础知识。
目前,我正在为 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