当我调用这个函数时,我得到这个错误:TypeError: error #1010:一个术语是未定义的,没有属性.在Met



我是新来的,也是AS3的新手。这就是我的疯狂问题:

为什么我得到这个错误:TypeError: error #1010:一个术语是未定义的,没有属性。在MethodInfo-1 ()

为这个函数我正在工作:

    /* a universal function for all the movieclips */
function clickAndPlay(element):Function {
    /* return the click event */
    return function(e:Event):void {
        /* stop the event from propagating */
        e.stopPropagation();
        /* get the labels from the clip */
        var labels:Array = element.currentLabels;
        var numFrm:Number = labels.length; /* count them */
        /* if there are no labels for this clip, get the frame length instead */
        if(numFrm == 0) {
            /* get the number of frames */
            numFrm = element.totalFrames;
            trace(numFrm);
            if(element.currentFrame < numFrm) {
                element.nextFrame();
            }else{
                element.gotoAndStop(1);
            }
        }else{
            /* get the current index of the labels array */
            for(var i:Number = 0; i < numFrm; i++) {
                if(labels[i].name == element.currentLabel) {
                    if(i < numFrm) {
                        /* get the next label's name */
                        var labelName:String = labels[(i+1)].name;
                        /* go to the next label */
                        trace(labelName);
                        element.gotoAndStop(labelName);
                    }else{
                        element.gotoAndStop(1);
                    }
                }
            }
        }
    };
}

我不知道函数指的是什么。我检查过车架上的标签是否准确,确实如此。我确定这是愚蠢的事情,但任何帮助都会很感激。提前谢谢。

肖恩

我相信你需要:

if (i < (numFrm-1)) {

而不是

if (i < numFrm) {

否则下一行将在尝试访问标签[(i+1)]时导致错误

编辑:

考虑i = numFrm-1(即:循环的最后一次迭代)的情况:

labels[(i+1)].name与labels[(numFrm-1+1)].name或labels[numFrm].name

然而,标签的长度是numFrm(这是你得到numFrm值的地方),所以你试图访问一个不存在的标签元素-数组从0开始索引,而不是1;所以如果标签有6个条目,最后一个应该是标签[5],而不是标签[6]

最新更新