ПерейтиИОстановить(); не будет работать правильно

Я написал этот код для игры, которую я делаю. Я только учусь. Ошибок компилятора нет, но когда я запускаю код, он терпит неудачу без ошибок. У меня есть строка, в которой я хотел бы перейти к указанному кадру, поэтому код Button_Object.gotoAndStop(Local_Frame), но похоже, что программа просто пропускает его. Я пытался поставить _root.gotoAndstop(Local_Frame) и stage.gotoAndStop(Local_Frame), но оба они дают ошибки компилятора, ошибка, которую он дает,

 C:\Users\Nathan\Desktop\Matching Game\ClickSolver.as, 
 Line 34    1120: Access of undefined property _root. 

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

вот код

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

public class ClickSolver {
    private var Button_Object:MovieClip;
    private var Check_Object:MovieClip;
    private var Score:Number = 0;
    private var Local_Frame:Number = 0;
    private var Local_Timer:Timer = new Timer(1000,3);

    public function ClickSolver(ButtonObject:MovieClip, CheckObject:MovieClip, Frame:Number) {

        Local_Frame = Frame;
        Button_Object = ButtonObject;
        Check_Object = CheckObject;
        Button_Object.buttonMode = true;
        trace(Button_Object.name);
        trace(Check_Object.name);
        Local_Timer.start();
        trace(Local_Timer.currentCount);
        Button_Object.addEventListener(MouseEvent.CLICK, Object_Button_Clicked);
        Button_Object.addEventListener(MouseEvent.MOUSE_OVER,Button_Mouse_Over);
        Button_Object.addEventListener(MouseEvent.MOUSE_OUT, Button_Mouse_Out);
        Local_Timer.addEventListener(TimerEvent.TIMER_COMPLETE, TimerIsDone);

    }
    private function TimerIsDone (event:TimerEvent):void{
        trace("Timer is done");
        Local_Timer.stop();
        Local_Timer.reset();
        Button_Object.gotoAndStop(Local_Frame);
    }
    private function Button_Mouse_Out (event:MouseEvent):void{
        Button_Object.alpha = 1;
    }
    private function Button_Mouse_Over (event:MouseEvent):void{
        Button_Object.alpha = 0.75;
    }
    private function Object_Button_Clicked (event:MouseEvent):void{
        Score++;
        Check_Object.visible =  false;
        Button_Object.gotoAndStop(Local_Frame);
        trace("Score: " + Score);
        trace("Frame: " + Local_Frame);
    }

  }

   }

person Nathan    schedule 10.02.2013    source источник


Ответы (1)


_root не поддерживается в AS3.

Пытаться

MovieClip(root).gotoAndStop(local_Frame);

PS. Обычное соглашение об именах для вашего кода — называть переменные с использованием нижнего регистра (т. е. начинать со строчной буквы) и именовать классы с использованием верхнего верблюжьего регистра (т. е. начинать с прописной буквы).

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

person crooksy88    schedule 10.02.2013
comment
Я пробовал строку выше, но получаю ошибку: C:\Users\Nathan\Desktop\Matching Game\ClickSolver.as, Line 36 1120: Access of undefined property root. - person Nathan; 10.02.2013
comment
Хорошо, здесь может быть небольшая путаница. Вы пытаетесь перейти к кадру на объекте кнопки или на основной временной шкале? Если это ваш объект кнопки, убедитесь, что ваш объект кнопки добавлен на сцену, например. добавить дочерний элемент (кнопкаОбъект); - person crooksy88; 10.02.2013
comment
Я пытаюсь получить доступ к основной временной шкале - person Nathan; 11.02.2013
comment
Вы расширяете класс документов MovieClip? то есть первый класс, который создает ваш файл. - person crooksy88; 11.02.2013
comment
Я не совсем уверен, как я могу отправить вам .fla через stackoverflow. поэтому я просто разместил его на своем веб-сайте. nate066.weebly.com/uploads/6/6/ 01/6601389/matching_game.zip - person Nathan; 12.02.2013
comment
Есть несколько фундаментальных проблем с тем, как вы настраиваете свои файлы. Посмотрите, что я сделал, и посмотрите, имеет ли это смысл. Конкретная проблема, с которой вы столкнулись, заключалась в том, что ClickSolver не добавлялся на этап «addChild()», поэтому у него не было доступа к временной шкале. infin8design.com/clients/stack/matching_game.zip - person crooksy88; 12.02.2013
comment
Вы добавили основной класс, а затем связали и добавили его в проект, добавив его в исходный код в настройках actionscript 3. Тогда у вас был основной класс, просто связанный с классом clicksolver. Это правильно? - person Nathan; 13.02.2013
comment
Извини, Натан, я не понимаю, о чем ты спрашиваешь. - person crooksy88; 14.02.2013
comment
Спасибо за решение проблемы, я думал, что на сцену нужно добавить только элементы графического интерфейса. О, мы будем моими плохими - person Nathan; 14.02.2013