初始化最终但不是invar?

kul*_*lok 0 java boolean final

我一直在制作街机视频游戏,我需要一些关于子弹方向的帮助.现在我只有一颗不移动的子弹,它只是在它开始的地方绘制(我正在一步一步地做所有事情).问题是我不知道子弹向右或向左的方向.我有一个名为bullet的布尔变量,当子弹被触发时(当X键被释放时)变为true.

    public void pistol( boolean right ) {

    if( right ) {
        dbg.fillRect( barrelRightX, barrelY, barrelWidth, barrelHeight );
        dbg.fillRect( handleRightX, handleY, handleWidth, handleHeight );
    }
    else {
        dbg.fillRect( barrelLeftX, barrelY, barrelWidth, barrelHeight );
        dbg.fillRect( handleLeftX, handleY, handleWidth, handleHeight );
    }

    if( bullet ) {

        if( right )
            dbg.drawOval( barrelRightX + barrelWidth, barrelY, 5, 5 );

        else
            dbg.drawOval( barrelLeftX - 5, barrelY, 5, 5 );

    }
}
Run Code Online (Sandbox Code Playgroud)

if(bullet)之前的第一段代码只是为了画手枪.我把它放在那里你可以看到右边是一个布尔参数.基本上这意味着如果子弹被射击并且如果手枪朝右,那么你会画出子弹,看起来好像它正好从枪管中出来,如果子弹被射击而且它没有朝右(这显然意味着它面向左边)然后你会画它所以它看起来像它通常会出现.问题是,因为有一个巨大的动画循环来运行整个程序,当我发射子弹并改变手枪的方向(从右到左或从左到右)时,子弹会改变位置,这不应该发生.我尝试制作子弹最终版,但是当X键被释放时我需要它来改变它.那么,有没有办法让它最终成为最终的?

小智 6

final只说不能重新分配[member]变量(或者不能扩展类和其他关于方法的东西;-).它没有说明对象的可变性.我也没有在代码中看到它的用法......

在任何情况下,为什么不在枪被射击创建一个新的Bullet [对象] ?也就是说,"方向"和"初始位置"是Bullet在创建时已知的方面.这允许产生和处理[多个独立的]子弹而不用担心不必要的交互......(1子弹只是N子弹的特例).