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

📄 midirenderer.java

📁 一个java的免费游戏引擎,里面有文档,和例子
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 

package com.golden.gamedev.engine.audio;

import com.golden.gamedev.engine.BaseAudioRenderer;
import java.net.URL;
import javax.sound.midi.*;

public class MidiRenderer extends BaseAudioRenderer
    implements MetaEventListener
{

    private Sequencer a;
    private static boolean b;
    private static boolean c;
    private static int d = 0;

    public MidiRenderer()
    {
        if(d == 0)
        {
            d = 1;
            _cls1 _lcls1;
            (_lcls1 = new _cls1()).setDaemon(true);
            _lcls1.start();
        }
    }

    public boolean isAvailable()
    {
        if(d != 2)
        {
            for(int i = 0; d != 2 && i++ < 50;)
                try
                {
                    Thread.sleep(50L);
                }
                catch(InterruptedException _ex) { }

            if(d != 2)
            {
                d = 2;
                b = false;
            }
        }
        return b;
    }

    protected void playSound(URL url)
    {
        if(a == null)
        {
            a = MidiSystem.getSequencer();
            if(!a.isOpen())
                a.open();
        }
        javax.sound.midi.Sequence sequence = MidiSystem.getSequence(getAudioFile());
        a.setSequence(sequence);
        a.start();
        a.addMetaEventListener(this);
        if(volume != 1.0F)
            setSoundVolume(volume);
        return;
        printStackTrace();
        status = 4;
        return;
    }

    protected void replaySound(URL url)
    {
        a.start();
        a.addMetaEventListener(this);
    }

    protected void stopSound()
    {
        a.stop();
        a.setMicrosecondPosition(0L);
        a.removeMetaEventListener(this);
    }

    public void meta(MetaMessage metamessage)
    {
        if(metamessage.getType() == 47)
        {
            status = 3;
            a.setMicrosecondPosition(0L);
            a.removeMetaEventListener(this);
        }
    }

    protected void setSoundVolume(float f)
    {
        if(a != null)
        {
            MidiChannel amidichannel[] = ((Synthesizer)a).getChannels();
            for(int i = 0; i < amidichannel.length; i++)
                amidichannel[i].controlChange(7, (int)(f * 127F));

        }
    }

    public boolean isVolumeSupported()
    {
        return c;
    }

    static boolean a(boolean flag)
    {
        return c = flag;
    }

    static boolean b(boolean flag)
    {
        return b = flag;
    }

    static int c(int i)
    {
        return d = i;
    }

}

⌨️ 快捷键说明

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