0

どうやら私はそれを見逃していますが、この問題は単純なはずです。画像とサウンド クリップを含む Java アプレットがあります。すべての画像が正しく表示され、/bin ファイルに含まれています。

ただし、サウンド クリップも /bin ファイルにあり、まったく再生されません。

質問は次のとおりです。1) サウンド クリップのこのコード スニペットは正しくフォーマットされていますか?

mySound = getAudioClip(getDocumentBase(), "OnPoint.au");

2) サウンド クリップはどこにあるべきですか? /bin フォルダではありませんか?

以下はコードです、アドバイスしてください、ありがとう!

import java.net.*;
import java.io.*;
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.applet.Applet;
import java.applet.AudioClip;

import java.util.*; // タイマーはこのライブラリにあります

public class bTrainAnimation extends Applet
{
private Image trainAndBush[];    // "Image" is inherited
private int totalImages = 17,    // total number of images in array
currentImage = 0,                // set current image array subscript to 0
sleepTime = 500;                 //  milliseconds to sleep
MediaTracker myImageTracker;     // "MediaTracker" is inherited
Timer myTimer;                // "Timer" is inherited
private AudioClip mySound;    // "AudioClip" is a inherited

public void init()
{
 // load the images when the applet begins executing
setSize(400,400);
mySound = getAudioClip(getDocumentBase(), "OnPoint.au");
myTimer = new Timer(true);
myTimer.schedule(
    new TimerTask()
    {
        public void run() // "run" is action performed by timer task
        {
            repaint(); 
                    }
    }
           ,0,sleepTime); // global VAR "sleepTime" = 500 milliseconds

// create array of all the images in slide show
  trainAndBush = new Image[ totalImages ];    // global VAR "totalImages" = 17 images
  myImageTracker = new MediaTracker( this ); 
  for( int i = 0; i < trainAndBush.length; i++ )
   {
   trainAndBush[i] = getImage(getDocumentBase(), // load an image in an applet 
     "Hill" + (i + 1 ) + ".jpg" );  

 // track loading image
 myImageTracker.addImage(trainAndBush[i], i);
   }

    try
     {
       catch ( InterruptedException e ){}
       mySound.play();
     }

 public void start(Graphics g)
 {
g.drawImage(trainAndBush[0],50,50,300,300, this );
currentImage = 1;       
 public void paint(Graphics g)
  {
{
if (myImageTracker.checkID(currentImage, true))
          {
      g.drawImage(trainAndBush[ currentImage ],50,50,300,300, this );
      if (currentImage == 0 )
        trainAndBush[ totalImages -1].flush();

        else trainAndBush [ currentImage -1].flush();
        currentImage = ++currentImage % totalImages;
      }
     else
            postEvent( new Event( this, Event.MOUSE_ENTER, ""));
       }
   }
 // override update to eliminate flicker
  public void update(Graphics g)
   {
  paint( g );
   }
  }
4

1 に答える 1

0

フォーマットでコードを読むのは難しいですが、私は答えるために最善を尽くします. (質問を更新/編集する場合は、回答を更新/編集しようとします):

「bin」ディレクトリのアイデアがどこにあるのかわかりません。それが画像で機能している場合は、別のことが起こっています。

さて、これを行ってからしばらく経ちましたが、ドキュメントの私の解釈は次のとおりです。

getDocumentBase() は含まれているページの URL を提供するため、アプレットがhttp://example.com/folder/hello.htmlに含まれている場合、それが getDocumentBase() によって提供されます。

オーディオが次の場所にある場合

http://example.com/folder/audio/OnPoint.au

コードは次のようになります。

mySound = getAudioClip(getDocumentBase().parent().child("オーディオ"), "OnPoint.au")

Java の URL クラスには、parent() および child() 関数がないことに注意してください (これは簡単すぎます!)。

于 2012-05-29T23:22:53.557 に答える