📄 jmfapp-controller.html
字号:
</code><a name="91315"> </a><code> waitTime = (long) ((float) mediaTimeToWait / -ourRate) /
</code><a name="91316"> </a><code> 1000000;
</code><a name="91317"> </a><code> }
</code><a name="91318"> </a><code> // Add one because we just rounded down and we don't
</code><a name="91319"> </a><code> // really want to waste CPU being woken up early.
</code><a name="91320"> </a><code>
</code><a name="91321"> </a><code> waitTime++;
</code><a name="91334"> </a><code>
</code><a name="91327"> </a><code> if (waitTime > 0)
</code><a name="91328"> </a><code> {
</code><a name="91329"> </a><code> // Bug in some systems deals poorly with really large
</code><a name="91330"> </a><code> // numbers. We will cap our wait() to 1000 seconds
</code><a name="91331"> </a><code> // which point we will probably decide to wait again.
</code></pre>
</font></td>
</tr>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91340"> </a><code> if (waitTime > 1000000) waitTime = 1000000;
</code><a name="91341"> </a><code> try
</code><a name="91342"> </a><code> {
</code><a name="91343"> </a><code> wait (waitTime);
</code><a name="91344"> </a><code> }
</code><a name="91345"> </a><code> catch (InterruptedException e)
</code><a name="91346"> </a><code> {
</code><a name="91347"> </a><code> // NOT REACHED
</code><a name="91348"> </a><code> }
</code><a name="91349"> </a><code> }
</code><a name="91350"> </a><code> }
</code><a name="91351"> </a><code>
</code><a name="91352"> </a><code> public void close()
</code><a name="91353"> </a><code> {
</code><a name="91354"> </a><code>
</code><a name="91355"> </a><code> }
</code><a name="91356"> </a><code>
</code><a name="91357"> </a><code> public Control getControl(String type)
</code><a name="91358"> </a><code> {
</code><a name="91359"> </a><code> return null;
</code><a name="91360"> </a><code> }
</code><a name="91361"> </a><code>
</code><a name="91362"> </a><code> public long getMediaNanoseconds()
</code><a name="91363"> </a><code> {
</code><a name="91364"> </a><code> return 0;
</code><a name="91365"> </a><code> }
</code><a name="91366"> </a><code>}
</code></pre>
</font></td>
</tr>
</table>
<br></font>
<pre>
<a name="88428"> </a>
</pre>
<h4>
<a name="81797"> </a><font color="#003366" face="Palatino, Times New Roman, Times, serif">TimeLineEvent</font>
</h4>
<a name="91380"> </a><font size="1" face="Palatino, Times New Roman, Times, serif">
<table border="1" bordercolorlight="#FFFFFF" bordercolordark="#000000"
cellpadding="5" cellspacing="0">
<caption><b><i><font face="Palatino, Times New Roman, Times, serif"><a name="91386"> </a>Example E-2: TimeLineEvent.java </font></i></b></caption>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91396"> </a><code>import javax.media.*;
</code><a name="91397"> </a><code>
</code><a name="91398"> </a><code>// TimeLineEvent is posted by TimeLineController when we have
</code><a name="91399"> </a><code>// switched segments in the time line.
</code><a name="91400"> </a><code>
</code><a name="91401"> </a><code>public class TimeLineEvent extends ControllerEvent
</code><a name="91402"> </a><code>{
</code><a name="91403"> </a><code> protected int segment;
</code><a name="91404"> </a><code>
</code><a name="91405"> </a><code> public TimeLineEvent (Controller source, int currentSegment)
</code><a name="91406"> </a><code> {
</code><a name="91407"> </a><code> super (source);
</code><a name="91408"> </a><code> segment = currentSegment;
</code><a name="91409"> </a><code> }
</code><a name="91410"> </a><code>
</code><a name="91411"> </a><code> public final int getSegment ()
</code><a name="91412"> </a><code> {
</code><a name="91413"> </a><code> return segment;
</code><a name="91414"> </a><code> }
</code><a name="91415"> </a><code>}</code>
</pre>
</font></td>
</tr>
</table>
<br></font>
<h4>
<a name="88459"> </a><font color="#003366" face="Palatino, Times New Roman, Times, serif">EventPostingBase</font>
</h4>
<a name="91431"> </a><font size="1" face="Palatino, Times New Roman, Times, serif">
<table border="1" bordercolorlight="#FFFFFF" bordercolordark="#000000"
cellpadding="5" cellspacing="0">
<caption><b><i><font face="Palatino, Times New Roman, Times, serif"><a name="91437"> </a>Example E-3: EventPostingBase.java (1 of 3)</font></i></b></caption>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91477"> </a>im<code>port javax.media.*;
</code><a name="91478"> </a><code>
</code><a name="91479"> </a><code>// import COM.yourbiz.media.EventPoster;
</code><a name="91480"> </a><code>
</code><a name="91481"> </a><code>// The implementation of the EventPoster class is not included as part
</code><a name="91482"> </a><code>// of this example. EventPoster supports two methods:
</code><a name="91483"> </a><code>// public EventPoster ();
</code><a name="91484"> </a><code>// public void postEvent (ControllerListener who, ControllerEvent
</code><a name="91485"> </a><code>// what);
</code><a name="91486"> </a><code>
</code><a name="91487"> </a><code>public class EventPostingBase
</code><a name="91488"> </a><code>{
</code><a name="91489"> </a><code> protected ListenerList olist;
</code><a name="91490"> </a><code> protected Object olistLock;
</code><a name="91491"> </a><code> protected EventPoster eventPoster;
</code><a name="91505"> </a> // We sync around a new object so that we don't mess with
<a name="91506"> </a> // the super class synchronization.
</pre>
</font></td>
</tr>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91525"> </a> EventPostingBase ()
<a name="91526"> </a> {
<a name="91527"> </a> olistLock = new Object ();
<a name="91528"> </a> }
<a name="91534"> </a>
<a name="91535"> </a> public void addControllerListener (ControllerListener observer)
<a name="91536"> </a> {
<a name="91537"> </a> synchronized (olistLock)
<a name="91538"> </a> {
<a name="91539"> </a> if (eventPoster == null)
<a name="91540"> </a> {
<a name="91541"> </a> eventPoster = new EventPoster ();
<a name="91542"> </a> }
<a name="91543"> </a>
<a name="91544"> </a> ListenerList iter;
<a name="91545"> </a> for (iter = olist; iter != null; iter = iter.next)
<a name="91546"> </a> {
<a name="91547"> </a> if (iter.observer == observer) return;
<a name="91548"> </a> }
<a name="91549"> </a>
<a name="91550"> </a> iter = new ListenerList ();
<a name="91551"> </a> iter.next = olist;
<a name="91552"> </a> iter.observer = observer;
<a name="91553"> </a> olist = iter;
<a name="91554"> </a> }
<a name="91555"> </a> }
<a name="91561"> </a>
<a name="91562"> </a> public void removeControllerListener (ControllerListener observer)
<a name="91563"> </a> {
<a name="91564"> </a> synchronized (olistLock)
<a name="91565"> </a> {
<a name="91566"> </a> if (olist == null)
<a name="91567"> </a> {
<a name="91568"> </a> return;
<a name="91569"> </a> }
<a name="91570"> </a> else if (olist.observer == observer)
<a name="91571"> </a> {
<a name="91572"> </a> olist = olist.next;
<a name="91573"> </a> }
<a name="91581"> </a> else
<a name="91582"> </a> {
<a name="91583"> </a> ListenerList iter;
<a name="91584"> </a> for (iter = olist; iter.next != null; iter = iter.next)
<a name="91585"> </a> {
<a name="91586"> </a> if (iter.next.observer == observer)
<a name="91587"> </a> {
<a name="91588"> </a> iter.next = iter.next.next;
</pre>
</font></td>
</tr>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91601"> </a><code> return;
</code><a name="91602"> </a><code> }
</code><a name="91608"> </a><code> }
</code><a name="91609"> </a><code> }
</code><a name="91610"> </a><code> }
</code><a name="91611"> </a><code> }
</code><a name="91612"> </a><code>
</code><a name="91613"> </a><code>
</code><a name="91614"> </a><code> protected void postEvent (ControllerEvent event)
</code><a name="91615"> </a><code> {
</code><a name="91616"> </a><code> synchronized (olistLock)
</code><a name="91617"> </a><code> {
</code><a name="91618"> </a><code> ListenerList iter;
</code><a name="91619"> </a><code> for (iter = olist; iter != null; iter = iter.next)
</code><a name="91620"> </a><code> {
</code><a name="91621"> </a><code> eventPoster.postEvent (iter.observer, event);
</code><a name="91622"> </a><code> }
</code><a name="91623"> </a><code> }
</code><a name="91624"> </a><code> }
</code><a name="91625"> </a><code>}
</code></pre>
</font></td>
</tr>
</table>
<br></font>
<h4>
<a name="86769"> </a><font color="#003366" face="Palatino, Times New Roman, Times, serif">ListenerList</font>
</h4>
<a name="91628"> </a><font size="1" face="Palatino, Times New Roman, Times, serif">
<table border="1" bordercolorlight="#FFFFFF" bordercolordark="#000000"
cellpadding="5" cellspacing="0">
<caption><b><i><font face="Palatino, Times New Roman, Times, serif"><a name="91645"> </a>Example E-4: ListenerList.java </font></i></b></caption>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91661"> </a><code>// A list of controller listeners that we are supposed to send
</code><a name="91662"> </a><code>// events to.
</code><a name="91663"> </a><code>
</code><a name="91664"> </a><code>class ListenerList
</code><a name="91665"> </a><code>{
</code><a name="91666"> </a><code> ControllerListener observer;
</code><a name="91667"> </a><code> ListenerList next;
</code><a name="91668"> </a><code>}
</code></pre>
</font></td>
</tr>
</table>
<br></font>
<h4>
<a name="87927"> </a><font color="#003366" face="Palatino, Times New Roman, Times, serif">EventPoster</font>
</h4>
<a name="91682"> </a><font size="1" face="Palatino, Times New Roman, Times, serif">
<table border="1" bordercolorlight="#FFFFFF" bordercolordark="#000000"
cellpadding="5" cellspacing="0">
<caption><b><i><font face="Palatino, Times New Roman, Times, serif"><a name="91688"> </a>Example E-5: EventPoster.java </font></i></b></caption>
<tr>
<td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91695"> </a><code>class EventPoster
</code><a name="91696"> </a><code>{
</code><a name="91697"> </a><code> void postEvent(Object object, ControllerEvent evt)
</code><a name="91698"> </a><code> {
</code><a name="91699"> </a><code> // Post event.
</code><a name="91700"> </a><code> }
</code><a name="91701"> </a><code>}
</code><a name="91690"> </a><code>
</code></pre>
</font></td>
</tr>
</table>
<br></font>
<p>
<a name="86805"> </a><font face="Palatino, Times New Roman, Times, serif"><strong></strong></font>
</p>
</blockquote>
<br clear="all">
<hr>
<a href="JMFTOC.html">CONTENTS</a> |
<a href="JMFApp-DataSource.html">PREV </a> |
<a href="JMFApp-RTPUtil.html">NEXT</a> |
<a href="JMFIX.html">INDEX</a></td>
<br>
<hr>
<em>
<a href="copyright.html">Copyright</a> ©
1998-1999 Sun Microsystems, Inc. All Rights Reserved.
</em>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -