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