Director8从入门到精通资料.docx
- 文档编号:10531857
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:19
- 大小:25.44KB
Director8从入门到精通资料.docx
《Director8从入门到精通资料.docx》由会员分享,可在线阅读,更多相关《Director8从入门到精通资料.docx(19页珍藏版)》请在冰点文库上搜索。
Director8从入门到精通资料
Director8从入门到精通
入门篇
(一)
Director中使用的术语与电影术语非常类似,因为Director开发之初就是借鉴于电影。
我们先来认识一下Director为导演们提供的导演舞台:
Stage:
舞台。
这是演员们表演的地方。
因为Director开发是“所见即所得”,所以舞台上演员(实际上演员在舞台上称之为精灵)的表现将直接影响表演效果。
Director启动时自动打开一个空白舞台,用户可以通过快捷菜单和属性观察器(PropertyInspector)来修改舞台属性。
快捷键:
Ctrl+1。
顺便提醒一句:
Director是单任务系统。
CastWindow:
演员表(又称剧组成员表)。
与电影有所不同,无论戏份轻重,也不管有否出场,所有的演员都列在演员表中。
可以同时使用多个演员表,默认为InternalCast。
演员可以是位图(Bitmaps)、矢量图形(Vectorshapes)、文本(Texts)、脚本(Scripts)、声音(Sounds)、Flash影片(FlashMovies),QuickTime影片(QuickTimeMovies)、AVI视频(AVIVideos),还可以包含其它成员。
演员表中的演员一般都有相应的编辑器来编辑,也可以通过菜单File/Preferences/Editors…来指定编辑器。
通过双击演员可以启动默认编辑器。
快捷键:
Ctrl+3。
演员可以直接拖到舞台或总谱中,成为精灵。
多次拖动一个演员到舞台上,可以产生多个精灵,修改一个精灵的某些属性不会影响其它精灵和该演员,但修改该演员就一定会导致由它产生的精灵的改变。
Score:
总谱。
与电影相同,总谱几乎就决定了演员的出场顺序(不包含跳转时)。
后面我们将看到,总谱与脚本结合几乎可以随心所欲。
Director8提供了150个演员通道和6个特殊通道。
150个演员通道可以根据出场顺序依次安排演员,演员的通道数越小,表示演员在舞台上越靠后,也就是说,通道数越高,演员就在舞台前面,不会被通道低的演员遮挡。
6个特殊通道包括速率通道(Tempochannel)、调色板通道(Palettechannel)、过渡通道(Transitionchannel)、两个声音通道(Soundchannel)和脚本通道(Scriptchannel)。
双击Tempochannels,出现如下对话框。
其中的四个可选项分别表示:
设定播放的速率(帧每秒)、在该帧停留时间、等待用户鼠标或键盘响应、等待标记点。
注意:
设定播放速率后,在该帧以后没有设播放速率的帧都将以当前设定的速率播放。
这在设置有帧跳转时应特别注意。
默认为30fps。
双击调色板通道,将出现如下对话框,可以选择非系统调色板或自定义调色板。
在导入位图时,如果位图调色板与当前调色板不匹配,系统将自动导入该调色板。
过渡通道是提供转场效果的。
从前一场景到后一场景需要过渡时,使用特殊通道选取合适的过渡,可以达到非常棒的效果。
双击过渡通道,出现如下对话框,可以在列表中选取转场效果。
注意:
转场必须放置在下一场景出现的前一帧,即当前场景的末一帧。
在特殊通道中,声音通道有两个,而实际可以使用的声音通道有8个,其它6个可以用Lingo语言控制。
使用时可以直接将演员表中的声音成员拖到声音通道中,哪些帧需要这些声音就把声音拖到那些帧上;也可以双击声音通道从列表中选取,然后在声音通道中拖动或延长。
脚本通道是提供写帧脚本的。
帧脚本的事件将在后面详述。
当前帧的脚本只对当前帧起作用。
当然,如果帧脚本改变了演员的某些属性,这些属性将一直有效直到再次更改。
入门篇
(二)
总谱还提供了其它功能,可以通过快捷菜单调用。
快捷键Ctrl+4。
Paint:
画图窗口。
画图窗口提供了一整套画图的基本工具,可以进行简单的画图和图象修改。
通过画图作出的图形直接存放在演员表中。
画图可以使用外挂效果。
比如将PhotoShop中的Filters文件夹拷贝到Director的Xtras文件夹中就可以使用PhotoShop的图片处理效果了。
画图和Director特有的“洋葱皮”(Onionskin)技术结合,可以轻而易举地将一连串相似的图片作成动画效果并制作影片环,以便随时调用。
下面简单介绍其用法:
用Paint编辑一幅图片,通过菜单View/Onionskin调用“洋葱皮”,选中“Toggleonionskinning”按钮;
按Paint窗口左上角的加号,新建一幅图,此时出现前一幅图片的淡影;
选中工具栏上的Brush工具,选择左下角的墨水效果为Reveal,用鼠标在前幅图的淡影上选取保留的部分,可以看到选取的部分颜色变深;
再次单击“Toggleonionskinning”按钮,关闭“洋葱皮”,淡影消失,现在就可以加工该图了;
重复以上步骤,制作几幅连续变化的图片;
关闭“洋葱皮”,关闭Paint窗口。
在演员表中选取刚刚制作的几幅图片;
选择菜单Modify/casttotime,这时舞台和总谱中都出现由此得到的精灵,选择播放,就可以看到动画;复制或剪切该精灵,并粘贴到演员表中,此时要求输入影片环的名称,输入后保存,就可以在影片中直接使用影片环了。
提示:
如果在画图时总会出现一幅淡影,那是“洋葱皮”没有关闭,调出
“洋葱皮”,再次单击“Toggleonionskinning”按钮就可以了。
注意:
组成影片环的演员均不能被删除!
Text:
文本窗口。
和Paint窗口一样,文本窗口制作的文本被直接保存到演员表中。
在文本窗口中可以制作丰富多变的文本,并可以通过快捷菜单来设置文本属性。
快捷键:
Ctrl+6。
ToolPalette:
控件工具栏。
提供了一些基本控件,可以直接拖到舞台上,并自动加入到演员表中。
快捷键Ctrl+7。
Field:
域文本窗口。
与文本窗口类似,但比文本窗口更好用。
快捷键Ctrl+8。
ControlPanel:
控制面板。
可以用不同的速率和位置来播放影片。
快捷键Ctrl+2。
VectorShape:
矢量图形窗口。
与Paint窗口类似,用来绘制矢量图形。
快捷键Ctrl+Shift+V。
还有一个最重要的功能窗口值得一提:
Inspectors。
Director8的一个最重要、最显著的改进就是可以根据当前焦点自动切换属性观察器。
精灵的大部分属性都是直接在观察器中修改。
Script:
脚本窗口。
为保持一致,Director中代码被称之为脚本。
脚本分为三种:
电影脚本、行为脚本以及父脚本。
电影脚本起全局控制的作用,许多初始化动作和结束动作都在电影脚本中完成;行为脚本只在某一特殊阶段或事件发生时起作用;父脚本本身不产生任何结果,只是用来产生多个子对象,并设置各种参数以便形成各不相同的实例。
在属性观察器中可以更改脚本类型,并能将脚本连接到外部文件。
入门篇(三)
因为Director的Lingo语言是面向对象的事件触发机制,下面就来看一看Director的基本事件和顺序。
事件名称(Handler)状态说明
ActiveWindow当一个窗口开始运行时触发
CloseWindow当关闭一个窗口时触发
DeaactivateWindow当一个窗口停止运行时触发
EnterFrame进入一帧(FRAME)时触发
Exitframe离开一帧时触发
Idle影片在停滞状态时触发
KeyDown按下键盘按键时触发
KeyUp放开键盘按键时触发
MouseDown按下鼠标键时触发
MouseUp放开鼠标键时触发
MoveWindow当移动窗口时触发
OpenWindow打开一个新窗口时触发
ResizeWindow调整窗口大小时触发
RightMouseDown按下鼠标右键时触发
RightMouseUp放开鼠标右键时触发
StartMovie影片开始播放时触发
StepMovie分格播放影片时触发
StopMovie停止播放影片时触发
TimeOut超过设置的时间时触发
ZoomWindow放大窗口时触发
如果需要影片响应某类事件,只需在该事件中写脚本即可。
现在再来看看脚本的优先权:
事件脚本(EventScript),是指以下五种事件:
MouseUpScript,MouseDownScript,KeyUpScript,KeyDownScript,TimeOut;
精灵脚本(SpriteScript),是直接赋给精灵的动作;
剧组成员脚本(CastMemberScript),是赋给演员的动作,如果由该演员产生的精灵在同类事件中没有写脚本,那么所有精灵都将执行该演员的动作;
帧脚本(FrameScript),通过双击脚本通道写入的脚本,或者将演员表中的脚本成员拖到脚本通道上,也成为帧脚本,用来控制在某些帧应执行的动作;
电影脚本(MovieScript),起全局作用,一般初始化工作和全局变量、用户自定义事件都在这里完成。
如果同时存在几种脚本,将执行优先级别较高的脚本,一般地,优先级高的脚本覆盖优先级低的脚本。
比如同一精灵既有精灵脚本又有剧组成员脚本,将执行优先级较高的精灵脚本,并屏蔽优先级较低的剧组成员脚本。
脚本的位置安排相当重要,稍有不慎就可能出现漏洞。
比如在帧脚本中对某一精灵木偶化,并操纵它的行为,如果将该帧脚本放在电影脚本中,那么无论在什么地方,只要该精灵所在的通道不为空,该通道上的精灵就会作出相同的动作。
同样,不同的事件必须有对应的判断条件,比如在MouseDown事件中用TheMouseUp作判断条件,注定不会有什么反应;同样在MouseUp事件中判断TheStillDown或TheMouseDown,别生气,还是没有反应。
一般来讲,凡是能够用总谱实现的动作都可以用脚本来实现,有时候用脚本实现要简单得多。
比如在一个游戏中,两个精灵的几次对话可以用总谱来控制,也可以用脚本实现。
用总谱实现是恰当地安排精灵的位置和讲话内容,根据情节顺序进行。
如果用脚本来控制,不仅总谱要简单得多,实现起来也较方便,而且影片要小得多:
通过脚本控制精灵的移动和对话框的位置,根据情节设置计数器来控制讲话内容和时间长短。
还有两个相当重要的窗口:
Debugger(调试)和Message(消息)窗口。
在调试时结合这两个窗口可以无往而不胜。
影片的最终效果靠舞台、总谱和Lingo脚本来实现。
总谱的编排和Lingo脚本的高级应用需要高超的技巧,这必须在使用中不断积累经验。
入门篇(四)
下面介绍一个用来检测饼图颜色的简单例子。
首先在Paint窗口中画彩色饼图,保存为“Circle”,在Text窗口中作输入文本“Thecoloris:
”,并保存为“Textbar”。
将上面两个剧组成员拖到舞台上,设置他们的属性。
将饼图墨水效果设置为“Matte”或“BackgroundTransparent”,消除白色边框。
在总谱中将两个成员的长度均设为一帧,放置在第一帧。
在电影脚本中输入如下初始化脚本:
global_Color,_text
onstartmovie
_text="thecoloris:
"
_color=rgb(0,0,0)
member("textbar").alignment=#center
member("textbar").text=_text
end
下面分析一下取色方法。
要求当鼠标点击在饼图上时必须实时检测出颜色值。
因为影片以30帧每秒的速率播放,也就是说在一帧上每秒可以检测30次鼠标事件并作出相应判断,这对于鼠标事件来说时间已经足够短了。
双击第一帧的脚本通道,在帧脚本中输入如下脚本:
onexitFrameme
check--检测鼠标事件并在当前帧循环
gotheframe
end
oncheck
global_color,_text
repeatwhilethemouseDown--检测鼠标按键
ifthemousemember<>member("circle")then--如果鼠标没有
--选中调色饼
exit--则退出
endif
--得到相对于调色饼的鼠标点的位置,并取该点颜色值
--注意计算该点时,是用鼠标位置减去调色饼的左上角坐标,
--而不是调色饼的位置Loc
_loc=themouseloc-point(sprite
(1).rect[1],sprite
(1).rect[2])
_color=member("circle").image.getpixel(_loc)
--如果取色为黑色或白色,则退出,这样可以保证只有鼠标点中饼图时才
--检测到颜色
if(_color=rgb(0,0,0))or(_color=rgb(255,255,255))then
exit
endif
--在文本框中显示颜色值,并改变文本框背景色为选取色
member("textbar").text=_text&Return&_color
sprite
(2).bgcolor=_color
updatestage
endrepeat
end
现在可以编译运行了。
效果如下图所示。
这个例子没有什么特别的技巧,只需要了解事件触发机制和前面介绍的影片运作方式,很快就可以做出来。
提高篇
(一)
Director提供的功能,象文字特效、颜色渐变、动画效果等,很快就可以熟练掌握,但是要有提高,作出有一定水准的多媒体作品,就必须与脚本相结合,在保证影片细节的同时,提高交互性和智能化功能。
如果平时关注一下影视媒体和多媒体游戏、演示、教学软件,就会发现有很多别具一格、独具匠心的动画效果,其中一部分就是用Director开发的。
下面先介绍一下常见的使用技巧:
窥视效果,也称之为望远镜效果。
在前景上透过某一区域可以看到背
景的动画效果,动画超出该区域的部分被截去。
比如“红色警戒”的片头动画,通过望远镜看到坦克在移动。
实现方法:
将动画放在前景的后面,在前景上选择一块区域,通过选取前景色和墨水效果,将该区域设置为透明,就出现这种效果。
日出效果,太阳升起,大地由暗变亮。
实现方法:
通过颜色配合和透明度(Blend)的改变就可以实现这种效果。
主选单效果。
作为菜单使用的文本或图片,在鼠标移过或选取时图片
有颜色、大小变化或周围光环闪烁。
实现方法:
判断鼠标位置所在成员,激活时用图片替换并循环几次,或者制作一个闪烁的影片环,加在激活成员上,就出现闪烁现象,如果可以配合声音,效果会更好。
一般来讲,如果选单较多,用脚本实现要简单得多。
其它效果还很多,不一一详述,只要多看多想多做,就会掌握更多的方法。
Lingo语言的掌握不是一蹴而就的事,需要不断学习和积累经验。
提高篇
(二)
下面介绍一下脚本语言的三种基本结构:
1、顺序结构:
iflogicalExpression1then
statement(s)
elseiflogicalExpression2then
statement(s)
elseiflogicalExpression3then
statement(s)
endif
2、控制结构
caseexpressionof
expression1:
Statement
expression2:
multipleStatements
...
expression3,expression4:
Statement
{otherwise:
statement(s)}
endcase
3、循环结构
repeatwhiletestCondition
statement(s)
endrepeat
及
repeatwithcounter=starttofinish
statement(s)
end
在实际使用中,上述结构经常用到,至于语言细节描述,限于篇幅,不作具体讲解,请参阅帮助和其它低版本Director的参考书籍。
在Director8的系统路径…/learning/Lingo_examples下有个画图的例子Imaging.dir。
在该例中使用了行为库中的“Multi-StateButton”行为。
现在要求以此为蓝本,改成一个不用行为库、更简洁易懂的例子。
由于讲解的方式所限,在此讲一讲主要思路,欢迎有兴趣的朋友与我联系,互相交流。
沿用系统实例的部分画图工具图片,保留四个显示颜色的大选色板,用四个画图工具(注意,不是按钮)制作四个光标用来作图。
方法如下:
单击Insert/MediaElement/Cursor…菜单项,选择画图图片,分别制作成光标并保存即可。
因为画图基本上全部由脚本实现,因而在舞台上布置好精灵后,将总谱中的帧长度全部设为一帧。
脚本编制思路如下:
由选色板的激活状态选择颜色,在选色板的MouseDown事件中写脚本如下:
onmouseDownme
globaldrawcolor
--设置鼠标点击位置,由此得到颜色并替换精灵的剧组成员
yellowRect=rect(545,269,563,286)
redRect=rect(561,269,579,286)
blueRect=rect(545,285,563,302)
greenRect=rect(561,285,579,302)
--判断鼠标点击位置,得到颜色值,并替换该精灵的剧组成员
if(theclickloc).inside(yellowrect)then
drawcolor=rgb(255,255,0)
sprite(me.spriteNum).member=member("yellowcolor")
elseif(theclickloc).inside(redRect)then
drawcolor=rgb(255,0,0)
sprite(me.spriteNum).member=member("redcolor")
elseif(theclickloc).inside(Bluerect)then
drawcolor=rgb(0,0,255)
sprite(me.spriteNum).member=member("bluecolor")
else
drawcolor=rgb(0,255,0)
sprite(me.spriteNum).member=member("greencolor")
endif
end
提高篇(三)
现在需要判断激活的画图按钮。
设置一个全局变量CurrectTool保存当前激活的按钮,可能取值为#none(没有按钮被激活),#chalk(粉笔按钮被激活),#rectangle(矩形按钮被激活),#circle(画圆按钮被激活),#pencil(铅笔按钮被激活)。
在电影脚本中写自定义事件如下:
oncheckInactive
globalcurrenttool,mouseclickcounter
ifcurrenttool<>#nonethen
casecurrenttoolof
#chalk:
sprite(3).member=member("chalkUp")
#rectangle:
sprite(4).member=member("rectUp")
#circle:
sprite(5).member=member("circleup")
#pencil:
sprite(6).member=member("lineup")
endcase
endif
mouseclickcounter=0
end
然后在每个按钮的MouseDown事件中检测以上自定义事件。
以“ChalkUp”按钮为例,写脚本如下:
onmouseDownme
globalcurrenttool,mouseclickcounter
mouseclickcounter=0
checkInactive
sprite(me.spriteNum).member=member("chalkdown")
currenttool=#chalk
end
选择了画图工具,现在开始画图。
以矩形画图为例,写自定义动作脚本如下:
ondrawwithrectangle
globalmouseclickcounter,drawcolor
globalbeginpointX,beginpointY
--注意到全局变量MouseClickCounter,由于矩形由左上角和右下角坐标决定,
--因而必须鼠标连击两次才能画出一个矩形。
--首先得到左上角坐标,再得到右下角坐标
casemouseclickcounterof
0:
beginpointX=themouseH-49
beginpointY=themouseV-66
1:
endpointX=themouseH-49
endpointY=themouseV-66
member
(2).image.draw(beginpointX,beginpointY,endpointX,endpointY,[#shapetype:
#rect,#linesize:
2,#color:
drawcolor])
endcase
end
因为在黑板上作图,所以在黑板的MouseDown事件中写如下脚本:
onmouseDownme
globalcurrenttool,mouseclickcounter
--如果鼠标已经连击了两次,就将全局变量MouseClickCounter清零
ifmouseclickcounter=2then
mouseclickcounter=0
endif
--根据按钮的激活状态来决定画什么图形
casecurrenttoolof
#rectangle:
drawwithrectangle
#circle:
drawwithcircle
#pencil:
drawwithpencil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Director8 入门 精通 资料