初级视频编辑室|草蜢非编论坛|初级视编室|草蜢视频编辑|会声会影|威力导演|电子相册

 找回密码
 加入初编室
搜索
查看: 2261|回复: 21
打印 上一主题 下一主题

[Director 多媒体爱好者] Lingo魔法书

[复制链接]

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

跳转到指定楼层
楼主
发表于 2014-11-5 07:40:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
onekey onekey
本帖最后由 五星上将 于 2014-11-10 09:21 编辑

Lingo魔法书
作者:机器猫
什么是Lingo?


  使用过Director的朋友一定都知道Lingo语言。Director的动画制作功能最容易为大家所接受,但是Lingo语言就有点让人感到神秘兮兮,光是纷繁复杂的函数和多而庞杂的变量就让人望而生畏。其实Lingo没有我们想象的那么复杂,甚至有些非常简单。如果你和我一样想学习Lingo又有编程恐惧症的话,我们就一起开始下面的课程吧^_^。

首先明白一个最基本的问题。为什么需要在Director中进行编程呢?

  举1个非常简单的例子:如果制作完成了一个没有任何lingo语言的电影,电影将会按照每秒钟15帧画面的速度“勇往直前”的播放下去直到最后一帧,即便你如何干涉都没有用。对于使用它的人来说,这是一个非常糟糕的导航。而Lingo就可以改变这种状况。

  使用Lingo,你可以让播放头停在第1帧。直到你按一个按钮才继续。或者你可以直接跳到第22帧。

  你也可以调用别的电影,甚至打开网页。

  Lingo还有更多更强的功能,可以完全控制cast成员和sprites, 启动电影的播放和暂停等等,甚至可以控制你的计算机, 例如关机,退出director,或者弹出对话框通知用户一些事情。下面的1个例子就是一个非常简单的Lingo。如果您安装了Shockwave 8.0 player.您就可以看效果。如果您看不到下面的效果,请点击下载,并安装Shockwave 8.0 player。因为我们以后的范例都会用到这个插件。
楼主热帖
河边已是一首歌
回复

使用道具 举报

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

沙发
 楼主| 发表于 2014-11-5 07:40:57 | 只看该作者
Message窗口和List View

(原版取自国外教材 机器猫参考并改编)

在正式开始Lingo学习之前,我们先来认识一些用于操作和调试的小东东,Message窗口和属性面板

第一课:在Message 窗口中调试Lingo
启动Message窗口我们只要在Director工具栏上单击按钮即可.



  这就是Message信息窗口。在里面输入的Lingo语言都可以直接执行。可以用于我们试验Lingo语言。下面我们就来试验一条。

  Put 15+20

  输入完毕后按回车可以直接看到运算的结果。

Put语句的作用
Put语句的作用就是显示一些信息。格式是

Put 表达式

  直接用在Message窗口里面可以用来调试程序,或者看到一些信息。比如:

  put the time --显示的是当前时间 the time是一个系统时间函数

  put a --显示a这个变量里面的值,如果变量没有定义的话,显示的是无效。

  put 15x20 --显示计算结果

刚才我们试验了一条基本的显示命令.下面我们来做一些更好玩的东西.让Director弹出一个窗口.就象我们在网页上看到的弹出窗口那样.

  在Message窗口中输入 alert "我要学Lingo." 然后直接回车.一个弹出窗口就做好了.按确定就可以关闭他.



  alert的作用就是制作弹出窗口显示 alert后面的信息。

恩?是不是还不过瘾?我们现在让他来打开5dmedia的首页.在Message窗口中输入

gotoNetPage "http://www.5dmedia.com"

  然后回车,只要你连在网上就能弹出浏览器窗口进入www.5dmedia.com首页.

gotoNetPage的作用是连接到网页
gotoNetPage的作用是连接到网页.命令格式是:

gotoNetPage "URL", {"targetName"}

  Url意思是某个地址,targetName为网页中的某个目标帧.(如果对Target不了解请到5dmedia.com查阅Dreamweaver3一学就会分帧篇.例如  gotoNetPage "http://www.5dmedia.com","_blank"这句话的意思就是新开一个窗口打开 www.5dmedia.com。说到这里你有没有联想到什么?对了:)可以利用Director的这个特点制作网页的导航条,是不是很帅阿?

下面还有3条命令就是

Quit --退出Director

restart --重启动机器

shutDown --关机

不过猫法师劝你不要马上试验,:)因为我们还有好玩的东西在后面呢。关了机就没的玩咯。

Ok 我们的Message窗口试验就到这里。在Message窗口中我们输入的Lingo语言马上都可以执行。但是用它来编程是不行的。我们可以把他作为一个试验语言的好工具。而且可以用它来获取一些你想要的信息。

例如:



我们在舞台上用工具直踊桓鐾衷病7旁诜志当恚⊿core)的第一个通道中。然后在Message窗口中输入

Put the loc of sprite 1

回车我们就可以得到Sprite 1 的注册点(registration point)的位置。(注:每个Sprite都会有一个registration point,可以用来定位sprite的坐标值,在上面图片该点在圆的左上角)。同样我们也可以从右边属性面板看到它的值

X,Y(34,31)。读者注意不要和下面的l和t混淆 l是左边位置 t是顶部位置,合起来表示sprite的左上角。这里正好注册点在sprite的左上角,所以数值一样。

  我们还可以把属性面板切换到List View 列表显示状态。



我们前面做的Put the loc of sprite 1得到的两个坐标分别是H和V也就是(34,31)我们也可以使用

Put the locv of sprite 1来单独获得垂直坐标。List View是一种很有用的模式可以方便我们观察Sprite的属性。

总结
看到这里您也许开始一经有点头晕了。没关系我们最后整理以下思路。我们这次讲解了

Message窗口可以直接在里面输入和测试lingo
Put
Alert
goto netpage
quit
restart
shutdown
属性面板的使用
下一次我们就从制作最简单的导航开始,正式学习Lingo语言。
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

板凳
 楼主| 发表于 2014-11-5 07:41:25 | 只看该作者
<P align=center><B>go来go去制作一个简单的导航</B>

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=180 width=240 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                  <embed src="10523/lingo2.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="240"        height="180">                </embed>               </OBJECT>

<P align=left>  Ok上次我们使用Message窗口进行了一些调试工作.这次我们就来正式学习.首先请大家看上面一个范例.(如果你不能观看,请到<a href="http://www.5dmedia.com首页下载shockwave/" target="_blank" ><FONT color=#666666>www.5dmedia.com首页下载Shockwave</FONT></A> 8 player插件.因为我们以后也会用到他.)

<P align=left>  我们来分析一下这个例子.页面上有三个按钮,单击任何一个跳转到一个画面.然后按返回按钮返回.其实导航结构是这样的.主界面--&gt;子模块 ,然后子模块--&gt;主界面.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-2.jpg">

<P align=left>  我们首先看看时间轴是如何安排的.时间轴上首先第一段是程序的封面和三个按钮, 第二段是错了的画面,第三段是对了的画面,第四段是错了的画面.所以上面的例子实际上就是从封面跳转到下面不同的时间轴段,然后按一个按钮就返回封面.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-1.jpg">

<P align=left>  下面我们来实际制作这个程序,首先导入界面的四张图片,然后拖拽到时间轴上.每段5帧画面.

<P align=left>主界面1-5帧.第二段 10-15帧 第三段 20-25帧 第四段 30-35帧.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-4.gif">

<P align=left>

<P align=left>  接下来是跳转按钮.选好工具栏上的Button在主界面上绘制按钮.(如果工具栏不出来可以选择菜单window-&gt;Toolbar).依次放在Director的第2第3第4通道中.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-7.gif">

<P align=left>  这些都制作完成之后,再制作返回按钮.由于接下来所有子模块用的都是同样的按钮.所以画一个就可以.并且帧数从10-35贯穿所有模块.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-8.gif">

<P align=left>  Ok现在我们的程序框架基本上搭建好了接下来就是填写程序了.如果现在我们马上运行,程序会从头放到底.没有任何变化所以我们现在的第一个任务就是要停住画面.为每一段画面都加上语句停止画面.

<P align=left>  首先将播放头移动到第一段的最后.也就是第5帧画面,双击上面脚本通道中的单元格.也就是图中的黑色方块处.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-9.gif">

<P align=left>  在弹出的脚本窗口中,输入脚本. go the frame 这句命令使播放头停止在这个画面上.

<P align=center>  <img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-10.gif">

<P align=left>  这里解释下里面的命令的作用.

<P align=left>   On exitframe me --当退出帧的时候

<P align=left>     go the frame --停止在这帧画面上

<P align=left>   end --该段程序结束

<P align=left>  现在播放电影可以看到,整个程序在第5帧画面停止不走了.同样道理在其他几个场景最后一帧里面写好同样的语句.分别是5\15\25\35帧.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-11.gif">

<P align=left>  刚才我们在整个画面中给帧上了脚本.让播放头停在帧上不动.接下来实现点按钮,跳转到某段画面.因为我们是按了按钮才发生动作.所以我们要给按钮指定脚本.在屏幕上选中一个按钮选择鼠标右键,在菜单中选择Script.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10523/lingo3-12.gif">

<P align=left>脚本这样写:

<P align=left>on mouseUp me --当鼠标从按钮抬起时候
  go frame 10 --跳转帧10
end --结束事件

<P align=left>播放电影可以看到 一旦按了第一个按钮之后就跳转到第二段画面.我们如法炮制给主界面中剩下的按钮加上脚本.分别是<B>go frame 20</B> 和<B>go frame 30.</B>要跳回去怎么办呢?给跳回按钮加上脚本<B>go frame 1</B>

<P align=left>oK现在为止整个程序之做好了.这个例子主要用了 go语句

<P align=left>格式是 <B>Go frame &lt;帧数&gt;</B> --跳转到某帧

<P align=left>   <B>Go the frame  </B>--停止在某帧

<P align=left>  同时我们还分别试验了给一个帧加上脚本和一个按钮加上脚本.也许你现在还有点糊涂,没关系更多的概念我们再下次一个个讲解.请大家思考制作这样一个例子.

<P align=left>  做一个类似Powerpoint简报的东西 ,给5张图片,依次显示,每次显示一张图片.按了按钮之后就显示下一张.

<P align=left>  如果您很轻易的做好了程序 再想想如何加一个按钮倒过来向前播放.
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

地板
 楼主| 发表于 2014-11-5 07:42:04 | 只看该作者
Lingo 语言基础

一、事件与命令

事件

  在上次的教程中,我们已经初步试验了Lingo的编写和运行.这次我们要对于Lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。还记得上次我们让电影停在某帧时候的脚本是如何的么?

On exitframe

 go the frame

end

  这里面就包含了一个Lingo的最基本的一点。Lingo是基于事件(event)的。当某个事件发生的时候,才会执行下面的动作。在上面这个脚本中 go the frame这句话是在 On exitframe(退出改帧)的时候执行的on exitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到end为止。同样,下面的一些都是Lingo的也就是事件。

On mousedown   --当鼠标按下

  Lingo语句

end

On startMovie --电影一开始

  Lingo语句

end

On enterFrame --当播放头进入一帧

  Lingo语句

end

On beginsprite  --第一次播放这个sprite的时候

  Lingo语句

end

On keydown  --当键盘按下键的时候

  Lingo语句

end

 什么时候采取什么样的事件呢?这是和脚本的类型有关的。别着急等会儿我们一个个来看。

命令:知道了什么是事件以后,就简单了。在事件当中的一些语句就是命令。比如go the frame这句就是一个命令。它的作用可以停止播放头。最后我们用一个形象的比喻来作为事件和命令的解释。

On 走进屋子

 喝水

end

发现了么?当走进屋子(事件)喝水(动作)

二、脚本类型

  Lingo的脚本类型分为frame脚本,sprite脚本, cast脚本和movie脚本。在这里我不想把脚本前面的关键字翻译成为中文因为这样可能容易引起歧义。区分这些脚本的类型的方法就是看这些脚本写在什么位置上。frame脚本写在帧里面。Sprite脚本写在Sprite上,Cast 脚本写在Cast上,而Movie脚本写在电影中不依靠任何的其他帧和角色。这样写看起来有点象废话。不过等下解释了大家就会明白的。

frame脚本

 写在帧中的脚本就是frame脚本。播放头在这帧中的时候就会执行frame脚本。编写frame脚本,只要双击帧脚本通道,系统就会弹出窗口。此时就可以编写frame脚本。

  我们上一个例子中用到的第一个脚本就是帧脚本。我们是在Score(分镜表)的脚本通道里面写的。我们当时需要把播放头停止在第5帧。这个动作要求在第5帧画面的时候执行。并且和别的sprite 或者Cast都没有关系。仅仅是在帧发生。于是我们采用在帧脚本。在帧脚本通道第5帧的地方双击。系统弹出窗口,默认的事件为on exitframe me 当帧退出的时候,我们执行下面的命令,停在原地。



  常用的frame脚本事件有。

on enterframe --当播放头进入该帧的时候

  lingo语言

end

on exitframe --当播放头移处该帧的时候

  lingo语言

end

Sprite脚本

  Sprite脚本应用于Sprite中。我们把Cast库中的演员拖到舞台之上以后就是Sprite了。在舞台上对准一个Sprite按右键在菜单中选择Script系统弹出对话框。这个脚本窗口里写的就是Sprite了。



  Sprite脚本在Sprite的一系列操作中才会有作用。比如,单击Sprite,双击sprite,鼠标在sprite上面,鼠标移出sprite。当我们想要对舞台上的某个东西操作,来发生动作的时候就可以用Sprite脚本了。上次的例子中我们要求按一个按钮跳转到第X帧。使用的就是Sprite脚本。那段代码就是

On mousedown

 go frame 15

end

当鼠标按下按钮这个Sprite的时候,播放头到第15帧去。

Sprite中常用的一些事件主要有

On mousedown (鼠标按下)On mousup(鼠标抬起)On mouseleave(鼠标离开) On mousewithin(鼠标在对象内)。

Cast脚本

  Cast脚本是写给Cast(演员)的。在角色库中可以编写。对准一个cast按右键盘,选择里面的Cast member Script,弹出窗口中编写的就是Cast脚本。当对某Cast进行一些操作的时候Cast脚本就开始发挥作用。Cast常用事件何Sprite基本相同。



读到这里读者稍微思考一下就会发现一个问题。好像Cast脚本和Sprite脚本差不多?

下面我们来回忆一下Cast和Sprite的关系。



  角色库中的叫做Cast,拖到舞台上就叫做Sprite。一个Cast可以对应多个Sprite.当我们对一个Cast编写了脚本之后,电影中所有相应的Sprite都具有了相同的脚本而无需再次编写.因为Sprite就是基于Cast而产生的.例如上面图中给Cast圆编写了脚本之后.舞台上三个Sprite都具有了相同的脚本.读者接下来就会有另外一个疑问当舞台上的Sprite也有了脚本同时Cast也有脚本的时候谁优先执行呢?答案是Sprite脚本优先执行.为了帮助大家想通.时刻记住Director是按照电影的观念来安排的.Cast就是演员,演员都有自己的个性.Sprite是演员扮演的人物,戏中的人物都是有戏中人物的个性的.当戏开演的时候谁的个性占上风呢?显然是戏中的人物个性占上风.

Movie脚本:

  Movie脚本不依赖任何一个Cast,sprite,frame.他可以独立在电影内存在.凡是在电影中全局性的.还有"经常性"的交互时间都在这里写的.还有电影一开始的时候和结束的时候发生的命令也要写在这个里面.

下面举出一些Movie脚本独有的一些事件.

On startmovie 电影开始的时候

On StopMovie. 电影结束的时候

On idle 系统空闲的时候没有任何脚本被执行的时候.

Movie脚本的编写 单击工具栏上的就可以了.
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

5#
 楼主| 发表于 2014-11-5 07:42:16 | 只看该作者
<P 0.4cm 0cm 0pt"><B>Lingo魔法书--导航语句</B>

<P align=left>  上次我们探讨了关于Lingo语言的基本格式.从本次开始我们就来一个个实际的Lingo语言.今天我们学习导航命令.

<TABLE width="75%" border=0>

<TR>
<TD bgColor=#cccccc>go语句</TD></TR>
<TR>
<TD height=294>
<P 0.4cm 0cm 0pt"><B>go frame &lt;帧数&gt;</B> --跳转到第某个画面,例子 go frame 20,播放头跳到第20帧.

<P 0.4cm 0cm 0pt"><B>go the frame</B> --播放头停在某个画面.

<P 0.4cm 0cm 0pt"><B>go &lt;标记&gt; </B>--跳到某个有标记的画面.

<P 0.4cm 0cm 0pt"><B>go movie &lt;电影名字&gt; </B>--从现在的电影跳转到另外一个电影中去.例如go movie "hello" 跳转到名字叫hello的电影中.

<P 0.4cm 0cm 0pt">下面是两个扩展命令

<P 0.4cm 0cm 0pt"><B>go &lt;帧数&gt; of movie &lt;电影名字&gt;</B> --跳转到另外一个电影的某个画面.

<P 0.4cm 0cm 0pt"><B>go &lt;标记&gt; of movie &lt;电影名字&gt;</B> --跳转到另外一个电影的某个标记.

<P 0.4cm 0cm 0pt">
</TD></TR></TABLE>
<P align=left>  go命令我们已经很熟悉了那就是可以使用go直接跳转画面.停住播放头.这些我们都在第一个例子中进行了一个试验.这次我们着重要说的是画面的标记mark.什么叫做标记呢,故名思意就是给一个帧做上一个标记.现在有这样的一个例子.我要跳转到第20帧,Lingo语言应该怎样写呢?

<P align=center><B>go frame 20</B>

<P align=left>用了帧标记是怎样呢?比如我给20帧加上一个标记,名字叫做"ok".我们可以这样写.

<P align=center><B>go "ok"</B>

<P align=left><B><FONT color=#ff0000>这两条命令是等价的<FONT color=#000000>.</FONT></FONT></B><FONT color=#ff0000><FONT color=#000000>大家可以分别单击下面的两条语句来观察结果.在下手之前大家想一下,如果我到了第20帧想回来应该怎样写Lingo语句呢?</FONT></FONT>

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=7,0,2,0 height=300 width=400 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                      <embed src="10525/lingo2-1.dcr"  pluginspage="http://www.macromedia.com/shockwave/download/" width="400"  height="300">                  </embed>                 </OBJECT>

<P align=left>读者也许会问,用了标记有什么好处呢?标记的好处至少可以有两条.

<P align=left>1.好记.当我们的画面数非常多的时候我们是记不清楚什么地方是什么东西的.做了标记之后一目了然.

<P align=left>2.标记可以移动.比如本来我们做了一个交互是跳转到20帧,等下修改程序之后变成跳到30帧.这个时候非修改你的Lingo语句不可.但是现在我们可以直接把标记用鼠标移动到30帧,就可以完成修改.对于制作是很方便的.

<P align=left>哦忘记了最重要的事情,标记怎么做呢?

<P align=left><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10525/lingo5-1.gif">

<P align=left>在Score的最上端就是标记区.在要做标记的帧上,单击这个地方,然后输入名字就好了.

<P align=left><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10525/lingo5-2.gif">

<P align=left>  要删除一个标记.只要把标记拖出窗口就可以了.这里再提示一下,单击左侧的箭头会弹出下拉菜单.可以在里面选择标记.选中后播放头会直接跳到标记.还有两个左右箭头分别表示跳转到前一个标记和后一个标记.当你的时间轴太长的时候.这是一个很好的定位办法哦.

<P align=left><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10525/lingo5-3.gif">

<P align=left>

<TABLE width="75%" border=0>

<TR>
<TD bgColor=#cccccc>Play语句</TD></TR>
<TR>
<TD height=294>
<P 0.4cm 0cm 0pt"><B>play frame &lt;帧数&gt;</B> --跳转到第某个画面,例子 play frame 20,播放头跳到第20帧.

<P 0.4cm 0cm 0pt"><B>play the frame</B> --播放头停在某个画面.

<P 0.4cm 0cm 0pt"><B>play &lt;标记&gt; </B>--跳到某个有标记的画面.

<P 0.4cm 0cm 0pt"><B>play movie &lt;电影名字&gt; </B>--从现在的电影跳转到另外一个电影中去.例如go movie "hello" 跳转到名字叫hello的电影中.

<P 0.4cm 0cm 0pt">下面是两个扩展命令

<P 0.4cm 0cm 0pt"><B>play &lt;帧数&gt; of movie &lt;电影名字&gt;</B> --跳转到另外一个电影的某个画面.

<P 0.4cm 0cm 0pt"><B>play &lt;标记&gt; of movie &lt;电影名字&gt;</B> --跳转到另外一个电影的某个标记.

<P 0.4cm 0cm 0pt"><FONT color=#ff0000><B>play done --跳回上一次play的地方.比如在20帧执行了play 30.在30帧执行play done就会跳回20帧.</B></FONT>
</TD></TR></TABLE>
<P align=left>  Play 语句和Go语句大体相同,只是多了一个<B>play done.</B>凡是用play语句跳转的都可以使用play done跳转回去.有了play done就更加简单了.go语句和play语句都可播放另外一个电影文件.但是返回的时候go必须写清楚跳转回去的电影和帧数,而play只要用play done就可以回去了.书写更简单.看看下面的例子.单击语句可以执行.

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=300 width=400 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                      <embed src="10525/lingo2-2.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="400"        height="300">                  </embed>                 </OBJECT>

<P align=left>下面我们做一个练习.给你4张图片,要求你每单击一张图片就显示下面一张图片.单击最后一张图片显示第一张图片.就像下面的例子.

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=200 width=200 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                      <embed src="10525/lingo2-3.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="200"        height="200">                  </embed>                 </OBJECT>

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10525/lingo5-4.gif">

<BLOCKQUOTE>
<DIV align=left>
<P 0.4cm 0cm 0pt">上面就是这个例子的流程图.总体思路:播放每个图片的时候停住.单击图片跳转.设置一组标记方便跳转.

<P 0.4cm 0cm 0pt">1.停住图片

<P 0.4cm 0cm 0pt">把4个图托拽到流程线上.每个图的最后都加了go the frame语句.作用是让显示图的时候播放头定在原地.这4个脚本都是只和帧本身有关系.所以我们用frame脚本.

<P 0.4cm 0cm 0pt">2.进行跳转:

<P 0.4cm 0cm 0pt">接下来要得是单击图片往下走.因为是单击图片以后才做动作.因此命令要写在图片里面.也就是Sprite脚本.单击每个图片,按右键在里面写上语句,go "t2" 跳转到第二张.以此类推.事件因为是单击可以用 on mouseup me.当鼠标抬起.

<P 0.4cm 0cm 0pt">OK如果你做好了整个的程序.

<P 0.4cm 0cm 0pt">

<P 0.4cm 0cm 0pt">==进阶学习==

<P 0.4cm 0cm 0pt">这里给大家介绍一个小技巧这里如果不考虑最后一张图跳转到第一张的话.我们可以让所有的图片都是用一个脚本.

<P 0.4cm 0cm 0pt">go marker(1)

<P 0.4cm 0cm 0pt">marker()是一个函数专门用来返回下一个标记的帧数.mark(1)表示当前帧下一个标记的帧数.

<P 0.4cm 0cm 0pt">例如在t1这里mark(1)的值是t2的帧数也就是"20".相当于执行了go frame 20.

<P 0.4cm 0cm 0pt">以此类推.marker(2)就是下2个标记帧数,mark(0)就是当前的. mark(-1)前一个.mark("t1")表示"t1"这个标记的帧数.
</DIV></BLOCKQUOTE>
<DIV align=center>
<P align=left> 作业:做一个展示的东西 有前后翻页箭头可以翻页.
</DIV>
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

6#
 楼主| 发表于 2014-11-5 07:42:30 | 只看该作者
<P 0.4cm 0cm 0pt"><B>Lingo魔法书--Sprite玩具工厂(1)</B>

<P align=left>  上次我们学习的是导航命令,可以制作电影的整个导航.这次我们要带大家一起来到Sprite玩具工厂.首先看看下面的4个Sprite玩具.

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=200 width=200 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                      <embed src="10526/lingo3-1.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="200"        height="200">                  </embed>                 </OBJECT>

<P align=left>第一个鼠标移动到三角sprite上会不断旋转.第二个鼠标移动到红色方块上方块会不断往下走.鼠标移动到第三个Sprite紫色方块上,方块会自动慢慢淡化消失.鼠标移动到第四个绿色方块Sprite上方块会自动变形.这些动作没有一个是使用时间轴制作的,都是使用Lingo语句编写的.首先我们来看看他们的核心语句.

<P align=left>每个sprite都具有自己的属性.只要控制这些属性我们就可以控制sprite.属性和sprite是联系在一起的,一起使用格式可以写成 Sprite(号码).属性. Sprite号码指的是Sprite是在什么通道中.比如这里有一个方块Sprite,他在通道1中,所以就是Sprite(1).

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10526/lingo5-5.gif">

<P align=left>Sprite(号码).rotation --rotation是Sprite的一种属性,用来确定Sprite旋转的角度.

<P align=left>Sprite(号码).locv --locv是Sprite的一种属性,用来确定Sprite的垂直位置,是Sprite注册点(Director术语叫做regpoint关于regpoint等下会解释)到舞台上边界的距离,单位像素.

<P align=left>Sprite(号码).locH--locH是Sprite的一种属性,用来确定Sprite的水平位置,是Sprite注册点到舞台左边界的距离,单位是像素.

<P align=left>Sprite(号码).blend--blend是Sprite的一种属性,用来确定Sprite的透明度从0-100.0完全透明,100完全不透明.

<P align=left>Sprite(号码).skew --skew是Sprite的一种属性,用来确定Sprite斜切的角度.

<P align=left>下面我们就来看看这个程序是如何编制的.

<P align=left>首先在屏幕上绘制四个图形,使用Ctrl+5打开画板来绘制而不是工具栏上的工具绘制.然后分别拖拽到4个通道中.首先我们确认核心的方法,

<P align=left>第一要让画面上的四个物体定在画面上而不消失.我们必须停下播放头,接下来的我不说你也知道了.在这帧添加一个帧脚本定住播放头.使用

<P align=left>on exitframe

<P align=left>  go the frame

<P align=left>end

<P align=left>第二我们考虑效果.

<P align=left>就是.鼠标在Sprite上的时候Sprite不断变化.

<P align=left>脚本类型:Sprite.我们首先可以确定这里要操作某sprite让他去做一个动作.所以我们必须使用Sprite脚本.

<P align=left>事件:光标在对象内时生效,因此我们用mousewithin.(注这里我们解释一下me是什么意思.me就是表示当前对象.在帧脚本中me就表示当前帧,在sprite脚本中me就是当前sprite,反正你把他当成"我"解释就对了.

<P align=left>命令:不断的变化源自于自身属性的数值不断自加.我们按照第一个来分析.不断旋转,就是自身角度每次不断增加.我们可以选择.

<P align=left><B>sprite(1).rotation=sprite(1).rotation+10</B>

<P align=left>过程分析:每次鼠标进入sprite(1),Sprite(1)的自身角度就增加10度.这样慢慢就转动起来了.

<P align=left>

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10526/lingo6-1.gif">

<P align=left>  依次类推.第二个红方块Sprite脚本是

<P align=left>on mousewithin me
  sprite(2).locv=sprite(2).locv+1  --Sprite垂直距离自加1像素
  sprite(2).loch=sprite(2).loch+1  --Sprite水平距离自加1像素
end

<P align=left>--这样就实现了红方块的位移.

<P align=left>第三个紫色矩形Sprite脚本是

<P align=left>on mousewithin me
 sprite(3).blend=sprite(3).blend-10  --透明度自减10
end

<P align=left>第四个绿方块Sprite脚本是

<P align=left>on mousewithin me
  sprite(4).skew=sprite(4).skew+1  --自变形1度
end

<P align=left>

<P align=left>乘此机会我们再介绍一下其他属性我们也可以在属性面板中找到.

<P align=left>

<P align=left>Sprite(号码).height --Sprite的高度

<P align=left>Sprite(号码).width--Sprite的高度

<P align=left>Sprite(号码).left--Sprite构成的矩形的左边和舞台左边距离.

<P align=left>Sprite(号码).right--Sprite构成的矩形的右边和舞台左边距离.

<P align=left>Sprite(号码).top--Sprite构成的矩形的上边和舞台顶部距离.

<P align=left>Sprite(号码).bottom--Sprite构成的矩形的上边和舞台顶部距离.

<P align=left>下面这张示意图可以表明问题.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10526/lingo6-3.gif">

<P align=left>我们可以使用Message窗口进行调试直接使用Put Sprite(号码).属性就可以察看属性.属性面板也是观察的好地方.我们看看里面如何写的.

<P align=left>x表示loch也就是图中的注册点方块当中一个点的横坐标.

<P align=left>y表示locV也就是图中的注册点方块当中一个点的纵坐标.

<P align=left>

<P align=left>

<DIV align=left></DIV>
<P 0.4cm 0cm 0pt">

<P align=left>

<P align=left>W表示Sprite宽度 也就是Sprite(号码).width

<P align=left>H表示Sprite高度 也就是Sprite(号码).height

<P align=left>接下来是旋转也就是Sprite(号码).rotation 和斜切Sprite(号码).skew

<P align=left>l是left r 是right仔细计算会发现. right-left=width

<P align=left>t是top b是bottom 计算发现bottom-top=height

<P align=left>下面有一个思考题,如果要求你做一个每次单击就会变小的方块如何操作?

<P align=left>提示:事件我们可以用on mouseup 属性可以用高宽属性.
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

7#
 楼主| 发表于 2014-11-5 07:42:45 | 只看该作者
<P 0.4cm 0cm 0pt"><B>Lingo魔法书--Sprite玩具工厂(2)隐藏和替换</B>

<DIV align=center>
<P 0.4cm 0cm 0pt">

<P align=left>  上次我们介绍了Lingo的Sprite用法.下面我们来继续看一些Sprite的属性.隐藏和替换.首先我们来看看做多媒体项目最常用的一个应用制作三态按钮.

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=200 width=200 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                          <embed src="10526/lingo-4.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="200"        height="200">                    </embed>                   </OBJECT>

<P align=left>  光标移动到按钮上就换一种颜色.按下去又是另外一种颜色.移动出去还原.所谓三态,就是指正常状态,光标移动到上面的时候和按下去的时候.原理很简单就是有三张图片.然后在不同的事件下面进行切换.

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10526/lingo7-1.gif">

<P align=left>我们可以看到角色库中的三个角色,角色1、角色2、角色3按钮。下面我们就来看关键语句。

<P align=left><B>sprite(编号).memberNum</B>

<P align=left><B>sprite(编号).memberNum</B>可以制定某个Sprite使用的是什么角色成员。比如上面例子,按钮在时间轴上为Sprite 1:

<P align=left>sprite(1).memberNum="3"

<P align=left>这样就把红色按钮换成了褐色按钮,也就是角色3。整个制作过程是这样的,首先把角色1拖拽到舞台放在通道1中。也就是sprite 1。当然不要忘记加上帧脚本go the frame定住画面。

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10526/lingo7-2.gif">
</DIV>
<BLOCKQUOTE>
<DIV align=left>
然后给Sprite 1写上脚本。

on mouseUp me
 sprite(1).memberNum="3"  --将按钮替换为角色3按下去的状态

end

on mouseenter me
 sprite(1).memberNum="2" --将按钮替换为角色2移上去的状态
end

on mouseleave me
 sprite(1).memberNum="1" --将按钮替换为角色1还原为初始状态。
end

这里我们用到了三个常用的鼠标事件。Mouseup鼠标抬起,mouseenter鼠标进入,mouseleave鼠标离开.并且写在一个Sprite里面.对应它的不同状态.

<P 0.4cm 0cm 0pt">

下面我们看第二个属性。单击上面的老头,老头消失。按钮老头出现。这是使用了visible属性。控制sprite的显示和隐藏。

Sprite(2).visible=false --Sprite2不可见

Sprite(2).visible=true --Sprite2不可见。

拖拽老头到舞台作为sprite 2。然后给老头写上Sprite脚本

on mouseup me

 Sprite(2).visible=false

end

要让按了按钮之后显示老头怎么办呢?修改下刚才的按钮脚本加入到mouseup事件中去.
</DIV></BLOCKQUOTE>
<DIV align=center>
<P align=left>

<P align=left>

<P align=left>

<P align=left>on mouseUp me
 sprite(1).memberNum="3" 
<B><FONT color=#ff0000> sprite(2).visible=true</FONT></B>

end

<P align=left>Ok就可以了.
</DIV>
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

8#
 楼主| 发表于 2014-11-5 07:42:57 | 只看该作者
< 0.4cm 0cm 0pt"><B>Lingo魔法书--声音控制语句</B>

<DIV align=center>
<DIV align=center>
< align=left>  上两次我们谈到的都是Sprite的一些属性这次我们来试验一些声音视频控制方面的语句.请看下面的范例.

< align=left>我们按照一个个按钮往下分析.

< align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=200 width=200 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><ARAM><ARAM><ARAM><ARAM><ARAM><ARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                              <embed src="10528/sound.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="200"        height="200">                      </embed>                      </OBJECT>

<P align=left>  如果大家看到这个程序的时间轴的话会发现.这个时间轴上声音通道里面根本没有内容.声音是从什么地方来的呢?

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10528/lingo8-1.gif">

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10528/lingo8-2.gif">

<P align=left>这里我们使用的是PuppetSound语句.首先先请大家注意一个词语Puppet.Puppet的英文意思是木偶玩偶的意思.这是Director中比较有趣的一个概念.Puppet就是木偶化.什么是木偶化呢?就是把Director的控制权彻底交给Lingo来管理.比如PuppetSound语句,就是把声音控制权交给Lingo管理.原先我们播放声音一定要在时间轴上放声音才可以,现在我们完全可以自己使用Lingo语言进行控制了.也就是把声音做成了一个木偶用Lingo控制.Director可以控制的声音通道有2个,而lingo可以控制到4个.同样的有很多我们还可以对转场效果进行木偶化通过使用PuppetTransition.播放速度木偶化PuppetTempo.读者也许奇怪那么改变Sprite的高度之类的不也是木偶化么?对了,早在Director 4.0的时候对于Sprite的移动和改变都需要加上一句,

<P align=left><B>set the puppet of sprite 号码 to true </B>

<P align=left>把Sprite的木偶化状态设置为真.才可以进行对Sprite的操作.不过好像Director8.0已经不强调这种做法.可以直接对Sprite进行操作了.

<P align=left>木偶化的好处就是给你强大的控制能力.

<P align=left>下面言归正传.PuppetSound的用法.

<P align=left><B>puppetSound 声音通道号, 声音角色 --在指定的声音通道中播放声音.</B>

<P align=left><B>puppetSound 声音角色 --直接播放声音

puppetSound 0 --停止声音播放</B>

<P align=left>
<B>puppetSound 声音通道号, 0 --停止某通道声音.</B>

<P align=left>上面的播放按钮的代码是:

<DIV align=left><B>on mouseUp me
 puppetsound 1,"song" --声音通道1中播放"Song"声音角色
end </B></DIV>
<P align=left>停止的代码呢?这里我就不给出了所有按钮代码都用Sprite脚本也不用说了吧

<P align=left>声音淡入:主要的语句是 <B>Soundfadein</B>

<P align=left>格式可以是:

<P align=left><B>sound fadeIn (声音通道号) --系统按照默认值淡入声音.具体参考Lingo辞典.

</B>

<P align=left><B>Sound(通道号).fadein(时间) --按照给定的时间淡入单位是ticks一个ticks,相当于1/60秒因此.1秒钟就是60,2秒钟就是2*60.例子Sound(1).fadein(5*60) .淡入5秒钟.ticks是Director的计时单位以后经常会遇到.</B>

<P align=left>相反的还有Soundfadeout声音淡出语句.格式相同不再详细阐述了.

<P align=left><B>音量降低</B>

<P align=left><B>sound(通道号).volume</B>

<P align=left>取值范围在0~256. 0无声 256最响.在这里我的写法是:
</DIV><PRE><B>on mouseup me</B></PRE>
<BLOCKQUOTE><PRE><B>sound(1).volume=sound(1).volume-20</B></PRE></BLOCKQUOTE>
<DIV align=center>
<DIV align=left><PRE align="left"><B>end</B></PRE>
<P 0.4cm 0cm 0pt">按一次音量自减一次20.

<P 0.4cm 0cm 0pt">音量还有一种控制方法.Director把系统音量分为8个级别.从0-7.0无声,7最响.the soundLevel
这个语句可以控制系统的音量.

<P 0.4cm 0cm 0pt"><B>语法结构为:the soundLevel
用法:the soundLevel=值 .比如 the soundLevel=6</B>
</DIV></DIV></DIV>
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

9#
 楼主| 发表于 2014-11-5 07:43:16 | 只看该作者
<P 0.4cm 0cm 0pt"><B>Lingo魔法书--视频控制</B>

<DIV align=center>
<DIV align=center>
<P align=left>Lingo语言对于视频可以有完全的控制.甚至倒放电影,不相信?看看下面的例子.有点大500多KB.

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=240 width=320 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                              <embed src="10529/video.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="320"        height="240">                      </embed>                      </OBJECT>

<P align=left>首先我解释一下播放按钮.我使用了一个黑色图片放在Sprite 1的位置.然后使用了如下的语句.

<P align=left><B>on mouseUp me
 sprite(1).member="quick"
end</B>

<P align=left>还记得这语句么?制作按钮的时候我们使用过.把图片替换成为电影的角色"quick".

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10529/lingo9-1.gif">

<P align=left>以上的操作和电影Lingo无关,下面正式开始.

<P align=left><B>sprite(通道).movieRate控制电影的播放速度.movieRate=0暂停播放.movieRate=-1倒放.movieRate=1恢复正常.</B>

<P align=left>下面就是暂停电影的按钮代码.

<P align=left><B>on mouseUp me
 sprite(1).movieRate=0
end</B>

<P align=left>继续代码怎么写呢?

<P align=left>

<P align=left><B>on mouseUp me
 sprite(1).movieRate=1
end</B>

<P align=left>倒放呢?

<P align=left>

<P align=left><B>on mouseUp me
 sprite(1).movieRate=-1
end</B>

<P align=left>播放速度也是可以做的.格式<B>Sprite(通道号).movieTime</B> 时间的基本单位是ticks也就是1/60秒.

<P align=left>例如:<B>sprite(1).movieTime=2*60</B>

<P align=left>停5秒如何写呢?

<P align=left>最后我们来看循环按钮使用语句.<B>member("成员号").loop </B>等于1的时候可以循环.等于0的时候不循环.循环不仅仅限于视频,声音也可以这样设置.

<P align=left>在本例中这里代码为.

<P align=left><B>On Mouseup</B>

<P align=left><B> member("quick").loop = 1</B>

<P align=left><B>end</B>

<P align=left>Ok下次我们就开始光标和文本框的Lingo介绍
</DIV></DIV>
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

10#
 楼主| 发表于 2014-11-5 07:43:27 | 只看该作者
<P 0.4cm 0cm 0pt"><B>Lingo魔法书--光标和行为</B>

<DIV align=center>
<DIV align=center>
<P align=left>  Director中光标也可以自己定义和制作.我们看看下面的一个例子:光标单击每个人脸就变成了一个动态的光标.移出按钮图片,光标就还原了.这样的效果如何做呢?

<P 0.4cm 0cm 0pt">
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=200 width=200 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                              <embed src="10530/cursor.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="200"        height="200">                      </embed>                      </OBJECT>

<P align=left>首先我们看一下光标控制<B>语句.</B>

<P align=left><B>cursor (角色名,遮罩名) --指定某个角色作为光标.角色必须是双色位图大小16X16。</B>

<P align=left><B>cursor 光标号--光标代号</B>

<P align=left>关于光标代号Flyingbird曾经给出了一张很好的图。当我们把Cursor 设置为0的时候为取消设置还原成为莫认得箭头。在本例中我们制作的时候就是使用了这条命令 cursor 0想下事件应该是什么呢?对了,是on Mouseleave me鼠标移开的时候还原光标。注意Cursor 200是将鼠标隐藏。这个属性会在下面的例子中使用。

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10530/cursot.gif">

<P align=left>

<P align=left>还可以这样写 <B>cursor(member "角色名称")</B>。指定一个角色作为光标。我们在使用动画光标的时候就是制定了角色库中角色“woniu".实现的语句是

<P align=left><B>On mouseUp me</B>

<P align=left><B>  cursor(member "woniu")</B>

<P align=left><B>end</B>

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10530/lingo10-1.gif">

<P align=left>这里顺便扯一下动画光标的制作。动画光标和彩色光标从Director 6.5才开始有的。可以使用一系列的位图做成一个动画的光标。位图大小必须小于32x32象素,大于这个尺寸会自动缩小到32x32。颜色必须是256色。制作的时候首先导入图片。象上面我们导入了3个图片。然后选择Insert--〉Media Element--〉Cursor系统出来对话框。在右侧选角色,然后按Add添加到光标中,按Preview可以预览。AutoMask系统会自动过滤白色。interval为自动切换的时间。

<P align=center><img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10530/lingo10-2.gif">

<P align=left>制作完毕之后,角色库中会多一个角色。下标是一个小的绿色光标。这就是我们要的动画光标。每个按钮的代码都是下面的代码。

<P align=left><B>on mouseup me
 cursor(member "woniu")
end
on mouseleave me
 cursor 0
end</B>

<P align=left>至此,我们的工作好像做好了。是不是觉得还有点缺陷呢?有!每个代码都要复制/粘贴一遍,太麻烦了。于是我们想到了行为,Behavior。

<P align=left>Behavior是Director的一个重要概念。他可以大大方便Lingo的编写。特别是对于大量功能相同的代码尤其显著。简单的说Behavior的作用就是让你把编好的Lingo代码重复多次应用。Director中现在已经把帧脚本和Sprite的脚本作为Behavior了。凡是角色库中有<img src="http://wwwb.pconline.com.cn/pcedu/sj/jq/lingo/10530/lingo10-3.gif">图标的都是Behavior。

<P align=left>以本例为例子,编写好的脚本是角色1,鼠标拖拽这个脚本分别放在舞台上的三个圆圈对象上面,鼠标会变成加号表示可以拖,然后就可以了。这样就实现了编写一次应用多次。同样前面写的frame脚本Go the frame也可以直接拖拽到frame脚本通道中。其实Behavior远远没有这么简单。它的功能比现在使用的强大得多。我们在紧接教程中可以继续讲解。

<P align=center>
<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,0,0,0 height=200 width=200 classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><PARAM><br />                                              <embed src="10530/cursor1.dcr"        pluginspage="http://www.macromedia.com/shockwave/download/" width="200"        height="200">                      </embed>                      </OBJECT>

<P align=left>这个例子是对光标的一种控制。这里光标是没有的也就是Cursor 为200。一个Sprite跟随着光标移动而移动。使用的是the mouseH和the MouseV分别获得当前的鼠标水平位置和垂直位置。整个电影只有1个Sprite

<P align=left>脚本写在frame脚本里面

<P align=left><B>on exitframe</B>

<P align=left><B> Sprite(1).locV=the MouseV --方块的垂直坐标跟着鼠标的垂直坐标。</B>

<P align=left><B> Sprite(1).locH=the MouseH --方块的水平坐标跟着鼠标的水平坐标。</B>

<P align=left><B> Cursor 200</B>

<P align=left><B>end</B>

<P align=left>为什么要写在frame脚本里面呢?因为这个动作要求不断触发,但是又不依赖于Sprite,这里没有用到任何需要Sprite来触发的动作。仅仅是对sprite进行操作。而frame脚本符合触发条件。虽然是go the frame 定住播放头,但实际上是播放头在原地打转,是一个循环。因此这里面的事件是不断触发的。
</DIV></DIV>
河边已是一首歌
您需要登录后才可以回帖 登录 | 加入初编室

本版积分规则

手机版|小黑屋|初级视频编辑室

GMT+8, 2024-12-27 20:36 , Processed in 0.076663 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表