As3:从影片剪辑类访问公共变量? (来自时间表和课程内)

时间:2014-03-01 20:50:28

标签: actionscript-3 class variables public var

我有一个关于敌人类的公共变量。

如何在主类中访问此变量?还是英雄课?还是任何一个班级?

我知道您可以使用_root访问主类变量。 (在定义之后),但如何访问外部类值?

ALSO:

如何从特定动画片段上的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 个答案:

答案 0 :(得分:0)

我不完全确定我是否理解你的问题,你能传递一些代码吗? 小提示,您应该使用私有变量作为良好的OOP练习和getter / setter方法。在这里你可以找到如何做到这一点: http://code.tutsplus.com/tutorials/as3-101-oop-inheritance-setters-getters-basix--active-6104

答案 1 :(得分:0)

如果在WORKER.as中定义了isFlying变量,并且您想要更改所有实例的变量,则应将变量定义为public static var isFlying = false,然后可以像WORKER.isFlying = false一样更改它而不使用。this.parent.isFlying = false。作为扩展。 如果您希望每个实例{{1}}更改的变量可以正常工作。