【问题标题】:Why am I getting the "Duplicate variable definition" error here?为什么我在这里收到“重复变量定义”错误?
【发布时间】:2010-02-04 16:46:33
【问题描述】:

它认为 Flash 告诉我我的数组 tabData 正在重复,但我只在代码的 var 部分设置了一次:

这是有错误的那一行:

for (var i in tabData) {

TabMenu 类

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);
    }

【问题讨论】:

    标签: flash actionscript-3 arrays


    【解决方案1】:

    我不知道 flash,但是您在 both 循环中使用 i 作为循环变量是否有问题?我认为它不应该是——当然不会是在 Java 中——但也许就是这样。

    另外,与你的问题无关,这一行:

    tab.active = i < 1 ? tab.active = true : tab.active = false;
    

    这样阅读会更容易:

    tab.active = i < 1;
    

    再次假设 Flash 像我更熟悉的语言一样工作。

    【讨论】:

    • 砰!就是这样 :) 我只是认为错误是在谈论 tabData,当它在谈论 i
    • 你仍然可以在两个循环中使用 i,只是不要在第二个循环中使用 var i
    【解决方案2】:

    i 是重复变量,而不是 tabData。 Actionscript 只允许函数范围,而不像许多(大多数)其他语言那样允许块范围。

    将明显的块级作用域变量提升到函数作用域称为hoisting

    资源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-13
      • 2014-04-23
      • 2019-11-02
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2019-09-09
      • 2020-11-14
      相关资源
      最近更新 更多