我有点困惑。
基本上,framerjs将我的photoshop文档导出到HTML5网站。所有元素似乎都在PSD对象中。我可以通过PSD [“元素的名称”]来处理我的文档的每个项目。 Framer称这些“观点”。所以可以通过myNewView = new View()创建一个新视图;一个视图可以包含文本,图像等。到目前为止,这么好。
我正在尝试以下操作:从每个现有视图中,我想创建一个显示原始视图名称的新视图。新观点应该是可单独添加的。
var ypsilon = 30;
// go through all Elements in PSD
for (var layerGroupName in PSD) {
var newView = PSD[layerGroupName].name + "_new";
var newViewName = PSD[layerGroupName].name + "_new";
//create the new view
newView = new ImageView({x:20, y:ypsilon, width:400, height:30});
// name the new view
newView.name = newViewName;
// style for the new view
newView.style = {
"font-family": "Arial",
"font-size": "18px",
"font-weight": "bold",
"text-align": "left",
"color": "white"
}
// show the new view
newView.html = newViewName;
// position the next view y+30px
ypsilon = ypsilon + 30;
}
这就是我所拥有的,我知道为什么这是错误的。我可以看到所有新的观点,但我不能用他们的名字来对待他们。我只能说“newView”。我知道for
循环在这种情况下是错误的,所以我一直覆盖newView而不是像“layerGroupName_new”那样。我还没有设法使用.lenght
,这是我使用for
循环的想法。所以我现在陷入困境,如果你们中的一些好人能帮助我,我将非常高兴。
答案 0 :(得分:0)
如果您不需要直接按名称访问视图,则可以将它们全部放在数组上并迭代它们。另一种方法是使用名称作为键将它们存储在对象上,这将允许您通过名称来访问它们。
两种方法的演示:
var ypsilon = 30;
// Using an array
var views = [];
// Using an object
var viewDictionary = {};
// go through all Elements in PSD
for (var layerGroupName in PSD) {
var newView = PSD[layerGroupName].name + "_new";
var newViewName = PSD[layerGroupName].name + "_new";
//create the new view
newView = new ImageView({x:20, y:ypsilon, width:400, height:30});
// name the new view
newView.name = newViewName;
// style for the new view
newView.style = {
"font-family": "Arial",
"font-size": "18px",
"font-weight": "bold",
"text-align": "left",
"color": "white"
}
// show the new view
newView.html = newViewName;
// position the next view y+30px
ypsilon = ypsilon + 30;
views.push(newView);
viewDictionary[newViewName] = newView;
}
// Looping over all the views and acting on them
for (var i = 0, view; i < views.length; i ++) {
view = views[i];
// do stuff with view
}
// Accessing a specific view by name via the viewDictionary
var view = viewDictionary['myViewName_new'];