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

📄 usingcdrom.html

📁 SDL学习教程。超好。 SDL学习教程。超好
💻 HTML
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<title>使用SDL:CD-ROM</title>
</head>

<body bgcolor="#FFF8DC" text="#000000">
<TABLE>
<TR><!--#include file="../menu.tmpl" -->
<TD>

<p align="center">
[<a href="usingsound.html">前一页</a>]     
<a href="toc.html"><font color="#8B0000">目录</font> </a>
[<a href="usingthreads.html">后一页</a>]
</p>

<h1><font color="#8B0000">使用SDL</font></h1>

<h2>CD-ROM音频</h2>

<table border="0" cellpadding="4">
    <tr>
        <td valign="top"><ul>
            <li><strong>打开CD-ROM驱动器</strong> </li>
        </ul>
        <blockquote>
            <p>调用SDL_CDNumDrives()可以获得系统所有的CD-ROM驱动器,然后你可以选取一个用SDL_CDOpen()打开。 </p>
            <p>系统缺省的CD-ROM总是驱动器 0。即使驱动器里没有光盘,你也可以打开CD-ROM驱动器。</p>     
            <p>调用SDL_CDStatus() 侦测驱动器的状态。CD-ROM驱动器使用完毕后调用SDL_CDClose()关闭。 </p>     
        </blockquote>
        </td>
        <td valign="top" width="200" bgcolor="#D3D3D3"><strong>提示:</strong><br>
        调用SDL_CDName()可以获取和系统相关的CD-ROM驱动器名字。</td>
    </tr>
</table>

<table border="0" cellpadding="50">
    <tr>
        <td valign="top"><font color="#000080"><strong>例程:</strong></font><pre>
{
    SDL_CD *cdrom;

    <font color="#0000FF">if</font> ( SDL_CDNumDrives() &gt; 0 ) {
        cdrom = SDL_CDOpen(0);
        <font color="#0000FF">if</font> ( cdrom == NULL ) {
            fprintf(stderr, &quot;<font color="#000000">Couldn't open default CD-ROM: %s\n</font>&quot; SDL_GetError());
            return;
        }

        ...

        SDL_CDClose(cdrom);
    }
}
</pre>
        </td>
    </tr>
</table>

<table border="0" cellpadding="4">
    <tr>
        <td valign="top"><ul>
            <li><strong>CD-ROM回放 </strong></li>
        </ul>
        <blockquote>
            <p>CD-ROM使用MSF(mins/secs/frames,即分钟/秒/帧)格式指定时间,或者直接使用帧(frame)。    
            帧是CD的一个标准时间单位,相当于1/75秒。SDL使用帧,而不是MSF格式来指定音轨的长度和偏移量,但     
            你可以用FRAMES_TO_MSF()和MSF_TO_FRAMES()宏在两者间转换。</p> 
            <p>SDL直到你调用SDL_CDStatus()才更新SDL_CD结构里的音轨信息。因此,   
            在回放CD前,你总应该调用SDL_CDStatus()来确认现在驱动器里有CD,及其音轨信息。   
            注意音轨的索引号是从0作为第一个开始的。</p> 
            <p>SDL有两个CD-ROM回放函数。你可以调用SDL_CDPlayTracks()回放指定的音轨,或者调用SDL_CDPlay()回放绝对的帧偏移量。</p> 
            <p>SDL不支持CD插入或者回放完成的自动通知。为了侦测这些状态,你需要定期的调用SDL_CDStatus()轮询驱动器的状态。  
            因为这要读取CD的内容表Since this call,所以不要在一个频繁的循环里不断调用。  
            </p>
        </blockquote>
        </td>
        <td valign="top" width="200" bgcolor="#D3D3D3"><strong>提示:</strong><br>
          检查cdrom-&gt;tracks[track].type, ,与  
        SDL_AUDIO_TRACK 和 SDL_DATA_TRACK比较可以检测是音轨还是数据轨道。 </td> 
    </tr>
</table>

<table border="0" cellpadding="50">
    <tr>
        <td valign="top"><font color="#000080"><strong>例程:</strong></font><pre>
<font color="#008000">void</font> PlayTrack(SDL_CD *cdrom, <font
color="#008000">int</font> track)
{
    <font color="#0000FF">if</font> ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) {
        SDL_CDPlayTracks(cdrom, track, 0, track+1, 0);
    }
    <font color="#0000FF">while</font> ( SDL_CDStatus(cdrom) == CD_PLAYING ) {
        SDL_Delay(1000);
    }
}
</pre>
        </td>
    </tr>
</table>

<p align="center">
[<a href="usingsound.html">前一页</a>] 
<a href="toc.html"><font color="#8B0000">目录</font> </a>
[<a href="usingthreads.html">后一页</a>]
</p>

</TABLE>
</body>
</html>

⌨️ 快捷键说明

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