⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copteraudio.java

📁 j2me源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            cgOrienPresets.append( "You've fallen facedown", null );
            cgOrienPresets.append( "You've fallen flat on your back", null );
            formOrientation.append( cgOrienPresets );
        }
        
        void initDirectForm()
        {
            formDirectivity = getNewForm(
                    "Directivity of the sound settings" );
            cmggMinAngle = new CopterMeterGauge( formDirectivity,
                    0, 360, audio_sc.getMinAngle() , 15, 
                    "Fore spatial angle where the sound level is maximum",
                    "degrees" );
            cmggMaxAngle = new CopterMeterGauge( formDirectivity,
                    0, 360, audio_sc.getMaxAngle(), 15, 
           "Fore spatial angle where the level is greater than the rear level", 
                    "degrees");
            cmggRearLevel = new CopterMeterGauge( formDirectivity,
                    -10000, 0, audio_sc.getRearLevel(), 400, 
                    "Rear level ( assuming the fore level 0 dB )",
                    "dB");
        }
        

        int calcVelFactor( int stepScale )
        {
            return stepScale * framesPerSecond;
        }

        int velFac2diagVelocity( int vf )
        {
            return vf / halfSqrt2x1000; // vf * sqrt(2) / 1000;

        }

        int diagVelocity2VelFac( int dv )
        {
            return dv * halfSqrt2x1000; // dv * 1000 / sqrt(2);
        }

        int calcDiagVelocity( int stepScale )
        {
            return velFac2diagVelocity( calcVelFactor( stepScale ) );
        }

        int getDiagVelocity()
        {
            return velFac2diagVelocity( audio_sc.getVelFactor() );
        }
        
        void setVelFacFromLocation()
        {
            audio_sc.setVelFactor( calcVelFactor( audio_sc.getStepScale() ) );
        }

        int getFramePeriod() // in milliseconds
        {
            return 1000 / framesPerSecond;
        }

        int getNStepsHorizontal()
        {
            return timeToCrossScreen * framesPerSecond;
        }

        int getStepScale( int screenWidth /* in meters */ )
        {
            return screenWidth * 1000 / getNStepsHorizontal();
        }

        void setScale( int screenWidth /* in meters */ )
        {
            audio_sc.setStepScale( getStepScale( screenWidth ) );
        }

        // returns the Screen width in meters
        int getScale()
        {
            return audio_sc.getStepScale() * getNStepsHorizontal() / 1000;
        }

        void setAltitude( int a /* in meters */ )
        {
            audio_sc.setAltitude( a * 1000 );
        }

        int getAltitude()
        {
            return audio_sc.getAltitude() / 1000;
        }

        class Mover extends TimerTask
        {
            public void run()
            {
                canvas.nextFrame( disp  );
                audio_sc.nextFrame( canvas );
            }
        }

        void cleanup()
        {
            timer.cancel();
            audio_sc.stop();
        }

        public void commandAction(Command c, Displayable d) {
            if( c == cmdVolume )
                disp.setCurrent( formVolume );
            else if ( c == cmdPan ) {
                disp.setCurrent( formPan );
            }
            else if ( c == cmdLocation ) {
                disp.setCurrent( formLocation );
            }
            else if ( c == cmdDoppler ) {
                disp.setCurrent( formDoppler );
            }
            else if ( c == cmdCopterSize ) {
                disp.setCurrent( formCopterSize );
            }
            else if( c == cmdOrientation ) {
                disp.setCurrent( formOrientation );
            }
            else if( c == cmdDirect ) {
                disp.setCurrent( formDirectivity );
            }
            else if( formDistAtt.isThisCommand(c) ) {
                formDistAtt.setCurrent( disp );
            }
            else if( c == cmdObstr ) {
                disp.setCurrent( formObstr );
            }
            else if ( c == cmdExit ) {
                if( d == canvas )
                {
                    cleanup();
                    notifyDestroyed();
                }
                else
                {
                    disp.setCurrent( canvas );
                }
            }
        }

        public class CopterStateListener implements ItemStateListener {
            public void itemStateChanged(Item item) {
                if ( cmggVolume.isThisItem( item ) ) {
                    audio_sc.setVolume( cmggVolume.getValue() );
                }
                else if ( cggPan.isThisItem( item ) ) {
                    audio_sc.setPan( cggPan.getValue() );
                }
                else if ( item == cgDoppler ) {
                    handleDopplerFlagsChange();
                }
                else if ( cmggExplicitVel.isThisItem( item ) ) {
                    audio_sc.setVelFactor( 
                            diagVelocity2VelFac( 
                            cmggExplicitVel.getValue() ) );
                }
                else if ( cmggScale.isThisItem( item ) ) {
                    setScale( cmggScale.getValue() );
                    if( _isDopplerVImplicit ){
                        setVelFacFromLocation();
                    }
                }
                else if ( cmggAltitude.isThisItem( item ) ) {
                    setAltitude( cmggAltitude.getValue() );
                }
                else if( cmggLength.isThisItem( item ) ) {
                    audio_sc.setCopterLength( cmggLength.getValue() );
                }
                else if( cmggWidth.isThisItem(item) ) {
                    audio_sc.setCopterWidth( cmggWidth.getValue() );
                }
                else if( cmggHeight.isThisItem(item) ) {
                    audio_sc.setCopterHeight( cmggHeight.getValue() );
                }
                else if( item == cgOrienPresets ) {
                    handleOriChoiceChange();
                }
                else if( cmggMinAngle.isThisItem(item) ) {
                    if( cmggMinAngle.getValue() > 
                            cmggMaxAngle.getValue() )
                    {
                        cmggMinAngle.decr();
                    }
                    audio_sc.setMinAngle( cmggMinAngle.getValue() );
                }
                else if( cmggMaxAngle.isThisItem(item) ) {
                    if( cmggMaxAngle.getValue() < 
                            cmggMinAngle.getValue() )
                    {
                        cmggMaxAngle.incr();
                    }
                    audio_sc.setMaxAngle( cmggMaxAngle.getValue() );
                }
                else if( cmggRearLevel.isThisItem(item) ) {
                    audio_sc.setRearLevel( cmggRearLevel.getValue() );
                }
                else if( formDistAtt.isCurrent( disp ) ) {
                    formDistAtt.handleItem( item );
                }
                else if( item == cgWall ) {
                    handleWallChanged();
                }
            }
        }
        
        void handleWallChanged()
        {
                if( cgWall.getSelectedIndex() == 0 ) {
                    canvas.setWall( false );
                    audio_sc.setNoObstr();
                }
                else if( cgWall.getSelectedIndex() == 1 ) {
                    canvas.setWall( true );
                    audio_sc.setSingleWin();
                }
                else if( cgWall.getSelectedIndex() == 2 ) {
                    canvas.setWall( true );
                    audio_sc.setDoubleWin();
                }
                else if( cgWall.getSelectedIndex() == 3 ) {
                    canvas.setWall( true );
                    audio_sc.setThinDoor();
                }
                else if( cgWall.getSelectedIndex() == 4 ) {
                    canvas.setWall( true );
                    audio_sc.setThickDoor();
                }
                else if( cgWall.getSelectedIndex() == 5 ) {
                    canvas.setWall( true );
                    audio_sc.setWoodWall();
                }
                else if( cgWall.getSelectedIndex() == 6 ) {
                    canvas.setWall( true );
                    audio_sc.setBrickWall();
                }
                else if( cgWall.getSelectedIndex() == 7 ) {
                    canvas.setWall( true );
                    audio_sc.setStoneWall();
                }
                else if( cgWall.getSelectedIndex() == 8 ) {
                    canvas.setWall( true );
                    audio_sc.setCurtain();
                }
            
        }

        void handleOriChoiceChange()
        {
            switch ( cgOrienPresets.getSelectedIndex() ) {
                case 0:
                    audio_sc.setStandingStraight();
                    break;
                case 1:
                    audio_sc.setFallenRight();
                    break;
                case 2:
                    audio_sc.setFallenLeft();
                    break;
                case 3:
                    audio_sc.setFallenFacedown();
                    break;
                case 4:
                    audio_sc.setFallenFlatBack();
                    break;
                default:
            }
            
        }
        
        void handleDopplerFlagsChange()
        {
            if( cgDoppler.size() == 1 && cgDoppler.isSelected( 0 ) )
            {
                // the 1st flag was switched on, enabling Doppler
                audio_sc.setDopplerEnabled( true );
                cgDoppler.append( "Velocity is calculated from the location", 
                        null );
                cgDoppler.setSelectedIndex( 1, _isDopplerVImplicit );
                if( !_isDopplerVImplicit )
                {
                    cmggExplicitVel.appendTo( formDoppler );
                    cmggExplicitVel.setValue( getDiagVelocity() );
                }
            }
            else if( cgDoppler.size() == 2 && !cgDoppler.isSelected( 0 ) ) {
                // the 1st flag was switched off, disabling Doppler
                audio_sc.setDopplerEnabled( false );
                cmggExplicitVel.deleteFrom( formDoppler );
                cgDoppler.delete( 1 );
            }
            else if( cgDoppler.size() == 2 && !cgDoppler.isSelected( 1 ) ) {
                // the 2nd flag was switched off
                _isDopplerVImplicit = false;
                cmggExplicitVel.appendTo( formDoppler );
                cmggExplicitVel.setValue( getDiagVelocity() );
            }
            else if( cgDoppler.size() == 2 && cgDoppler.isSelected( 1 ) ){
                // the 2nd flag was just switched on
                _isDopplerVImplicit = true;
                cmggExplicitVel.deleteFrom( formDoppler );
                setVelFacFromLocation();
            }
            else {
                System.out.println( "Doppler settings error" );
            }
           
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -