director

更新时间:2022-12-28 12:34:41 阅读: 评论:0


2022年12月28日发(作者:增大摩擦力的方法)

一、全屏播放

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小时内删除。

上一篇:span
下一篇:clipboard
标签:director
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图