Переход к следующим кадрам в Action Script 3.0 - PullRequest
0 голосов
/ 06 октября 2011

У меня проблема с AS 3.0, когда вы нажимаете на дверь.Вы перейдете к следующему кадру.В следующем кадре я попробовал то же самое.Но это не работает.

Это код:

FRAME1;

stop();

deur1.addEventListener(MouseEvent.CLICK, frame2);
function frame2(event:MouseEvent)

    {
gotoAndStop(2)
        }// This part works. I am now in frame 2.

FRAME2:

deur2.addEventListener(MouseEvent.CLICK, frame3);
function frame3(event:MouseEvent)

    {
gotoAndStop(3)
        }

deur1 = door1.deur2 = door2
Двери - это кнопки.Когда я запускаю этот проект.Все, что я вижу, это все мои кадры для каждого FPS.

Это ошибка компиляции, которую я получаю: Ошибки компиляции

Сцена 1, слой 'layer1' Frame 2, строка 1: 1023 Несовместимое переопределение

Сцена 1, layer 'layer1Кадр 2, строка 1: 1021 Дублирующее определение функции.

Сцена 1, слой 'layer1' Frame 2, строка 3: 1000 Неоднозначная ссылка на frame2

MainTimeLine, Line2: 1000 неоднозначная ссылка на frame2.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Вы получаете эти ошибки компиляции из-за имен, которые вы используете для функций.Кажется, « frame2 » и « frame3 » являются зарезервированными именами.Попробуйте использовать более описательные имена для своих функций, это поможет вам (и другим) понять ваш код, и таким образом вы с меньшей вероятностью столкнетесь с такими ошибками.

Попробуйте это (я также исправилформатирование для улучшения читабельности):

В кадре 1:

stop();

deur1.addEventListener(MouseEvent.CLICK, go_to_frame2);

function go_to_frame2(event:MouseEvent):void
{
  gotoAndStop(2)
}

В кадре 2:

deur2.addEventListener(MouseEvent.CLICK, go_to_frame3);

function go_to_frame3(event:MouseEvent):void
{
   gotoAndStop(3)
}
0 голосов
/ 06 октября 2011

Почему бы не сделать более общие функции?Если вы объявили функции в своем первом кадре, то вы можете получить к ним доступ из других кадров.Например:

// Frame 1
function goPrevFrame(event : MouseEvent) : void
{
    nextFrame(); // or gotoAndStop(currentFrame +1);
}

function goNextFrame(event : MouseEvent) : void
{
    prevFrame(); // or gotoAndStop(currentFrame -1);
}

stop();
deur1.addEventListener(MouseEvent.CLICK, goNextFrame);

// Frame 2
stop();
deur2.addEventListener(MouseEvent.CLICK, goNextFrame);

// Frame 3
stop();
deur3.addEventListener(MouseEvent.CLICK, goNextFrame);

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

deur3.addEventListener(MouseEvent.CLICK, goNextFrame, false, 0, true);

Разъяснения относительно слабых ссылок в слушателях ActionScript

...