Мигает ошибка 1013: закрытый атрибут может использоваться только в определениях свойств класса.

Я пытаюсь сделать обратный отсчет таймера, я считаю, что у меня есть все части, он просто продолжает выдавать мне эту ошибку, когда я проверяю ее.

Есть идеи, что происходит?

package 

{
    import flash.display.MovieClip;
    import flash.events.TimerEvent;
    import flash.utils.Timer;

    public class MainTimer extends MovieClip {
        private var currentMin:int;
        private var currentSec:int;

        private var oneSecondTimer:Timer = new Timer (1000,1);
        public var timeHasStopped:Boolean=false;

        public function MainTimer() {
        // constructor code
            trace("the main timer is here");
            currentMin = 2;
            currentSec = 5;

            minBox.text = String(currentMin);

            if(currentSec < 10)
            {
                secBox.text = "0" + String(currentSec);
            }
            else {
                secBox.text = String(currentSec);
            }

            oneSecondTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
            oneSecondTimer.start();

            private function onTimerComplete(event:TimerEvent):void {
                currentSec = currentSec -1;
                if(currentSec <0) 
                    {
                        currentSec =59;
                        currentMin -=1;
                    } //end if
                if(currentMin < 0) {
                        currentMin =0;
                        currentSec =0;
                        timerHasStopped = true;
                }
                else 
                    {
                        oneSecondTimer.start();
                    }
                minBox.text =String(currentMin);
                secBox.text =String(currentSec);

                if(currentSec <10) 
                    {
                        secBox.text = "0" + String(currentSec);
                    }
            }
    } // Ends Function

} // Ends Class

} // Ends Package

person Jamell Daniels    schedule 18.05.2016    source источник


Ответы (2)


Функция должна иметь открывающие { фигурные скобки и должна закрываться }, прежде чем вы создадите другую новую функцию. Ваша } // Ends Function должна быть размещена после строки oneSecondTimer.start();, и оттуда вы можете определить другую вторую функцию function onTimerComplete

Может помочь, если вы сделаете отступ в своем коде, чтобы вы могли легко видеть, где что-то начинается и заканчивается (используйте клавишу TAB).

Пример вашего кода с отступом будет таким, как показано ниже (тексты удалены), посмотрите, как эта структура упрощает просмотр фигурных скобок и, следовательно, обнаружение отсутствующих или лишних фигурных скобок?

public function MainTimer() 
{
    // constructor code

    .......

    if(currentSec < 10)
    {
        .......
    }
    else 
    {
        .......
    }

    .......

} //Ends function called MainTimer

private function onTimerComplete(event:TimerEvent):void 
{
    .......

    if(currentSec <0) 
    {
        .......
    } //end if
    if(currentMin < 0) 
    {
        .......
    }
    else 
    {
        .......
    }

    .......

    if(currentSec <10) 
    {
        .......
    }
} //Ends function called onTimerComplete
person VC.One    schedule 19.05.2016

Функция onTimerComplete находится внутри функции MainTimer; это не член класса, поэтому ключевое слово private неприменимо.

person Paul Abbott    schedule 18.05.2016