收藏 分享(赏)

《易语言动画支持库教程》.doc

上传人:精品资料 文档编号:9062859 上传时间:2019-07-22 格式:DOC 页数:30 大小:839KB
下载 相关 举报
《易语言动画支持库教程》.doc_第1页
第1页 / 共30页
《易语言动画支持库教程》.doc_第2页
第2页 / 共30页
《易语言动画支持库教程》.doc_第3页
第3页 / 共30页
《易语言动画支持库教程》.doc_第4页
第4页 / 共30页
《易语言动画支持库教程》.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、大连大有吴涛易语言软件开发有限公司 http:/ 版权所有1易语言动画支持库教程(2007 年 12 月第 3 版)目 录目 录 1前 言 2一动画框支持库简介 2二动画物体属性和相关命令 31不关联性 42文字类属性 43标识控制 54图片属性 55调色 76缩放与角度 77生存时间 78声音控制 79允许碰撞与类型值 810层次 911相关方法 10三动画框组件方法命令 111创建类命令 122键盘类方法命令 123运动碰撞类方法命令 134物体检查类方法命令 165布局类方法命令 186绘图类方法命令 18四动画框组件事件 191鼠标触发类事件 192键盘触发类事件 213碰撞触发类事件

2、 214移动触发类事件 225自动控制类事件 23五实用技巧 24六一个实例 251新建一个易程序 252放置组件 263修改组件属性 264编写控制代码 27七例程清单 29大连大有吴涛易语言软件开发有限公司 http:/ 版权所有2前 言易语言汉语编程环境已提供了多款多媒体工具和二维三维动画工具,目前支持动画图片、音乐播放支持、OPENGL、DX、D3D 等制作,以及矢量动画框支持库等。2007 年 12 月,易语言汉语编程环境中又增加了一个新的成员“动画框/动画物体”组件,这是一个 2D 图形动画引擎,可实现很多动画类软件的制作,譬如:中小学课件制作、2D 游戏制作、动画界面风格制作等。

3、一动画框支持库简介动画框支持库包含“动画框”和“动画物体”两个组件。动画框支持库本质是一个二维的动画引擎,可以完成如教学课件及游戏等的制作。实现了对图片的各种管理,如图片与图片之间位置的重叠、碰撞、图片之间的层次、图片的位置、色调、透明度等等一切进行管理。动画引擎是根据课件及游戏等制作的需求而定制的。既然是引擎,那么它的有些功能就是自动完成的,而基本无需时钟组件的控制。如:提供了“自动前进” 、 “自动旋转”等方法命令。如果您的程序中基本控制部分使用到了时钟组件,笔者只能说,您还没有完全领会这个引擎的功能。动画引擎是简单的、易用的,一些图片的基本功能都提供,如放大缩小、旋转、透明等,还提供一些

4、高级的技巧,如:自动前进、碰撞检测等。动画框支持库支持图片格式有:BMP、JPG、GIF (动画 GIF 文件) 、ICO(图标) 、CUR(鼠标指针) ,支持 WAV 和 MIDI 声音播放。大家需要忘记以前没有这个动画引擎之前的旧有思维习惯,重新思考实现的方法。如以前需要通过时钟控制的程序,现在是不需要时钟的,以前需要定位 X 和 Y 坐标的,现在也不需要了,因为有自动前进的功能。通过这个动画引擎,我们几乎可以用很少的命令就可以写一个动画程序,有的程序甚至只有两行命令,一个迷宫程序如下图中所示:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有3两行代码如下:二动画物体属性和相关命

5、令“动画物体”提供“动画框”组件的初始化数据。“动画物体”组件与“动画框”组件之间是不关联的,也就是没有连动性。一个“动画物体”组件可以创建多个各种不同的物体。一个程序中“动画物体”组件可以不用,但必须有一个“动画框”组件。一个程序中“动画框”组件是必须的,而“动画物体”组件是可以不需要的。不需要时,可以直接通过“动画框.创建物体() ”命令创建,产生标识 ID,根据此 ID 号来修改相应属性就可以了。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有41不关联性此不关联性也可称为“脱钩”性,即我们创建一个物体(或可称之为精灵)时,需要先在“动画物体”的属性中设置好,再使用。因此说,

6、“动画物体”组件仅仅是为了设计时的方便,让设计者可以看到有这样一个物体,最终由“动画框.创建物体() ”命令创建。创建之后,不可以再通过改动“动画物体”组件的属性实现修改的目的,而必须通过“动画物体”组件的相关方法命令来修改。下面大家会看到两个例子的对照,一个采用了先设置动画物体后再创建物体,另一个是先创建物体后再使用修改物体的方法实现创建。一个易程序中,除一个动画框组件外,也可以只有一个动画物体组件,用这一个组件可以创建不同的物体出来,如用一个动画物体就可以创建飞机、大炮、飞弹。但需要创建之前改动画物体的属性、或创建后用动画框的方法去实现。提供“动画物体”组件的目的是:在制作时可以直观看见物

7、体的外形、效果等。2文字类属性动画物体有两种表现形式,一种是动画,一种是文字。两者是不能共存的。例 1:新建一个易程序,在启动窗口中放一个“动画框”组件和一个“动画物体”组件,然后改“动画物体”组件的“文字”属性为“吃了吗?” , “字体属性”为“宋体、粗体、小四号字” , “文本颜色”属性改为“天蓝” 。好了,这里大家试运行程序,会发现什么也没有,这里需要在“_启动窗口_创建完毕”事件中写一些代码来加载这个动画物体。代码如下所示:好了,这里再运行,就可以发现窗口中已有动画物体显示出来了,如下图所示:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有5为了对比,下面我们重新制作一个易程

8、序。在一个新建的易程序中仅放一个“动画框”组件,直接进入“_启动窗口_创建完毕”事件,并写如下代码:运行后,大家可以看到,其运行的窗口界面效果与第一个例子是差不多的。再次重申,在上述例程中,如果通过“创建物体”命令已产生一个 ID 号后,就不能再通过改“动画物体”组件的属性来更改物体的状态了,而只能通过“动画框”的方法命令去更改。3标识控制上述中,大家可以看到,以上由于可以创建多个物体,因此如何操作这些不同的物体呢?原来是通过创建时返回的标识值来具体进一步操作的。 “动画框”组件的每一个方法的第一个参数就是“标识值” ,因此只要取得标识值,就可以直接对含有此标识的物体进行操作了。本文中, “标

9、识值”也称为 ID。4图片属性动画物体的图片相关属性有:“图片”属性、 “自动取透明色”属性、 “透明色”属性、“播放动画”属性、 “动画间隔时间”属性、 “动画自动销毁”属性。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有6动画物体的“图片”属性图片属性与文字属性不能共存。如果有文字属性的情况下,就只会显示文字,不显示图片,因此如果想要显示图片,就必须将文字属性清空。其他的属性也很简单,大家可以自己试一下,如:“自动取透明色”属性可以让某张图片变成透明的,条件是左上角的点就是透明色。“透明色”属性指定上述不是自动状态时,指定一种透明色进行透明处理。“播放动画”属性指定 GIF 动

10、画文件是否可以播放动画,为“假”就显示 GIF 动画的第一帧。“动画间隔时间”属性指定在每次播放 GIF 动画之间插入的间隔毫秒数。“动画自动销毁”属性指:如果所指定图片是 GIF 动画格式,则本属性指定当该 GIF动画播放几次后自动销毁该物体。如果为 0,表示一直播放。“动画自动销毁”属性例程参见“大炮打飞机”演示,程序中,炮弹每次只显示一次就销毁了。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有75调色“趋向色”属性与“趋向程度”属性是一对,当指定了“趋向色”属性后,再改变“趋向程度”属性,就可以将色彩向“趋向色”靠近,值从 0-100。“亮度” 、 “透明度”这些属性大家可以

11、自己试试,应该不难了解,大家自己试吧,我就不出例程了。6缩放与角度“缩放比”属性控制放大与缩小的比例,比例精度是千分值,值为 1000 时为 1:1 比例。这里的角度是以向上为 0 度,右侧为 90 度,向下为 180 度,左侧为 270 度。如下图所示:“角度”属性可以控制前进的方向,但这个属性一般不在初始时使用,而是在动画框的“置角度”方法中使用。“旋转跟随”属性为“真”时,旋转角度时,图片也跟着转,如果此属性为“假”时,旋转角度变化时,图片还保持原有样子的不变。“翻转”属性有四种,大家可以自己试一下。7生存时间“生存时间”属性指:自物体被创建后在动画框中的生存时间,当此时间达到后该物体将

12、被自动销毁,单位为毫秒。0 表示无限制。例如,新建一个易程序,放置一个动画框组件,再放置一个动画物体,并且设置其生存时间为 2000 毫秒,写动画物体创建到动画框组件中的代码,然后运行此程序,可以观察到 2 秒后,此动画物体就消失了。0 度90 度180 度270 度大连大有吴涛易语言软件开发有限公司 http:/ 版权所有88声音控制“创建声音”和“销毁声音”属性可以让你加入一个声音资源。支持 WAV 和 MIDI声音。“创建声音”属性指定当物体在动画框中被创建时播放的声音。按下 Del 键即可删除现行内容。“销毁声音”属性指定当物体在动画框中被销毁时播放的声音。按下 Del 键即可删除现行

13、内容。“碰撞声音”属性指:如果允许碰撞,指定当物体向前移动碰撞到其它物体时播放的声音。按下 Del 键即可删除现行内容。这三个属性可以实现比较自动化的功能,如“碰撞声音”属性作用时,当两个物体碰撞,就可以发出爆炸的声音来。例如:大炮打飞机程序中,飞机就带有销毁声音,这样当飞机被打中时,就会发出声音了。如下图所示:9允许碰撞与类型值两个动画物体之间产生碰撞的条件有以下五个:条件 1:两个动画物体中图片的非透明部分叠加;条件 2:两个物体的“层次”属性值相同,为同层次物体条件 3:两个物体的“允许碰撞”属性都为真;条件 4:两个物体的的“类型值”属性不相同;条件 5:使用了“前进”或“自动前进”方

14、法命令,及一个特例:“置物体位置” 的命令参数“是否进行碰撞检测”为“真”时。以上条件虽然多了一些,但可以看到有些条件是自然完成的,有些是必备条件。如:条件 1,是表示两个物体的图片如果有透明色,那么不透明色相交时就产生了碰撞事件,这是不需要我们去控制的,是引擎内部进行判断的。条件 2,碰撞只可能在同层物体之间产生。默认条件下,处于 0 层次。层次的概念与PHOTOSHOP 中图层一样,是显示的需要,及防止互相之间干扰。条件 3,设置“允许碰撞”属性为“真”是大家必须要去设置此属性的。条件 4:类型值的安排是因为有这种同种类的需求,如敌机就是同一个类型,互相之间是不会碰撞爆炸的,而我方飞机发射

15、的子弹与敌机会发生碰撞爆炸。因此大家需要设置为不同的类型值。条件 5:指定当物体向前移动后与同层另外一个不同类型值物体相互交叠时是否启动碰撞处理机制,注意:1.物体是否被显示并不影响到碰撞处理,也就是说如果允许碰撞,即使物体被隐藏也会启动碰撞处理; 2.被碰撞到的物体必须也同时允许碰撞才会触发碰撞机制; 3.只有当物体进行前进动作时(“前进”或“自动前进 ”命令引发) 才会进行碰撞检测,大连大有吴涛易语言软件开发有限公司 http:/ 版权所有9其它情况下不会去检测碰撞。注意:隐藏的物体(不可视)依然可以被碰撞到,这个特性很重要。譬如设计一个迷宫程序,可以用两个通道图,一个是漂亮复杂的不检查碰

16、撞的被显示的图片,一个是单线简单的检查碰撞的不被显示的图片,这样就能达到很顺畅地在外面漂亮的图里面移动的目的。10层次“层次”属性指定物体在动画框中所处的层次,值越小表示所处层次越低,显示越在后方,值越大表示所处层次越高,显示越在前方。分层次是为了分类管理,一个小游戏在合理安排类型值的情况下,可以不用本属性,但在大型复杂的层次中,可能就需要分层显示。例如:在一些 RPG 游戏中,当小人走到房子的后面时,前面就看不出来,这时我们可以说人物在后面的层次,房子是在前面的层次。通过例子对比一下显示的效果:当地球图片的层次为 0,飞机的层次为 1 时,显示效果如下:当飞机图片的层次为 0,地球的层次为

17、1 时,显示效果如下:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有10大家可以看到,显示的叠加效果是不同的。11相关方法上述所有“动画物体”的属性,都可以用“动画框”的相关方法实现。列表如下:“动画物体”属性 “动画框”相关方法(可视) 显示/是否已显示(标记) 置附加文本/取附加文本置物体位置(左边) 取物体左边(顶边) 取物体顶边(宽度)取内容宽度 取物体宽度(高度)取内容高度 取物体高度图片 置图片自动取透明色透明色 (同上)播放动画 播放动画动画间隔时间 (同上)动画自动销毁 (同上)趋向色 趋向色变换趋向程度 (同上)亮度 置亮度/取亮度透明度 置透明度/取透明度缩放比

18、 缩放/取横向缩放比/取纵向缩放比层次 置层次/取层次角度 置角度/取角度/转向旋转跟随 置旋转跟随/取旋转跟随翻转 翻转生存时间 置生存时间创建声音销毁声音 置销毁声音允许碰撞 置碰撞管理/置物体位置碰撞声音 (同上)类型值 取类型以上两者对比后,大家可以直接翻开动画框的方法看一下,用一下。下面仅对一些需要注意的地方着重再讲一下:“取内容宽度() ”、 “取内容高度() ”、 “取物体宽度() ”、 “取物体高度() ”方法“动画物体”组件有“宽度”和“高度”属性,但这只是指的组件放在设计窗口时的大连大有吴涛易语言软件开发有限公司 http:/ 版权所有11宽度与高度,与其中实质的图片是没有

19、关系的。“动画物体”组件有“取内容宽度() ”和“取内容高度() ”两个方法,与“动画框”组件的“取物体宽度() ”和“取物体高度() ”方法是一样的,即:所取的不是“动画物体”组件的宽度,而是图片属性中图片的实际宽度,这样无论图片如何变化,所取的宽度都是正确的。转向()其中还有一个“转向() ”方法,它与“置角度”方法不同的是, “置角度”是绝对角度,而“转向”是相对于当前角度所转的角度,是相对角度。是相对当前的角度转向,有些类似于 LOGO 语言的右转。取区域图片()快照用。三动画框组件方法命令上述大部分基本命令都已讲过了,还有不多的命令,也是本引擎的精华所在:创建物体、销毁物体、销毁所有

20、物体取物体数前进自动前进停止自动前进自动旋转停止自动旋转自动方向键移动显示下一帧定位物体是否重叠寻找重叠物体边界检查是否在区域内取区域图片(快照用)合并物体复制物体寻找物体置监视键清除监视键取布局大连大有吴涛易语言软件开发有限公司 http:/ 版权所有12置布局1创建类命令“动画物体”组件基本没有什么方法可用(仅有两个方法) ,其他所有重要方法全在“动画框”组件中。动画框的“创建物体() ”方法将某个动画物体创建到动画框中去,并且返回一个标识值。标识相当于此创建物体的标志符、ID、指针、句柄。前述已说了一些创建物体的命令,在此重申,第一个参数可有可无,有的时候,放初始化数据,即设置好的动画物

21、体。并且返回一个 ID 号,以后操作这个物体,根据这个 ID号就可以非常容易地操作了。当没有第一个参数时,可以先返回一个 ID 号,然后用这个ID 号置属性,从而创建多个不同样子的物体。附加数据指的是一个附加文本,用于需要标记文本的需求。动画框的“销毁物体() ”方法即将物体销毁掉。销毁动画框中已经被创建的指定标识值物体。动画框的“销毁所有物体() ”方法销毁动画框中所有已经被创建的物体。2键盘类方法命令一般用键盘时,如果按下一个方向键再按另一个方向键,就不会再有前一个方向键作用了,因此使用了两个命令来监视键盘的按键。动画框的“添加监视键() ”方法添加需要被监视的按键,添加后这些键如果被按下

22、,将一直发送监视键被按下事件。监视键被按下事件与普通的按下某键事件相比有以下不同:假设你在按下 A 键后再同时按下 B 键,然后放开 B 键但仍然保持 A 键的按下状态,那么普通的按下某键事件将不会再发送 A 键被按下事件,但如果此时 A 键已被设置为监视键,那么将继续定时重复发送 A监视键被按下事件。本命令为初级对象成员命令。命令参数表中最后一个参数可以被重复添加。动画框的“清除监视键() ”方法清除当前已经设置的所有监视按键。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有13添加监视键后,在“_动画框 1_监视键被按下”事件子程序中写代码实现接收按键后的处理。动画框的“键是否被

23、按下() ”方法如果指定键已经被按下,返回真,否则返回假。可用键代码值请查阅核心库中的键代码定义常量。当你有多个键被按下时,这个方法命令特别有用。呵呵。3运动碰撞类方法命令前进自动前进停止自动前进自动旋转停止自动旋转自动方向键移动“前进() ”方法调用格式:无返回值 对象前进 (整数型 物体标识值,整数型 移动距离)向前移动动画框中的指定物体。此方法比较简单,通过 ID 号确定前进的象素距离。“自动方向键移动() ”方法调用格式: 无返回值 对象自动方向键移动 (整数型 物体标识值 , 整数型 一次移动距离 , 整数型 每次移动间隔时间 , 逻辑型 避免碰撞 , 整数型 移动时外形变换 , 整

24、数型 上移键 , 整数型 下移键 , 整数型 左移键 , 整数型 右移键 ,整数型 左转键 , 整数型 右转键 )这个方法应用比较多,如“大炮打飞机”游戏中,下方的炮台就可以自动进行左右移动,而无需用特殊的命令控制它。代码如下所示:动画框 1.自动方向键移动 (炮标识值 , 6, 30, , , , , #左光标键, #右光标键, , )在“迷宫”程序中,当避免碰撞参数为真时,就可以实现物体在迷宫图片之间的透空处移动的效果。迷宫关键代如下:动画框 1.自动方向键移动 (动画框 1.创建物体 (动画物体 2, 10, 10, , ), 2, , 真, 0, #上光标键, #下光标键, #左光标键

25、, #右光标键, , )“自动前进() ”方法调用格式:对象自动前进 (整数型 物体标识值,整数型 每次前进距离,整数型 每次前进间隔时间, 整数型 最大前进距离 , 整数型 最大前进时间 , 逻辑型 碰撞停止 , 整数型 边界停止 , 逻辑型 自动销毁 , 整数型数组 路线 , 整数型 路线重复次数 )以当前角度或指定路线自动向前移动动画框中指定物体。这是本支持库比较重要的一个方法,需要大家仔细领会。因为这个命令是自动运行的,因此本引擎的强大作用就体现出来了。例如:在“大炮打飞机”程序中,飞机的飞行就是自动左右移动的。而大炮发射的炮大连大有吴涛易语言软件开发有限公司 http:/ 版权所有1

26、4弹向前飞行也是自动前进的。下面的程序代码是创建飞机时的子程序,可以看到采用了自动前进的方法命令:下面的程序代码是接收键盘按钮发射炮弹的子程序,可以看到采用了自动前进的方法命令:创建飞机的“自动前进”方法命令中,采用了路线参数,这个参数非常重要。如果是直线,那么数组参数第一个变量为 0,后面是目标的坐标。如果数组参数第一个变量为 1,后面是贝赛尔曲线的四个数据。这四个数据分别表示一条贝赛尔曲线,由三个点控制。贝赛尔曲线的三个点说明如下:它的起点是创建时的位置,不用大家在数组中设置,“创建”时,或“置位置”时已有数据。第二点是曲线的控制点,是偏移点,物体移动时会被此点拉向一方,如果是直线移动时会

27、穿过此点;第三个点是曲线的终点,可以通过计算取得。其坐标系是相对于起点的相对坐标,并且是以屏幕坐标为基准的,即以屏幕坐标为基准的相对坐标。如下图所示:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有15上图中十字线的中心点为(0,0)点,右下角全部为正数值,表示屏幕坐标。参见下述创建飞机时曲线飞行路线的代码:参见下述创建子弹时曲线射击的代码:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有16最后大家要注意的是:碰撞需要满足的五个条件,大家一定要设置好,这样就可以用这些自动化的命令写程序,实现碰撞检测效果了。“自动旋转”方法命令对象自动旋转 (整数型 物体标识值,整数型 每

28、次旋转距离,整数型 每次旋转间隔时间, 整数型 总旋转距离 , 整数型 总旋转时间 )自动旋转动画框中指定物体,注意:该物体的旋转跟随状态会被自动设置为真。了解了自动前进命令,自己旋转命令应该就比较简单了。唯一要注意的就是本命令运行后,有该 ID 物体的旋转跟随状态会被自动设置为真,大家可适情况再进行设置。4物体检查类方法命令为用户提供一种方便。合并物体复制物体定位物体是否重叠寻找重叠物体边界检查是否在区域内寻找物体“合并物体”方法命令调用格式:无返回值对象合并物体 (整数型 被合并到物体标识值,整数型 合并物体标识值,整数型 横向偏移位置,整数型 纵向偏移位置)将一个物体的外形合并到另一个物

29、体里面去,如果欲合并物体为动画外形,将仅使用其第一帧。将两个物体合并为一个物体,第二个物体不变,生成一个副本与第一个物体合并到一起,相当于成为第一个物体的附加物。如果键盘能够移动第一个物体,将会同时移动第一大连大有吴涛易语言软件开发有限公司 http:/ 版权所有17个物体及其附加物体。“复制物体”方法命令调用格式:整数型 对象复制物体 (整数型 被复制物体标识值, 整数型 横坐标 , 整数型 纵坐标 , 逻辑型 是否显示 , 文本型 附加数据 )“定位物体”方法命令调用格式:整数型 对象定位物体 (整数型 横坐标,整数型 纵坐标)返回包含指定动画框位置的最顶层物体的标识值,如果没有任何一个物

30、体包含指定位置,返回-1 。“是否重叠”方法命令调用格式:逻辑型 对象是否重叠 (整数型 物体一标识值,整数型 物体二标识值)如果指定两个物体非透明部分之间存在重叠,返回真,否则返回假。“寻找重叠物体”方法命令调用格式:整数型 对象寻找重叠物体 (整数型 物体标识值, 整数型 假想横坐标位置 , 整数型 假想纵坐标位置 , 文本型 所需附加文本 , 逻辑型 仅检查可能碰撞物体 )如果有满足条件的物体与指定物体的非透明部分之间存在重叠,返回该物体的标识值,否则返回-1 。本方法命令很重要,在实际创建或移动物体之前,可能需要判断一下目的位置是否有其他物体,因此用本方法命令判断后,就非常清楚是否可以

31、创建或移动。“边界检查”方法命令调用格式:整数型 对象边界检查 (整数型 物体标识值, 整数型 假想横坐标位置 , 整数型 假想纵坐标位置 )如果指定物体所有非透明部分都完全位于动画框边框外,返回-1; 如果指定物体非透明部分碰撞到动画框的边框,返回碰撞到边界的类型:1:左边界; 2:上边界; 4:右边界; 8:下边界。注意有可能同时碰撞到几个边界,所以应该通过检测相应位来查看具体碰撞到了哪些边界; 如果物体既没有越出也没有碰撞到边界,返回 0。“是否在区域内”方法命令调用格式:逻辑型 对象是否在区域内 (整数型 物体标识值, 整数型 假想横坐标位置 , 整数型 假想纵坐标位置 ,整数型 矩形

32、左边,整数型 矩形顶边, 整数型 矩形宽度 , 整数型 矩形高度 )如果指定物体有非透明部分在指定矩形区域内,返回真,否则返回假。“寻找物体”方法命令调用格式:整数型 对象寻找物体 (文本型 欲寻找的附加文本数据)寻找具有指定附加文本数据的第一个物体,找到后返回该物体的标识值,未找到返回-1。本命令也非常重要,即:通过附加文本作为关键字找到众多物体中的此物体,返回大连大有吴涛易语言软件开发有限公司 http:/ 版权所有18ID。5布局类方法命令“取布局”方法命令返回保存有当前动画框中所有物体及其内容(包括物体标识值)的数据。注意不包含物体的以下部分数据:自动旋转状态、自动前进状态、动画播放当

33、前帧位置、动画播放剩余次数、动画播放完毕是否自动销毁、剩余生存时间。“置布局” 方法命令清除当前动画框内的所有内容,然后使用指定布局数据填充当前动画框,布局数据中未保存的部分将自动使用默认初始值。“取布局” 、 “置布局”两个命令内部实现较为复杂,但我们用起来是非常简单的,大家是否见过地图编辑器,通过地图编辑器,可以将已编辑好的很多种地图都保存下来为一个个的地图文件,以后通过读取此地图文件一次性地显示地图来,同时保存下来的布局数据中,所有的动画物体都保持原有的物体标识值 ID 号,因此对场景设计是非常方便的。大家可以根据自己的程序需要,写个布局生成器工具。注意:“置布局() ”命令使用后,监视

34、键在置布局后是仍然被保存的,但没有一些自动运行着的状态,因此,原来有自动移动的指令已不起作用了, “添加监视键”还起作用,置布局命令后原来自动前进的物体还需要再次使用“自动前进”命令。6绘图类方法命令绘图类方法命令与画板的绘图类方法命令是基本一样的,请大家参考画板的相关方法命令学习。下图中左侧是动画框组件的绘图类方法命令。下图中右侧是画板组件的方法命令,以让大家进行对比。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有19四动画框组件事件1鼠标触发类事件“物体左键被按下”事件:当在物体上按下鼠标左键后产生此事件。“物体左键被放开”事件:当在物体上放开鼠标左键后产生此事件。如果事件的两

35、个参数值大于 0 且相同,则可以确认在该物体上发生了左键单击事件。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有20“物体右键被按下”事件:当在物体上按下鼠标右键后产生此事件。“物体右键被放开”事件:当在物体上放开鼠标右键后产生此事件。“双击物体”事件:物体被鼠标左键双击后产生此事件。“进入物体”事件:当鼠标位置移动进入到某物体内时产生此事件。如果该事件的“已被按下物体”参数值大于 0 且不等于“物体标识值”参数值,则可以确认有另外物体被鼠标拖曳进了当前物体。“离开物体”事件:当鼠标位置离开某物体时产生此事件。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有21“动画框鼠

36、标位置改变”事件:当在动画框上移动鼠标位置时产生此事件。2键盘触发类事件“监视键被按下”事件:此事件当用户按下一个监视键后发生。监视键被按下事件与普通的按下某键事件相比有以下不同:假设你在按下 A 键后再同时按下 B 键,然后放开 B 键但仍然保持 A 键的按下状态,那么普通的按下某键事件将不会再发送 A 键被按下事件,但此时如果 A 键已被设置为监视键,那么将继续发送 A 监视键被按下事件。这个事件子程序配合“添加监视键() ”方法命令使用。先要设置一些产生作用的键,然后通过此事件检查是否按下了这些键,在此事件下进行处理。3碰撞触发类事件“碰撞到物体”事件:某物体前进第一次碰撞到另一同层不同

37、类型值物体时产生此事件。注意只有当物体进行前进动作时(“前进”或“ 自动前进”命令引发) 才会进行碰撞检测,其它情况下不会去检测碰撞。碰撞到边界事件可以知道碰撞的“边界类型” ,在这个“碰撞到物体”事件中却没有,大连大有吴涛易语言软件开发有限公司 http:/ 版权所有22需要大家通过程序去判断处理,如:乒乓球在球拍的右侧时,那么判断乒乓球的底边是否大于球拍的顶边,再通过对比横坐标就可以知道是碰撞到哪个边了。 (参见乒乓第 3 个例程)同时还有两个重要的参数:“碰撞前横坐标”和“碰撞前纵坐标” ,这两个参数的作用非常大,如果有的物体运动过快,很可能有一小部分已经越过边界,因此就会出现一直处于碰

38、撞状态的现象(死循环) ,最好的处理办法就是再使用一下“置物体位置”命令,返回到碰撞前的状态。“碰撞到边界”事件:当某物体前进碰撞到动画框边框后产生此事件。注意只有当物体进行前进动作时(“前进”或“自动前进”命令引发) 才会进行碰撞检测,其它情况下不会去检测碰撞。参见乒乓球的例程,乒乓球碰到边界后,可以知道边界的类型。同时还有两个重要的参数:“碰撞前横坐标”和“碰撞前纵坐标” ,这两个参数的作用非常大,如果有的物体运动过快,很可能有一小部分已经越过边界,因此就会出现一直在边界上判断的死循环,最好的处理办法就是再使用一下“置物体位置”命令,返回到碰撞前的状态。“越出边界”事件:当某物体前进越出动

39、画框边框外后产生此事件。注意只有当物体进行前进动作时(“前进”或“自动前进”命令引发) 才会进行此检测。注意:自动前进的物体在越出边界后是否自动停止是有条件的,并不是一出去就停止,具体请看“自动前进“命令中的说明。4移动触发类事件“物体位置将改变”事件:当物体位置即将被改变时产生此事件,返回真允许此改变,返回假不允许。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有23“物体位置已改变”事件:当物体位置已经被改变后产生此事件。“物体将销毁”事件:某物体将被销毁前产生此事件。5自动控制类事件“自动前进停止”事件:当物体自动前进被停止后产生此事件。“自动旋转停止”事件:当物体自动旋转被停

40、止后产生此事件。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有24“动画播放完毕”事件:当某物体上由“播放动画”命令所指定次数的动画被播放完毕后,产生此事件。五实用技巧1如何让一个物体左右移动?采用“自动前进”方法命令的“路径”参数设置左右移动的位置,参见大炮打飞机例程。或采用角度“转向”方法实现左右移动,同时“跟随移动”可设置为“假” ,以让图片不转向。2有一个假想的位置,如何判断是否会撞上?在“碰撞到物体”的事件中有两个参数:“碰撞前横坐标” 、 “碰撞前纵坐标” ,这就是在碰撞前的坐标位置,取到后,后退一些,就不会产生一直碰撞的情况了。定位物体命令。3如何用鼠标移动物体并自动

41、判断移动的物体?“动画框鼠标位置改变”和“物体左键被放开”事件中都有一个“已被按下物体” 参数,读取此参数就可以知道在左键接下时的那个物体的 ID 了,可用于判断按下的是哪个物体。4我想在碰撞前就停下来,否则就一直碰撞了,如何处理?大家注意,在“碰撞到物体”的事件中,有两个参数:“碰撞前横坐标” 、 “碰撞前纵坐标” ,这就是在碰撞前的坐标位置,取到后,后退一些,就不会产生一直碰撞的情况了。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有255碰撞到物体后还可以继续移动在“碰撞到物体”事件子程序中再次用“自动移动”事件。六一个实例下面跟着本教程,用十行代码写一个大炮打飞机的游戏。1新

42、建一个易程序如下图所示:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有262放置组件放置 1 个“动画框”组件和 4 个“动画物体”组件。如下图所示:3修改组件属性改背景动画框属性:图片(放一张有山和天空的静态 GIF 图片,作为背景底图) ;改动画物体飞机的属性:图片(放一张直升飞机的动态 GIF 图片) ,播放动画=真,自动取透明色=真,销毁声音(添加爆炸的 WAV 声音) ,允许碰撞= 真,类型值=1改动画物体爆炸的属性:图片(放一张爆炸的动态 GIF 图片) ,播放动画=真,自动取透明色=真,动画自动销毁=1,改动画物体导弹的属性:图片(放一张导弹的 GIF 图片) ,自动

43、取透明色=真,允许碰撞= 真,类型值 =2改动画物体大炮的属性:图片(放一张大炮的 GIF 图片) ,自动取透明色=真。如下图所示:大连大有吴涛易语言软件开发有限公司 http:/ 版权所有274编写控制代码写入如下代码:在启动窗口创建完毕事件中,加入创建大炮的代码;加入自动左右方向键移动控制大炮的代码。加入监视空格键发射炮弹的代码。加入创建飞机的代码。创建飞机的代码中,采用了自动前进的命令,由于需要左右移动,因此大家可以采用路线,改路线为左右方向即可。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有28在“碰撞到物体”事件子程序中,第一行是由于触发爆炸事件,所以创建爆炸的效果。第二

44、行是销毁原有的炸弹和飞机。第三行是重新创建飞机。在“监视键被按下”事件子程序中,接收空格键按下事件,并且创建新的炮弹让炮弹自下而上发射出去。大连大有吴涛易语言软件开发有限公司 http:/ 版权所有29好了,程序完成了,大家运行看看。大家也可以改为飞机曲线飞行,子弹也是曲线飞行,代码如下:.子程序 创建飞机.局部变量 路线, 整数型, , “5“路线 1 1 曲线路线 2 动画框 1.宽度 2 曲线中坐标 X路线 3 动画框 1.高度 2 曲线中坐标 Y路线 4 (动画框 1.宽度 飞机.取内容宽度 () 曲线结束坐标 X路线 5 0 曲线结束坐标 Y动画框 1.自动前进 (动画框 1.创建物

45、体 (飞机, 动画框 1.宽度 飞机.取内容宽度 (), 取随机数 (10, 80), , ), 10, 30, , , , , , 路线, 0)以及:.子程序 _动画框 1_监视键被按下.参数 键代码, 整数型.参数 功能键状态, 整数型.局部变量 路线, 整数型, , “5“路线 1 1 路线 2 _启动窗口.宽度 2 路线 3 _启动窗口.高度 2 路线 4 0 动画框 1.宽度 飞机.取内容宽度 () 路线 5 _启动窗口.高度 曲线结束坐标 Y.如果真 (键代码 #空格键 )动画框 1.自动前进 (动画框 1.创建物体 (炮弹, 动画框 1.取物体左边 (炮标识值) 炮 .取内容宽度

46、 () 2, 动画框 1.取物体顶边 (炮标识值 ) 炮弹.取内容高度 (), , ), 10, 20, , , 真, , 真, 路线, ).如果真结束七例程清单教学例程:(教程中引用到的例程)1迷宫-简单版:演示两行代码写一个小程序。2迷宫-美化版:演示底图上层夹有一个不显示的迷宫图,以产生迷宫效果。3大炮打飞机:演示十行代码写一个小程序, “自动方向键移动” , “添加监视键” ,“监视键被按下” ,左右飞行路径,爆炸效果等。4大炮打飞机-曲线版:演示路径效果,飞机飞行路径是曲线,炮弹发射路径是曲线。5不关联性 1.e、不关联性 2.e,演示动画物体的不关联性。6层次演示.e:演示层次关系。7寻找重叠物体.e:演示在预设位置寻找是否存在物体。8进度条:演示漂亮的动画进度条界面制作。9滑块条:演示漂亮的动画滑块条界面制作。10单人乒乓:演示边界反弹效果。高版本的演示了如何判断物体边界。11时钟:演示旋转物体命令。高级版可换皮肤。大连大有吴涛易语言软件开发有限公司 http:/www.dyw

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报