As3: Доступ к публичной переменной из класса видеоклипов? (Как с временной шкалы, так и внутри класса)

У меня есть открытая переменная для класса противника.

Как мне получить доступ к этой переменной, скажем, в основном классе? Или класс героя? Или любой класс?

Я знаю, что вы можете получить доступ к переменным основного класса с помощью _root. (после того, как он определен), но как мне получить доступ к значениям внешнего класса?

ТАКЖЕ:

Как я могу получить доступ к этим внешним значениям класса из TIMELINE в конкретном мувиклипе?

Вот код:

В Worker.as у меня есть

This part of code is part of a continuous ENTER_FRAME loop..



        if(isFlying)
        {
            if(!faceLeft)
            {
                gotoAndStop(8);
            }
            if(faceLeft)
            {
                gotoAndStop(7);
            }

            if(flyingDestination < this.x)
            {
                if(this.x > flyingDestination)
                {
                    this.x -= 3;
                }
                else
                {
                    isFlying = false;
                    _root.mainIsFlying = false;
                }
            }
            else
            {
                if(this.x < flyingDestination)
                {
                    this.x += 3;
                }
                else
                {
                    isFlying = false;
                    _root.mainIsFlying = false;
                }
            }
        }

if(_root.isPunching)
        {
            if(this.hitTestObject(_root.ceo))
               {
                   isFlying = true;

                   if(this.x < _root.ceo.x)
                   {
                        flyToTheLeft();
                   }
                   if(this.x > _root.ceo.x)
                   {
                        flyToTheRight();
                   }

               }
        }


And these are separate functions, a.k.a not part of the ENTER_FRAME function.

private function flyToTheLeft():void
{
    flyingDestination = this.x - 100;
    faceLeft = true;
}

private function flyToTheRight():void
{
    flyingDestination = this.x + 100;
}

На кадре 8 рабочего видеоклипа лежит летающая анимация. В этой летающей анимации я хочу, чтобы в последнем кадре этой летающей анимации код выглядел примерно так:

stop();
WORKER.as.isFlying = false;

^^^^^ Я не знаю, как это кодировать.

Спасибо

2 ответа

Если переменная isFlying определена в WORKER.as, и вы хотите изменить переменную для всех экземпляров, вы должны определить переменную как public static var isFlying = false и может затем изменить это так WORKER.isFlying = false без расширения.as. Если вы хотите, чтобы переменная изменялась для каждого экземпляра this.parent.isFlying = false должно сработать.

Я не совсем уверен, понимаю ли я вашу проблему, не могли бы вы передать немного кода? Небольшой совет, вы должны использовать закрытые переменные в качестве хорошей практики ООП и методов получения / установки. Здесь вы можете найти, как это сделать: http://code.tutsplus.com/tutorials/as3-101-oop-inheritance-setters-getters-basix--active-6104

Другие вопросы по тегам