一、全屏播放
Director本身并不能支持自动适应屏幕分辨率的全屏播放,它也没有提供可以更改屏幕分辨率
的函数。但许多时候,我们要求能全屏播放。解决办法是,使用第三方xtra:DMChangeRes.x32。
DMChangeRes.x32中提供一个有用的函数:ChangeRes([width,height]),它用于设置屏幕分
辨率。我们需要程序运行时改变分辨率,在程序退出时恢复分辨率。因此,新建MovieScript,
在其中写如下代码:
--全局oldScreenSize保存原始分辨率,用以程序退出时恢复
globaloldScreenSize
onprepareMovie
if_pRectList[1][3]<800then
alert"对不起,您的电脑显示屏当前分辨率太低,请调整为800*600后重新运
行本程序!"
gotomarker("end")
el
toldScreenSize=ChangeRes([800,600])
endif
end
onstopMovie
ifoldScreenSize<>voidthen
ChangeRes(oldScreenSize)
endif
end
另外,由于Demo中调用了试玩游戏,试玩游戏在退出时奇怪地把分辨率恢复了,致使Demo显示
于左上角,无法继续布满整个屏幕。解决办法是响应WindowsActivateWindow消息,当Demo
被调到前台时,它将重新检测分辨率,在需要时重设:
onactivateWindow
if_pRectList[1][3]>800then
ChangeRes([800,600])
endif
end
把以下命令放在第一帧的帧脚本处,可实现强制全屏:onexitFrameme
gotheframe
(thestage).rect=(thedesktopRectList)[1]
(thestage).drawRect=(thedesktopRectList)[1]
end
NO2:或者添加这段代码也行,可以达到同样的效果
onstartMovie
globaloldRes
toldRes=changeRes([800,600])
putthecolorDepthintofield"color"
putthedesktopRectList[1].widthintofield"width"
putthedesktopRectList[1].heightintofield"height"
end
onstopMovie
globaloldRes
changeRes(oldRes)
end
解释一下:
startmovie表示影片开始时的动作,stopmovie表示影片结束的动作,
changeRes([800,600])就是改分辨率了,changeRes(oldRes)就表示退出影片时恢复原
来的分辨率了。
putthecolorDepthintofield"color"
putthedesktopRectList[1].widthintofield"width"
putthedesktopRectList[1].heightintofield"height"
是我显示当前分辨率的
globaloldRes
onstartmovie
iftherunmode="projector"then
toldRes=changeRes([800,600])
(thestage).rect=(thedesktopRectList)[1]
(thestage).drawRect=(thedesktopRectList)[1]
endif
end
不用插件,自动修改分辨率
我想做一个自动识别分辨率的,屏幕是800*600,作品就是800*600,屏幕是1024×768,做品就是10
24×768
onprepareMovie
tDF_stage=(thedesktopRectList)[1]
--tDF_stagewidthY=(thedesktopRectList)[1][3]
--tDF_stagewidth=integer(tDF_stage[4]*1.222)
--tDF_stageleft=abs((tDF_stagewidthY-tDF_stagewidth))/2
--tDF_stage=rect(tDF_stageleft,0,tDF_stagewidth+tDF_stageleft,tDF_stage[4])
(thestage).rect=tDF_stage
(thestage).drawRect=tDF_stage
end
我是这么写的,可是不知道为什么没起作用!
后来我想到原因,做一个dir,里面只写一句话,gomovie“index”,
然后在index里写上上面的脚本,原因是这个脚本的文件不能直接打包。
/?t=6299165里详细介绍
二、循环背景音乐及播放音效
一般,我们需要循环播放背景音乐,我们也许可以直接把声音拖放到八个声音通道的任何一个上,
但声音播放多久和它所占据的时间帧并不是对应的。为了灵活地控制背景音乐的播放,我们一般
是在OnIdle中编写代码。
--blnBkgMusicStarted指示背景音乐是否已开始
--g_strBkgMusic是当前背景音乐文件名称
GlobalblnBkgMusicStarted
Globalg_strBkgMusic
onIdle
ifg_blnBkgMusicStartedandsound(1).isBusy()=falthen
--播放新的音乐
sound(1).playFile(theMoviePath&"music"&g_strBkgMusic)
endif
end
--该函数用于播放一个背景音乐,strMusic是被播放的文件名
onPlayBkgMusicstrMusic
g_strBkgMusic=strMusic
--播放新的音乐
sound(1).playFile(theMoviePath&"music"&g_strBkgMusic)
g_blnBkgMusicStarted=true
end
另外,由于Director支持8个声音通道,所以播放音效可以用更灵活的方式,不必把音效固定
某个通道上,编写一个公共函数,然后在需要播放音效时调用它。
--形参strSound是被播放音效的文件名,不需要包含路径。
onPlaySoundstrSound
--让i从2开始,因为通道1作为背景音乐的专用通道
repeatwithi=2to8
ifsoundBusy(i)=falthen
--播放新的音乐
sound(i).playFile(theMoviePath&"sound"&strSound)
exitrepeat
endif
endrepeat
end
三、让dirctor发声
1、新建文本
2、添加以下代码
onmouUpme
voiceSpeak(sprite(num).)
end
四、下一步和上一步
onmouenter
cursor280
end
onmouleave
cursor-1
end
onmouup
puppetsound1,0
puppetsound2,0
gonext
end
onmouenter
cursor280
end
onmouleave
cursor-1
end
onmouup
puppetsound2,0
puppetsound1,0
goprevious
end
跳转(到“aaa”)
onmouenter
cursor280
end
onmouleave
cursor-1
end
onmouup
puppetsound1,0
puppetsound2,0
go"aaa"
end
注:其中puppetsound2,0puppetsound1,0这两个可以不要,以免出错。
五、背景音量的控制
库—动画—自动化—滑动添加给精灵就行了!
六、输入文字框
组件--textarea
本文发布于:2022-12-28 12:34:41,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/46655.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |