让疯狂导演更加疯狂——为Director添加鼠标右键菜单 王文山 1999年 第43期 38版 众所周知,动画大导演Director在多媒体制作类软件中一直享有很高的声誉,是进行多媒体创作的极佳工具,与Authware、Action、方正奥思等多媒体著作软件相比,有其不可比拟的优势。 遗憾的是鼠标右键菜单在多媒体应用中就比较少见了(如Director、Vb、Vc等)。它的功能的确非常强大,未激活时处于隐藏状态,不破坏画面,但必要时随时随地都能激活,用于实现一些特殊功能(如前后跳转、开关按钮、调用工具、切换显示等)极为方便。本人经过一段时间的摸索,运用Director独有的MIAW(Movie In A Window)技术很好地实现了鼠标右键菜单的功能。其具体步骤如下: 1.创建两个Director文件。一个主程序文件,名为Main.dir,另一个是右键菜单文件,名为Rightmenu.dir。为便于理解和简化操作,我们假定主程序文件是一个多媒体课件,它由四章组成,我们将用鼠标右键菜单实现各章之间的跳转。   这样Rightmenu.dir文件样式如^433801a^1所示: 其中第一、二、三、四章区域可处理成按钮或热区,最好能响应鼠标移入(如字变亮、覆以蓝条等)和鼠标点击(此响应是必须的)两种操作。其尺寸适宜即可(如本实例为100×160),单位为Pix),若要简单,可在Photoshop中做一张整图(如上所示),然后裁成四张长条图片,输入到Director演员表中,再分别拖到Score窗口,使之按顺序占据第1帧的1、2、3、4通道(此电影仅1帧)。在Stage中使它们重新拼合完整,调整Movie尺寸为100×160并居中。Main.dir文件在各章的开始处需进行标记,如:Lesson1,Lesson2,Lesson3,Lesson4。修改Movie属性,使其在屏幕上的位置居中,两个文件放在同一路径。 2.解决右键菜单定位问题。在Win98桌面上四处点一点右键,看看菜单的弹出,可以发现其弹出的形式有四种情况,如^433801b^2所示:   (注:图中圆圈所圈点代表鼠标定位点;MouserightS、MousebottomS分别为鼠标定位点距Main应用程序右边界和下边界的距离;Menuwidth、Menuheight分别为菜单的宽和高,本实例中分别设置为100Pix和160Pix。)   A当MouserightS>=Menuwidth且MousebottomS>=Menuheight时,如图2中的2-1。   B当MouserightS=Menuheight时,如图2中的2-2。   C当MouserightS>=Menuwidth且MousebottomS=100 and mouserightS>=160 then   l=the mouseh+the stageleft   t=the mousev+the stagetop   else if mouserightS<100 and mouserightS>=160 then   l=the mouseh-100+the stageleft   t=the mousev+the stagetop   else if mouserightS>=100 and mouserightS<160 then   l=the mouseh+the stageleft   t=the mousev-160+the stagetop   else if mouserightS<100 and mouserightS<160 then   l=the mouseh-100+the stageleft   t=the mousev-160+the stagetop   end if   set the rect of rightmenuwindow to rect(l,t,l+100,t+160)   set the visible of rightmenuwindow to true   end rightmousedown   on mousedown   close rightmenuwindow   end mousedown   on stopmovie   forget rightmenuwindow   end   (2)rightmenu.dir脚本   movie脚本:   on startmovie   repeat with x=1 to 4   puppetsprite x,true   end repeat   end   frame脚本(第1帧):   on exitframe   go to the frame   end   sprite脚本:   sprite1(即第一章):   on mousedown   tell the stage to go to ″lesson1″   close window ″rightmenu″   end   sprite2,3,4脚本同上类似,只是把lesson1相应换成lesson2,lesson3,lesson4即可。   再看一下,你的Director是不是更加完美了。