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

📄 sound3d.java

📁 java程序中关于多媒体编程 既有文件说明 更有例子 希望大家可以一起学习交流
💻 JAVA
字号:
package sound3d;import java.awt.*;import java.awt.event.*;import java.applet.*;import java.net.URL;import com.sun.j3d.utils.applet.MainFrame;import com.sun.j3d.utils.geometry.ColorCube;import com.sun.j3d.utils.universe.*;import java.io.File;import java.security.*;import javax.media.j3d.*;import javax.vecmath.*;public class Sound3D extends Applet {  boolean isStandalone = false;    private static  int filenamesGiven = 0;    private static URL[] url = new URL[3];    private static String[] filename = new String[3];    private static String path = null;    private static boolean filenamesSet = false;    private SimpleUniverse u = null;    public BranchGroup createSceneGraph() {	BranchGroup objRoot = new BranchGroup();	TransformGroup objTrans = new TransformGroup();	objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);	objRoot.addChild(objTrans);	objTrans.addChild(new ColorCube(0.4));	Transform3D yAxis = new Transform3D();        Alpha rotation = new Alpha(-1, Alpha.INCREASING_ENABLE,                                   0, 0,                                   20000, 0, 0,                                   0, 0, 0);        RotationInterpolator rotator =            new RotationInterpolator(rotation,                                     objTrans, yAxis,                                     0.0f, (float) Math.PI*2.0f);	BoundingSphere bounds =	    new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);	rotator.setSchedulingBounds(bounds);	objTrans.addChild(rotator);        BackgroundSound sound1 = new BackgroundSound();        PointSound sound2 = new PointSound();        PointSound sound3 = new PointSound();        sound1.setCapability(PointSound.ALLOW_ENABLE_WRITE);        sound1.setCapability(PointSound.ALLOW_INITIAL_GAIN_WRITE);        sound1.setCapability(PointSound.ALLOW_SOUND_DATA_WRITE);        sound1.setCapability(PointSound.ALLOW_SCHEDULING_BOUNDS_WRITE);        sound1.setCapability(PointSound.ALLOW_CONT_PLAY_WRITE);        sound1.setCapability(PointSound.ALLOW_RELEASE_WRITE);        sound1.setCapability(PointSound.ALLOW_DURATION_READ);        sound1.setCapability(PointSound.ALLOW_IS_PLAYING_READ);        sound1.setCapability(PointSound.ALLOW_LOOP_WRITE);        sound2.setCapability(PointSound.ALLOW_ENABLE_WRITE);        sound2.setCapability(PointSound.ALLOW_INITIAL_GAIN_WRITE);        sound2.setCapability(PointSound.ALLOW_SOUND_DATA_WRITE);        sound2.setCapability(PointSound.ALLOW_SCHEDULING_BOUNDS_WRITE);        sound2.setCapability(PointSound.ALLOW_CONT_PLAY_WRITE);        sound2.setCapability(PointSound.ALLOW_RELEASE_WRITE);        sound2.setCapability(PointSound.ALLOW_DURATION_READ);        sound2.setCapability(PointSound.ALLOW_IS_PLAYING_READ);        sound2.setCapability(PointSound.ALLOW_POSITION_WRITE);        sound2.setCapability(PointSound.ALLOW_LOOP_WRITE);        sound3.setCapability(PointSound.ALLOW_ENABLE_WRITE);        sound3.setCapability(PointSound.ALLOW_INITIAL_GAIN_WRITE);        sound3.setCapability(PointSound.ALLOW_SOUND_DATA_WRITE);        sound3.setCapability(PointSound.ALLOW_SCHEDULING_BOUNDS_WRITE);        sound3.setCapability(PointSound.ALLOW_CONT_PLAY_WRITE);        sound3.setCapability(PointSound.ALLOW_RELEASE_WRITE);        sound3.setCapability(PointSound.ALLOW_DURATION_READ);        sound3.setCapability(PointSound.ALLOW_IS_PLAYING_READ);        sound3.setCapability(PointSound.ALLOW_POSITION_WRITE);	BoundingSphere soundBounds =	    new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);        sound1.setSchedulingBounds(soundBounds);        sound2.setSchedulingBounds(soundBounds);        sound3.setSchedulingBounds(soundBounds);	objTrans.addChild(sound1);	objTrans.addChild(sound2);	objTrans.addChild(sound3);	SimpleSoundsBehavior player = new SimpleSoundsBehavior(                  sound1, sound2, sound3,                  url[0], url[1], url[2], soundBounds);	player.setSchedulingBounds(soundBounds);	objTrans.addChild(player);        objRoot.compile();	return objRoot;    }    public Sound3D() {    }    public void init() {        if (!filenamesSet) {	    if (path == null) {	        path = getCodeBase().toString();            }            int j;            for (j=0; j<filenamesGiven; j++)	        filename[j] = new String(path + "/" + filename[j]);            for (int i=j; i<3; i++) {                if (i == 0)		    filename[0] = new String(path + "/techno_machine.au");                if (i == 1)		    filename[1] = new String(path + "/hello_universe.au");                if (i == 2)		    filename[2] = new String(path + "/roar.au");            }            filenamesSet = true;        }	setLayout(new BorderLayout());        GraphicsConfiguration config =           SimpleUniverse.getPreferredConfiguration();        Canvas3D c = new Canvas3D(config);	add("Center", c);        for (int i=0; i<3; i++) {            try {                url[i] = new URL(filename[i]);            }            catch (Exception e) {	        System.out.println(e.getMessage());                return;            }        }	u = new SimpleUniverse(c);        AudioDevice audioDev = u.getViewer().createAudioDevice();	BranchGroup scene = createSceneGraph();        u.getViewingPlatform().setNominalViewingTransform();	u.addBranchGraph(scene);    }    public void destroy() {	u.cleanup();    }  //Main method  public static void main(String[] args) {    Sound3D applet = new Sound3D();    applet.isStandalone = true;        if (args.length > 0) {            if ( (args[0].startsWith("file"+File.pathSeparator)) ||                 (args[0].startsWith("http"+File.pathSeparator))   ) {                path = args[0];            }            else {	        path = "file:" + args[0];            }	}	else {	    path = "file:.";	}        for (int i=0; i<3; i++) {            if (args.length > (i+1)) {                filename[i] = args[i+1];                if (filename[i] != null) {                    filenamesGiven++ ;                }            }            else                break;        }    Frame frame;    frame = new Frame() {      protected void processWindowEvent(WindowEvent e) {        super.processWindowEvent(e);        if (e.getID() == WindowEvent.WINDOW_CLOSING) {          System.exit(0);        }      }      public synchronized void setTitle(String title) {        super.setTitle(title);        enableEvents(AWTEvent.WINDOW_EVENT_MASK);      }    };    frame.setTitle("Sound3D Frame");    frame.add(applet, BorderLayout.CENTER);    applet.init();    applet.start();    frame.setSize(400,320);    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);    frame.setVisible(true);  }}

⌨️ 快捷键说明

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