0

嘿伙计们对不起,如果这是一个重新发布,我通过其他网站检查了答案以及这个,但信息不够,而且我还在学习很多东西。

但是我的问题是我有一个名为的引擎类,keepFocusEngine而另一个名为mcStar我的类我没有遇到这个问题,所以我真的不明白该怎么做,但我想从mcStar我的keepFocusEngine. 所以在我的 mcStar课堂上,我有一个名为的整数变量private var speed:Number;,其中包含它speed = 2 + Math.random()*2;speed = 10 + Math.random()*2;我想keepFocusEngine通过这个函数将速度变量更改为此:

private function shootPlayerObject(e:TouchEvent):void 
    {
        if (e.type == TouchEvent.TOUCH_TAP)
        {
            btnShootPlayer = true;
        }else
        {
            btnShootPlayer = false;
        }
    }

所以如果btnShootPlayer = true;我想要speed = 10 + Math.random()*2;被调用。

对不起,如果我让任何人感到困惑,我有点让自己困惑哈哈。但是你明白我想要完成什么吗?

4

1 回答 1

0

如果你想简洁地做到这一点,你可以在你的keepFocusEngine类中编写 getter/setter 函数。然后,您可以将speed变量保留为私有。getter 和 setter 必须是公开的,当然,才能在类外联系到。

在您的keepFocusEngine中,添加以下内容:

public function GetSpeed() : Number
{
    return speed;
}

public function SetSpeed(newspeed:Number)
{
    speed = newspeed;
}

然后,您可以将提供的代码更改为:

private function shootPlayerObject(e:TouchEvent):void 
{
    if (e.type == TouchEvent.TOUCH_TAP)
    {
        btnShootPlayer = true;
        keepFocusEngine.SetSpeed(10 + Math.random()*2);
    }else
    {
        btnShootPlayer = false;
    }
}

如果您在任何时候想知道速度,可以使用keepFocusEngine.GetSpeed(). 这使得编程更容易,因为您对类路径有一些了解。此外,当调用 getter 或 setter 时,您可以在该函数中做任何您想做的事情。例如,如果您总是返回 speed*10 似乎更容易,那么 getter 可以return speed*10;

编辑:我想参考这个问题:为什么更喜欢属性而不是公共变量?

于 2013-04-16T07:29:01.880 回答