|
主题: 滨滨及有兴趣的人:好奇怪的音量控制问题--请您查错!
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#12003/10/25 23:22:15
用你的BINAPI。U32函数控制音量,没人比你更熟悉这个了吧??呵呵,进入正题!
做了一个程序按钮,其下挂的计算图标内容如下: ------------------------------------------------------------------------------------------------- --功能:音量加大 --程序先增加WAV音量,WAV音量达到100后(不能再加),就增加主音量 --当主音量达到100后(不能再加),不再做增音量的操作。 --并使“TV_音量加”按钮失效(BTN_VOL_ADD=FALSE)。
--变量说明:DELTA_VOL变量是增加音量的“步长”,按一下音量就增加DELTA_VOL
其余变量在程序中给了说明,应不难理解。 ----------------------------------------------------- TV_VOL_W:=BNA_GetVolume(1)--读取WAV音量 TV_VOL_M:=BNA_GetVolume(0)--读取主音量
if TV_VOL_W<100 then
if TV_VOL_W+DELTA_VOL<=100 then TV_VOL_W:=TV_VOL_W+DELTA_VOL BNA_SetVolume(1, TV_VOL_W)--WAV音量增加
else TV_VOL_W:=100 BNA_SetVolume(1, TV_VOL_W)--WAV音量为100 end if
end if ---------------------------------------------------------------------------------------- if TV_VOL_W=100 then
if TV_VOL_M+DELTA_VOL<=100 then TV_VOL_M:= TV_VOL_M+DELTA_VOL BNA_SetVolume(0, TV_VOL_M)--主音量增加
else TV_VOL_M:=100 BNA_SetVolume(0, TV_VOL_M)--主音量为100 BTN_TV_VOL_ADD:=FALSE--使“TV_音量加”按钮失效(BTN_VOL_ADD=FALSE) end if
end if -------------------------------------------------------------------
编辑历史:[此帖被dreamexpress编辑过(编辑时间2003-10-25 23:32:19)] [此帖被dreamexpress编辑过(编辑时间2003-10-25 23:38:47)] [此帖被dreamexpress编辑过(编辑时间2003-10-25 23:40:20)] [此帖被dreamexpress编辑过(编辑时间2003-10-25 23:40:59)] [此帖被dreamexpress编辑过(编辑时间2003-10-25 23:41:58)] [此帖被dreamexpress编辑过(编辑时间2003-10-25 23:45:28)] [此帖被dreamexpress编辑过(编辑时间2003-10-26 00:04:45)] [此帖被dreamexpress编辑过(编辑时间2003-10-26 00:15:39)]
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#22003/10/25 23:29:16
HTML文件居然不能把缩进粘过来,看那么多IF可能有点麻烦你了,不好意思呀。
上述程序应可以实现“先增加WAV音量,然后再增加主音量”的功能。
测试时,点这个按钮却“WAV音量与主音量同步增加(程序运行时,我打开WINDOWS的音量控制程序观察得到,即二个滑块一起上升到顶)
好怪啊!
最后按经验,改了一下才正确了。这个错好难查呀~。还好总算查出来了,正在想个合理的解释,还没想好,呵呵。 滨滨,请先看一下程序,看看能不能直接看出错误,我后面再说改哪个地方了好吗??
真心希望与你交流。
编辑历史:[此帖被dreamexpress编辑过(编辑时间2003-10-25 23:37:27)] [此帖被dreamexpress编辑过(编辑时间2003-10-26 00:01:55)] [此帖被dreamexpress编辑过(编辑时间2003-10-26 00:12:21)]
|
滨滨
职务:版主
等级:4
金币:13.0
发贴:1931
|
#32003/10/27 8:18:31
似乎没有什么问题,不过你的程序逻辑和分支写的感觉不太舒服 我自己都很久不搞AW了,那个ucd我一时也找不到,有时间的时候试试吧。
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#42003/10/27 8:56:21
BINAPI.U32下载 相关文件: 点这儿打开"if TV_VOL_W=100 then"这句的条件TV_VOL_W=100 居然有问题,因为程序运行时好象根本认为这个条件是TRUE。 将其改为TV_VOL_W>=100即可。 修改后的程序如下: ----------------------------------------------------- TV_VOL_W:=BNA_GetVolume(1)--读取WAV音量 TV_VOL_M:=BNA_GetVolume(0)--读取主音量 if TV_VOL_W<100 then if TV_VOL_W+DELTA_VOL<=100 then TV_VOL_W:=TV_VOL_W+DELTA_VOL BNA_SetVolume(1, TV_VOL_W)--WAV音量增加 else TV_VOL_W:=100 BNA_SetVolume(1, TV_VOL_W)--WAV音量为100 end if ----原"end if"(去掉) else ----原”if TV_VOL_W=100 then“(去掉) if TV_VOL_M+DELTA_VOL<=100 then TV_VOL_M:= TV_VOL_M+DELTA_VOL BNA_SetVolume(0, TV_VOL_M)--主音量增加 else TV_VOL_M:=100 BNA_SetVolume(0, TV_VOL_M)--主音量为100 BTN_TV_VOL_ADD:=FALSE--使“TV_音量加”按钮失效(BTN_VOL_ADD=FALSE) end if end if
编辑历史:[此帖被dreamexpress编辑过(编辑时间2003-10-27 09:24:41)] [此帖被dreamexpress编辑过(编辑时间2003-10-27 09:25:12)]
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#52003/10/27 8:58:32
"if TV_VOL_W=100 then"这句的条件TV_VOL_W=100难道被AW认为是赋值语句?所以一直认为是TRUE??不可能啊!真是无法解释了。。。
编辑历史:[此帖被dreamexpress编辑过(编辑时间2003-10-27 09:38:22)]
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#62003/10/27 9:06:16
BINAPI.U32下载 相关文件: 点这儿打开那个U32我放上来了。能看看我的问题吗?原来的程序到底错在哪?就是感觉不太舒服的那段程序到底错在哪??? 滨滨在上个帖子中说 引用: 不过你的程序逻辑和分支写的感觉不太舒服
修改后的应改是最舒服的了吧?
编辑历史:[此帖被dreamexpress编辑过(编辑时间2003-10-27 09:27:30)] [此帖被dreamexpress编辑过(编辑时间2003-10-27 09:28:11)]
|
与人同乐
职务:管理员
等级:6
金币:18.0
发贴:3928
|
#72003/10/27 9:39:19
我以前总是用QTXtra播放声音,兼控制音量和声音数量,不用API编程。
|
魔岩
职务:版主
等级:6
金币:34.0
发贴:4453
|
#82003/10/27 15:14:33
这么长的问题。。还真的懒的看。。
|
滨滨
职务:版主
等级:4
金币:13.0
发贴:1931
|
#92003/10/27 21:01:32
我的代码,我觉得这样感觉更好些,运行时没有问题. =================================== DELTA_VOL=10 ... =================================== TV_VOL_W:=BNA_GetVolume(1)--读取WAV音量 TV_VOL_M:=BNA_GetVolume(0)--读取主音量
if TV_VOL_W< 100 then TV_VOL_W=TV_VOL_W+DELTA_VOL if TV_VOL_W>100 then TV_VOL_W=100 end if BNA_SetVolume(1, TV_VOL_W)--WAV音量增加 else if TV_VOL_M<100 then TV_VOL_M=TV_VOL_M+DELTA_VOL if TV_VOL_M>100 then TV_VOL_M=100 end if end if BNA_SetVolume(0, TV_VOL_M)--主音量增加 end if
|
滨滨
职务:版主
等级:4
金币:13.0
发贴:1931
|
#102003/10/27 21:03:13
跟你后面改了的很象.
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#112003/10/28 11:36:52
确实你的更简洁,长久没编程序居然思维如此不清晰,可悲。
|
魔岩
职务:版主
等级:6
金币:34.0
发贴:4453
|
#122003/10/28 13:09:59
aw的东西不能算编程
|
dreamexpress_5d
职务:普通成员
等级:1
金币:10.0
发贴:2229
|
#132003/10/28 14:08:01
Rock在上个帖子中说 引用: aw的东西不能算编程
我说了我在用AW编程了吗?我只是说我好长时间没编程序,这种IF语句居然写不好了。 干吗这么叫真呀。ROCK老大?
|
魔岩
职务:版主
等级:6
金币:34.0
发贴:4453
|
#142003/10/28 15:46:25
果然胸有大痔。。。
|
与人同乐
职务:管理员
等级:6
金币:18.0
发贴:3928
|
#152003/10/29 11:24:50
AW的东西怎么不能叫编程? 程序代码可以写地到处都是。加了JS后,编程手段更多了,起码按位与、或没什么问题了。
|