它认为Flash告诉我我的数组tabData正在重复,但我只在我的代码的var部分设置了一次:
这是错误行:
for (var i in tabData) {
private var tabData:Array = []; // <- tabData created here
public function drawTabMenu(w, h, color, videoHDiff, ypos):void
{
trace("drawTabMenu --------------");
for (var i in Global.xml..tab) {
tabData.push( {id:Global.xml..tab[i].@id, video:Global.xml..tab[i].vid} );
}
// DRAW GRAPHICS CODE HERE...
//draw the tabs
for (var i in tabData) { // < line throwing error
var tab:MovieClip = new TabDefault();
var active:MovieClip = new TabActive();
tabArray.push(tab);
tab.video = tabData[i].video;
tab.addChild(active);
i < 1 ? active.visible = true : active.visible = false;
tab.y = topShadow.y + 5;
// add in the textfield here
// addChild(tf);
// resize the tab background to textfield
tab.x = i < 1 ? 10 : tabArray[(i-1)].x + (tabArray[(i-1)].width+3);
tab.active = i < 1 ? tab.active = true : tab.active = false;
topShadow.addChild(tab);
tab.mouseChildren = false;
tab.buttonMode = true;
tab.addEventListener(MouseEvent.CLICK, tabClick);
}
// set default thumbnails here
trace("FIRST TAB DATA: "+tabData[0].video);
}
答案 0 :(得分:3)
我不知道flash,但事实上你使用i
作为中的循环变量循环问题?我认为它不应该 - 当然不会是Java - 但也许就是这样。
此外,与您的问题无关,这一行:
tab.active = i < 1 ? tab.active = true : tab.active = false;
会更容易阅读:
tab.active = i < 1;
同样,假设flash像语言一样,我知道的更好。
答案 1 :(得分:3)
i
是重复变量,而不是tabData
。 Actionscript只允许函数作用域,而不是许多(大多数)其他语言的块作用域。
将块级范围变量显然提升到函数范围称为hoisting
。
资源: