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

上传人:仙*** 文档编号:28553687 上传时间:2021-08-30 格式:DOC 页数:31 大小:843KB
收藏 版权申诉 举报 下载
《易语言动画支持库教程》_第1页
第1页 / 共31页
《易语言动画支持库教程》_第2页
第2页 / 共31页
《易语言动画支持库教程》_第3页
第3页 / 共31页
资源描述:

《《易语言动画支持库教程》》由会员分享,可在线阅读,更多相关《《易语言动画支持库教程》(31页珍藏版)》请在装配图网上搜索。

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碰撞触发类事件214移动触发类事件225自动控制类事件23五实用技巧24六一个实例251新

2、建一个易程序252放置组件263修改组件属性264编写控制代码27七例程清单29前 言易语言汉语编程环境已提供了多款多媒体工具和二维三维动画工具,目前支持动画图片、音乐播放支持、OPENGL、DX、D3D等制作,以及矢量动画框支持库等。2007年12月,易语言汉语编程环境中又增加了一个新的成员“动画框/动画物体”组件,这是一个2D图形动画引擎,可实现很多动画类软件的制作,譬如:中小学课件制作、2D游戏制作、动画界面风格制作等。一动画框支持库简介动画框支持库包含“动画框”和“动画物体”两个组件。动画框支持库本质是一个二维的动画引擎,可以完成如教学课件及游戏等的制作。实现了对图片的各种管理,如图片

3、与图片之间位置的重叠、碰撞、图片之间的层次、图片的位置、色调、透明度等等一切进行管理。动画引擎是根据课件及游戏等制作的需求而定制的。既然是引擎,那么它的有些功能就是自动完成的,而基本无需时钟组件的控制。如:提供了“自动前进”、“自动旋转”等方法命令。如果您的程序中基本控制部分使用到了时钟组件,笔者只能说,您还没有完全领会这个引擎的功能。动画引擎是简单的、易用的,一些图片的基本功能都提供,如放大缩小、旋转、透明等,还提供一些高级的技巧,如:自动前进、碰撞检测等。动画框支持库支持图片格式有:BMP、PNG、JPG、GIF(含动画GIF文件)、ICO(图标)、CUR(鼠标指针),支持WAV和MIDI

4、声音播放。 大家需要忘记以前没有这个动画引擎之前的旧有思维习惯,重新思考实现的方法。如以前需要通过时钟控制的程序,现在是不需要时钟的,以前需要定位X和Y坐标的,现在也不需要了,因为有自动前进的功能。通过这个动画引擎,我们几乎可以用很少的命令就可以写一个动画程序,有的程序甚至只有两行命令,一个迷宫程序如下图中所示:两行代码如下:二动画物体属性和相关命令“动画物体”提供“动画框”组件的初始化数据。“动画物体”组件与“动画框”组件之间是不关联的,也就是没有连动性。一个“动画物体”组件可以创建多个各种不同的物体。一个程序中“动画物体”组件可以不用,但必须有一个“动画框”组件。一个程序中“动画框”组件是

5、必须的,而“动画物体”组件是可以不需要的。不需要时,可以直接通过“动画框.创建物体()”命令创建,产生标识ID,根据此ID号来修改相应属性就可以了。1不关联性此不关联性也可称为“脱钩”性,即我们创建一个物体(或可称之为精灵)时,需要先在“动画物体”的属性中设置好,再使用。因此说,“动画物体”组件仅仅是为了设计时的方便,让设计者可以看到有这样一个物体,最终由“动画框.创建物体()”命令创建。创建之后,不可以再通过改动“动画物体”组件的属性实现修改的目的,而必须通过“动画物体”组件的相关方法命令来修改。下面大家会看到两个例子的对照,一个采用了先设置动画物体后再创建物体,另一个是先创建物体后再使用修

6、改物体的方法实现创建。一个易程序中,除一个动画框组件外,也可以只有一个动画物体组件,用这一个组件可以创建不同的物体出来,如用一个动画物体就可以创建飞机、大炮、飞弹。但需要创建之前改动画物体的属性、或创建后用动画框的方法去实现。提供“动画物体”组件的目的是:在制作时可以直观看见物体的外形、效果等。2文字类属性动画物体有两种表现形式,一种是动画,一种是文字。两者是不能共存的。例1:新建一个易程序,在启动窗口中放一个“动画框”组件和一个“动画物体”组件,然后改“动画物体”组件的“文字”属性为“吃了吗?”,“字体属性”为“宋体、粗体、小四号字”,“文本颜色”属性改为“天蓝”。好了,这里大家试运行程序,

7、会发现什么也没有,这里需要在“_启动窗口_创建完毕”事件中写一些代码来加载这个动画物体。代码如下所示:好了,这里再运行,就可以发现窗口中已有动画物体显示出来了,如下图所示:为了对比,下面我们重新制作一个易程序。在一个新建的易程序中仅放一个“动画框”组件,直接进入“_启动窗口_创建完毕”事件,并写如下代码:运行后,大家可以看到,其运行的窗口界面效果与第一个例子是差不多的。再次重申,在上述例程中,如果通过“创建物体”命令已产生一个ID号后,就不能再通过改“动画物体”组件的属性来更改物体的状态了,而只能通过“动画框”的方法命令去更改。3标识控制上述中,大家可以看到,以上由于可以创建多个物体,因此如何

8、操作这些不同的物体呢?原来是通过创建时返回的标识值来具体进一步操作的。“动画框”组件的每一个方法的第一个参数就是“标识值”,因此只要取得标识值,就可以直接对含有此标识的物体进行操作了。本文中,“标识值”也称为ID。4图片属性动画物体的图片相关属性有:“图片”属性、“自动取透明色”属性、“透明色”属性、“播放动画”属性、“动画间隔时间”属性、“动画自动销毁”属性。动画物体的“图片”属性图片属性与文字属性不能共存。如果有文字属性的情况下,就只会显示文字,不显示图片,因此如果想要显示图片,就必须将文字属性清空。注意:新版本已支持PNG图片格式了。其他的属性也很简单,大家可以自己试一下,如:“自动取透

9、明色”属性可以让某张图片变成透明的,条件是左上角的点就是透明色。“透明色”属性指定上述不是自动状态时,指定一种透明色进行透明处理。“播放动画”属性指定GIF动画文件是否可以播放动画,为“假”就显示GIF动画的第一帧。“动画间隔时间”属性指定在每次播放GIF动画之间插入的间隔毫秒数。“动画自动销毁”属性指:如果所指定图片是GIF动画格式,则本属性指定当该GIF动画播放几次后自动销毁该物体。如果为0,表示一直播放。“动画自动销毁”属性例程参见“大炮打飞机”演示,程序中,炮弹每次只显示一次就销毁了。5调色“趋向色”属性与“趋向程度”属性是一对,当指定了“趋向色”属性后,再改变“趋向程度”属性,就可以

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

11、“生存时间”属性指:自物体被创建后在动画框中的生存时间,当此时间达到后该物体将被自动销毁,单位为毫秒。0表示无限制。例如,新建一个易程序,放置一个动画框组件,再放置一个动画物体,并且设置其生存时间为2000毫秒,写动画物体创建到动画框组件中的代码,然后运行此程序,可以观察到2秒后,此动画物体就消失了。8声音控制“创建声音”和“销毁声音”属性可以让你加入一个声音资源。支持WAV和MIDI声音。“创建声音”属性指定当物体在动画框中被创建时播放的声音。按下 Del 键即可删除现行内容。“销毁声音”属性指定当物体在动画框中被销毁时播放的声音。按下 Del 键即可删除现行内容。“碰撞声音”属性指:如果允

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

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

14、值。条件5:指定当物体向前移动后与同层另外一个不同类型值物体相互交叠时是否启动碰撞处理机制,注意:1.物体是否被显示并不影响到碰撞处理,也就是说如果允许碰撞,即使物体被隐藏也会启动碰撞处理; 2.被碰撞到的物体必须也同时允许碰撞才会触发碰撞机制; 3.只有当物体进行前进动作时(“前进”或“自动前进”命令引发)才会进行碰撞检测,其它情况下不会去检测碰撞。注意:隐藏的物体(不可视)依然可以被碰撞到,这个特性很重要。譬如设计一个迷宫程序,可以用两个通道图,一个是漂亮复杂的不检查碰撞的被显示的图片,一个是单线简单的检查碰撞的不被显示的图片,这样就能达到很顺畅地在外面漂亮的图里面移动的目的。10层次“层

15、次”属性指定物体在动画框中所处的层次,值越小表示所处层次越低,显示越在后方,值越大表示所处层次越高,显示越在前方。分层次是为了分类管理,一个小游戏在合理安排类型值的情况下,可以不用本属性,但在大型复杂的层次中,可能就需要分层显示。例如:在一些RPG游戏中,当小人走到房子的后面时,前面就看不出来,这时我们可以说人物在后面的层次,房子是在前面的层次。通过例子对比一下显示的效果:当地球图片的层次为0,飞机的层次为1时,显示效果如下:当飞机图片的层次为0,地球的层次为1时,显示效果如下:大家可以看到,显示的叠加效果是不同的。11相关方法上述所有“动画物体”的属性,都可以用“动画框”的相关方法实现。列表

16、如下:“动画物体”属性“动画框”相关方法(可视)显示/是否已显示(标记)置附加文本/取附加文本置物体位置(左边)取物体左边(顶边)取物体顶边(宽度)取内容宽度取物体宽度(高度)取内容高度取物体高度图片置图片自动取透明色透明色(同上)播放动画播放动画动画间隔时间(同上)动画自动销毁(同上)趋向色趋向色变换趋向程度(同上)亮度置亮度/取亮度透明度置透明度/取透明度缩放比缩放/取横向缩放比/取纵向缩放比层次置层次/取层次角度置角度/取角度/转向旋转跟随置旋转跟随/取旋转跟随翻转翻转生存时间置生存时间创建声音销毁声音置销毁声音允许碰撞置碰撞管理/置物体位置碰撞声音(同上)类型值取类型以上两者对比后,大

17、家可以直接翻开动画框的方法看一下,用一下。下面仅对一些需要注意的地方着重再讲一下:“取内容宽度()”、“取内容高度()”、“取物体宽度()”、“取物体高度()”方法“动画物体”组件有“宽度”和“高度”属性,但这只是指的组件放在设计窗口时的宽度与高度,与其中实质的图片是没有关系的。“动画物体”组件有“取内容宽度()”和“取内容高度()”两个方法,与“动画框”组件的“取物体宽度()”和“取物体高度()”方法是一样的,即:所取的不是“动画物体”组件的宽度,而是图片属性中图片的实际宽度,这样无论图片如何变化,所取的宽度都是正确的。转向()其中还有一个“转向()”方法,它与“置角度”方法不同的是,“置角

18、度”是绝对角度,而“转向”是相对于当前角度所转的角度,是相对角度。是相对当前的角度转向,有些类似于LOGO语言的右转。取区域图片()快照用。注意:动画支持库测试版中此命令取得的是32位深度位图,需要用位图支持库转换为24位深度位图后,才可以用“转换到JPG()”等其他命令。三动画框组件方法命令上述大部分基本命令都已讲过了,还有不多的命令,也是本引擎的精华所在:创建物体、销毁物体、销毁所有物体取物体数前进自动前进停止自动前进自动旋转停止自动旋转自动方向键移动显示下一帧定位物体是否重叠寻找重叠物体边界检查是否在区域内取区域图片(快照用)合并物体复制物体寻找物体置监视键清除监视键取布局置布局1创建类

19、命令“动画物体”组件基本没有什么方法可用(仅有两个方法),其他所有重要方法全在“动画框”组件中。动画框的“创建物体()”方法将某个动画物体创建到动画框中去,并且返回一个标识值。标识相当于此创建物体的标志符、ID、指针、句柄。前述已说了一些创建物体的命令,在此重申,第一个参数可有可无,有的时候,放初始化数据,即设置好的动画物体。并且返回一个ID号,以后操作这个物体,根据这个ID号就可以非常容易地操作了。当没有第一个参数时,可以先返回一个ID号,然后用这个ID号置属性,从而创建多个不同样子的物体。附加数据指的是一个附加文本,用于需要标记文本的需求。动画框的“销毁物体()”方法即将物体销毁掉。销毁动

20、画框中已经被创建的指定标识值物体。动画框的“销毁所有物体()”方法销毁动画框中所有已经被创建的物体。动画框的“添加图片()”方法在动画框中指定物体上添加一张图片,从而使其与已有图片共同形成动画效果。通过这个方法,可以将一组PNG图片或动画物体制作成一个动画效果。同时其他的图片也支持这样添加图片成为动画。注意:如果添加的即有GIF动画图片,也有其他格式图片,其添加的只是GIF里面的每帧图片,而对于GIF动画中播放时间及循环等都不保留。2键盘类方法命令一般用键盘时,如果按下一个方向键再按另一个方向键,就不会再有前一个方向键作用了,因此使用了两个命令来监视键盘的按键。动画框的“添加监视键()”方法添

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

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

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

24、,整数型 每次前进间隔时间,整数型 最大前进距离,整数型 最大前进时间,逻辑型 碰撞停止,整数型 边界停止,逻辑型 自动销毁,整数型数组 路线,整数型 路线重复次数)以当前角度或指定路线自动向前移动动画框中指定物体。这是本支持库比较重要的一个方法,需要大家仔细领会。因为这个命令是自动运行的,因此本引擎的强大作用就体现出来了。例如:在“大炮打飞机”程序中,飞机的飞行就是自动左右移动的。而大炮发射的炮弹向前飞行也是自动前进的。下面的程序代码是创建飞机时的子程序,可以看到采用了自动前进的方法命令:下面的程序代码是接收键盘按钮发射炮弹的子程序,可以看到采用了自动前进的方法命令:创建飞机的“自动前进”方

25、法命令中,采用了路线参数,这个参数非常重要。如果是直线,那么数组参数第一个变量为0,后面是目标的坐标。如果数组参数第一个变量为1,后面是贝赛尔曲线的四个数据。这四个数据分别表示一条贝赛尔曲线,由三个点控制。贝赛尔曲线的三个点说明如下:它的起点是创建时的位置,不用大家在数组中设置,“创建”时,或“置位置”时已有数据。第二点是曲线的控制点,是偏移点,物体移动时会被此点拉向一方,如果是直线移动时会穿过此点;第三个点是曲线的终点,可以通过计算取得。其坐标系是相对于起点的相对坐标,并且是以屏幕坐标为基准的,即以屏幕坐标为基准的相对坐标。如下图所示:上图中十字线的中心点为(0,0)点,右下角全部为正数值,

26、表示屏幕坐标。参见下述创建飞机时曲线飞行路线的代码:参见下述创建子弹时曲线射击的代码:最后大家要注意的是:碰撞需要满足的五个条件,大家一定要设置好,这样就可以用这些自动化的命令写程序,实现碰撞检测效果了。“自动旋转”方法命令对象自动旋转 (整数型 物体标识值,整数型 每次旋转距离,整数型 每次旋转间隔时间,整数型 总旋转距离,整数型 总旋转时间)自动旋转动画框中指定物体,注意:该物体的旋转跟随状态会被自动设置为真。了解了自动前进命令,自己旋转命令应该就比较简单了。唯一要注意的就是本命令运行后,有该ID物体的旋转跟随状态会被自动设置为真,大家可适情况再进行设置。4物体检查类方法命令为用户提供一种

27、方便。合并物体复制物体定位物体是否重叠寻找重叠物体边界检查是否在区域内寻找物体“合并物体”方法命令调用格式:无返回值对象合并物体 (整数型 被合并到物体标识值,整数型 合并物体标识值,整数型 横向偏移位置,整数型 纵向偏移位置)将一个物体的外形合并到另一个物体里面去,如果欲合并物体为动画外形,将仅使用其第一帧。将两个物体合并为一个物体,第二个物体不变,生成一个副本与第一个物体合并到一起,相当于成为第一个物体的附加物。如果键盘能够移动第一个物体,将会同时移动第一个物体及其附加物体。“复制物体”方法命令调用格式:整数型 对象复制物体 (整数型 被复制物体标识值,整数型 横坐标,整数型 纵坐标,逻辑

28、型 是否显示,文本型 附加数据)“定位物体”方法命令调用格式:整数型 对象定位物体 (整数型 横坐标,整数型 纵坐标)返回包含指定动画框位置的最顶层物体的标识值,如果没有任何一个物体包含指定位置,返回-1。“是否重叠”方法命令调用格式:逻辑型 对象是否重叠 (整数型 物体一标识值,整数型 物体二标识值)如果指定两个物体非透明部分之间存在重叠,返回真,否则返回假。“寻找重叠物体”方法命令调用格式:整数型 对象寻找重叠物体 (整数型 物体标识值,整数型 假想横坐标位置,整数型 假想纵坐标位置,文本型 所需附加文本,逻辑型 仅检查可能碰撞物体)如果有满足条件的物体与指定物体的非透明部分之间存在重叠,

29、返回该物体的标识值,否则返回-1。本方法命令很重要,在实际创建或移动物体之前,可能需要判断一下目的位置是否有其他物体,因此用本方法命令判断后,就非常清楚是否可以创建或移动。“边界检查”方法命令调用格式:整数型 对象边界检查 (整数型 物体标识值,整数型 假想横坐标位置,整数型 假想纵坐标位置)如果指定物体所有非透明部分都完全位于动画框边框外,返回-1; 如果指定物体非透明部分碰撞到动画框的边框,返回碰撞到边界的类型:1:左边界; 2:上边界; 4:右边界; 8:下边界。注意有可能同时碰撞到几个边界,所以应该通过检测相应位来查看具体碰撞到了哪些边界; 如果物体既没有越出也没有碰撞到边界,返回0。

30、“是否在区域内”方法命令调用格式:逻辑型 对象是否在区域内 (整数型 物体标识值,整数型 假想横坐标位置,整数型 假想纵坐标位置,整数型 矩形左边,整数型 矩形顶边,整数型 矩形宽度,整数型 矩形高度)如果指定物体有非透明部分在指定矩形区域内,返回真,否则返回假。“寻找物体”方法命令调用格式:整数型 对象寻找物体 (文本型 欲寻找的附加文本数据)寻找具有指定附加文本数据的第一个物体,找到后返回该物体的标识值,未找到返回-1。本命令也非常重要,即:通过附加文本作为关键字找到众多物体中的此物体,返回ID。5布局类方法命令“取布局”方法命令返回保存有当前动画框中所有物体及其内容(包括物体标识值)的数

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

32、需要,写个布局生成器工具。注意:“置布局()”命令使用后,监视键在置布局后是仍然被保存的,但没有一些自动运行着的状态,因此,原来有自动移动的指令已不起作用了,“添加监视键”还起作用,置布局命令后原来自动前进的物体还需要再次使用“自动前进”命令。6绘图类方法命令绘图类方法命令与画板的绘图类方法命令是基本一样的,请大家参考画板的相关方法命令学习。下图中左侧是动画框组件的绘图类方法命令。 下图中右侧是画板组件的方法命令,以让大家进行对比。 四动画框组件事件1鼠标触发类事件“物体左键被按下”事件:当在物体上按下鼠标左键后产生此事件。“物体左键被放开”事件:当在物体上放开鼠标左键后产生此事件。如果事件的

33、两个参数值大于0且相同,则可以确认在该物体上发生了左键单击事件。“物体右键被按下”事件:当在物体上按下鼠标右键后产生此事件。“物体右键被放开”事件:当在物体上放开鼠标右键后产生此事件。“双击物体”事件:物体被鼠标左键双击后产生此事件。“进入物体”事件:当鼠标位置移动进入到某物体内时产生此事件。如果该事件的“已被按下物体”参数值大于0且不等于“物体标识值”参数值,则可以确认有另外物体被鼠标拖曳进了当前物体。“离开物体”事件:当鼠标位置离开某物体时产生此事件。“动画框鼠标位置改变”事件:当在动画框上移动鼠标位置时产生此事件。2键盘触发类事件“监视键被按下”事件:此事件当用户按下一个监视键后发生。监

34、视键被按下事件与普通的按下某键事件相比有以下不同:假设你在按下A键后再同时按下B键,然后放开B键但仍然保持A键的按下状态,那么普通的按下某键事件将不会再发送A键被按下事件,但此时如果A键已被设置为监视键,那么将继续发送A监视键被按下事件。这个事件子程序配合“添加监视键()”方法命令使用。先要设置一些产生作用的键,然后通过此事件检查是否按下了这些键,在此事件下进行处理。3碰撞触发类事件“碰撞到物体”事件:某物体前进第一次碰撞到另一同层不同类型值物体时产生此事件。注意只有当物体进行前进动作时(“前进”或“自动前进”命令引发)才会进行碰撞检测,其它情况下不会去检测碰撞。碰撞到边界事件可以知道碰撞的“

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

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

37、”事件:当物体位置即将被改变时产生此事件,返回真允许此改变,返回假不允许。“物体位置已改变”事件:当物体位置已经被改变后产生此事件。“物体将销毁”事件:某物体将被销毁前产生此事件。5自动控制类事件“自动前进停止”事件:当物体自动前进被停止后产生此事件。“自动旋转停止”事件:当物体自动旋转被停止后产生此事件。“动画播放完毕”事件:当某物体上由“播放动画”命令所指定次数的动画被播放完毕后,产生此事件。五实用技巧1如何让一个物体左右移动?采用“自动前进”方法命令的“路径”参数设置左右移动的位置,参见大炮打飞机例程。或采用角度“转向”方法实现左右移动,同时“跟随移动”可设置为“假”,以让图片不转向。2

38、有一个假想的位置,如何判断是否会撞上?在“碰撞到物体”的事件中有两个参数:“碰撞前横坐标”、“碰撞前纵坐标”,这就是在碰撞前的坐标位置,取到后,后退一些,就不会产生一直碰撞的情况了。定位物体命令。3如何用鼠标移动物体并自动判断移动的物体?“动画框鼠标位置改变”和“物体左键被放开”事件中都有一个“已被按下物体” 参数,读取此参数就可以知道在左键接下时的那个物体的ID了,可用于判断按下的是哪个物体。4我想在碰撞前就停下来,否则就一直碰撞了,如何处理?大家注意,在“碰撞到物体”的事件中,有两个参数:“碰撞前横坐标”、“碰撞前纵坐标”,这就是在碰撞前的坐标位置,取到后,后退一些,就不会产生一直碰撞的情

39、况了。5碰撞到物体后还可以继续移动在“碰撞到物体”事件子程序中再次用“自动移动”事件。6大地图效果如何制作?将动画框组件尺寸设置到和地图尺寸一致,然后将动画框放到一个容器组件内,根据需要调整动画框在容器组件内的位置即可。7如何实现“置旋转点”通过自动前进命令里面的路径参数就可以实现围绕任何点旋转8“自动旋转”命令中建议加入“自动销毁”参数自动旋转停止后会自动发送一个事件,在该事件里面销毁就行了,也就多一行代码。9为何使用动画框“取区域图片( )”命令后取得的图片,不能被“转换到JPG( )”命令转换为JPG图片?因为取出的是32位深度的位图,可以用位图支持库的“转换位深度( )”命令转换深度为

40、24位后再使用。六一个实例下面跟着本教程,用十行代码写一个“大炮打飞机”的游戏。1新建一个易程序如下图所示:2放置组件放置1个“动画框”组件和4个“动画物体”组件。如下图所示:3修改组件属性改背景动画框属性:图片(放一张有山和天空的静态GIF图片,作为背景底图);改动画物体飞机的属性:图片(放一张直升飞机的动态GIF图片),播放动画=真,自动取透明色=真,销毁声音(添加爆炸的WAV声音),允许碰撞=真,类型值=1改动画物体爆炸的属性:图片(放一张爆炸的动态GIF图片),播放动画=真,自动取透明色=真,动画自动销毁=1,改动画物体导弹的属性:图片(放一张导弹的GIF图片),自动取透明色=真,允许

41、碰撞=真,类型值=2改动画物体大炮的属性:图片(放一张大炮的GIF图片),自动取透明色=真。如下图所示:4编写控制代码写入如下代码:在启动窗口创建完毕事件中,加入创建大炮的代码;加入自动左右方向键移动控制大炮的代码。加入监视空格键发射炮弹的代码。加入创建飞机的代码。创建飞机的代码中,采用了自动前进的命令,由于需要左右移动,因此大家可以采用路线,改路线为左右方向即可。在“碰撞到物体”事件子程序中,第一行是由于触发爆炸事件,所以创建爆炸的效果。第二行是销毁原有的炸弹和飞机。第三行是重新创建飞机。在“监视键被按下”事件子程序中,接收空格键按下事件,并且创建新的炮弹让炮弹自下而上发射出去。好了,程序完

42、成了,大家运行看看。大家也可以改为飞机曲线飞行,子弹也是曲线飞行,代码如下:.子程序 创建飞机.局部变量 路线, 整数型, , 5路线 1 1 曲线路线 2 动画框1.宽度 2 曲线中坐标X路线 3 动画框1.高度 2 曲线中坐标Y路线 4 (动画框1.宽度 飞机.取内容宽度 () 曲线结束坐标X路线 5 0 曲线结束坐标Y动画框1.自动前进 (动画框1.创建物体 (飞机, 动画框1.宽度 飞机.取内容宽度 (), 取随机数 (10, 80), , ), 10, 30, , , , , , 路线, 0)以及:.子程序 _动画框1_监视键被按下.参数 键代码, 整数型.参数 功能键状态, 整数型

43、.局部变量 路线, 整数型, , 5路线 1 1 路线 2 _启动窗口.宽度 2 路线 3 _启动窗口.高度 2 路线 4 0 动画框1.宽度 飞机.取内容宽度 () 路线 5 _启动窗口.高度 曲线结束坐标Y.如果真 (键代码 #空格键) 动画框1.自动前进 (动画框1.创建物体 (炮弹, 动画框1.取物体左边 (炮标识值) 炮.取内容宽度 () 2, 动画框1.取物体顶边 (炮标识值) 炮弹.取内容高度 (), , ), 10, 20, , , 真, , 真, 路线, ).如果真结束七例程清单教学例程:(教程中引用到的例程)1迷宫-简单版:演示两行代码写一个小程序。2迷宫-美化版:演示底图

44、上层夹有一个不显示的迷宫图,以产生迷宫效果。3大炮打飞机:演示十行代码写一个小程序,“自动方向键移动”,“添加监视键”,“监视键被按下”,左右飞行路径,爆炸效果等。4大炮打飞机-曲线版:演示路径效果,飞机飞行路径是曲线,炮弹发射路径是曲线。5不关联性1.e、不关联性2.e,演示动画物体的不关联性。6层次演示.e:演示层次关系。7寻找重叠物体.e:演示在预设位置寻找是否存在物体。8动画进度条:演示漂亮的2D动画进度条界面制作。9动画滑块条:演示漂亮的2D动画滑块条界面制作。10单人乒乓:演示边界反弹效果。高版本的演示了如何判断物体边界。11时钟:演示旋转物体命令。高级版可换皮肤。12基本例程:将

45、属性、方法、事件分类写的测试例程。13迷宫鼠标移动:演示用鼠标直接移动迷宫中的物体。14循环字幕:演示循环播放字幕。15物体随鼠标旋转:演示物体随鼠标旋转。16PNG人物走动:演示PNG图片形成的人物走动效果。17PNG闪光效果:演示PNT图片形成的闪光效果。18PNG火球拳:演示PNG图片形成的火球效果。实用程序:1打字练习:演示教学课件制作。2打方块:乒乓的升级版。3看图识文字:演示课件制作中的拖动效果。4看谁跑得快:演示速度控制。5碰碰化学方程式:化学教学课件制作。6潜艇大战:一个完整的游戏,仅用200行代码。7坦克大战网络版:游戏与网络的结合,本程序采用数据报,大家也可用其他网络组件编程,如果您是单机,那就只能进行新兵训练了。可控制八个方向,以及多键的同时按下。31

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!