birdonfire
2002-09-23, 09:24 AM
和公司告别,与Flash告别
和公司告别,与Flash告别,下面是我给公司员工做Flash培训写的东东,现在没有用了,发给大家看看,以纪念我的过去的两年
————————————————
第2讲 动作脚本和交互动画
理解几个概念
1. 什么是动作脚本语言(ActionScript)
flash是基于网络的带交互属性的动画,和我们看的普通动画不一样,可以通过鼠标和键盘来和动画“对话”,比如点击按钮播放动画,鼠标拖曳动画图形等等,这些都是通过flash自带的动作脚本语言(ActionScript)实现的。按照Macromedia公司的说法, ActionScript是种基于对象的面对对象脚本语言。ActionScript和JavaScript(一种用于html页面交互的客户端脚本语言)一样采用了ECMA-262语法标准。如果是学过JavaScript,学习ActionScript将很容易。
上面的是一段写在书本上关于ActionScript的文字,大家大概了解一下就可以。没有必要很明白,只要明白ActionScript是用来使动画交互的语言。还有我要说明一下,我这里说的脚本语言和制作课件写的脚本不是一个概念。
2. 面对对象编程思想(OOP )
以前
早期的计算机语言,如FORTRAN、PASCAL、C等被称为过程语言(procedural languages),它们都是按一步一步的方式运行的,程序员将可重用的代码写成函数(functions)。过程语言的标志是函数的运用与数据结构(data structures)是没有联系的。
过程语言工作上一点问题都没有,但是它们也有缺点,一步一步运行的特性使程序员必须知道每一行程序的用途。(试想几十个人合作的程序,每个人都要读懂其他人写的程序,比自己写还要命)同时,它另一大弱点就是函数与数据结构没有关系。
之后
为解决这些问题,有伟大的面向对象(object orientation)概念的出现。
经典的C++、我们熟悉的JacaScript、还有我们更熟悉的ActionScript,都可以用结构函数(constructor functions)定义类(classes),将函数与数据结构联系了起来。(我们不要细究AS到底是面向对象语言,还是“面向符号语言”或“基于对象语言”,OO其实是一种编程的思想,而写AS时确实可以贯彻这个思想(虽然未必能完全彻底地)。关注的重点应该是AS中运用面向对象编程能为我们带来什么样的好处。)
一个构造函数(或称构造器),其实是一套指令用于定义该类的属性(properties)和方法(methods)。有了它你可以创建类的实例(instances),这些实例就称为对象(object)(大家搞清楚了,这时候instances和object就是指同一个东西)
下面再阐述一次最基本的概念:
* 类(Class):你创建的用于定义新的对象的数据类型。创建一个新的类,你需要创建一个构造函数先。
* 构造器(Constructor):用来定义一个类的属性与方法的函数
* 函数(Function)可复用的代码模块,可以通过参数接受数据,自身也可以返回数据
* 标识符(Identifier)用来标识变量、属性、对象、函数或者方法的名字,第一个字符是必须字母、下划线(_),或$。其他字符可以为字母、数字、下划线(_),或$
* 方法(Method):分配到对象上的成员函数。(chocobo:实现某些对对象操作的功能)
* 对象(Object):类的一个实例。每个实例包含构造器定义好的属性和方法,同时它可以包含追加进去的,不是类定义,这个实例特有的属性和方法。
* 属性(Property):定义一个对象的参数
再举个例子,更形象地说明问题。
我们要写构造函数来定义一个叫“鲨鱼”的类,这个类里面包括象“牙齿”、“尺寸”、“形状”、“食欲”等等属性,还包括“游泳”、“进食”和“捕猎”等等方法。
完成了构造函数,我们就有鲨鱼了大致蓝图。要得到一条新的鲨鱼,就创建一个类的实例,每一个实例就是每一条鲨鱼,它们拥有类似的属性(都有牙齿,都有鱼翅),但是它们的属性不一定一样,而且互相没有联系。
每一个对象还可以拥有独立的属性和方法,称为对象的extending。例如某一条鲨鱼它多了一个属性,叫“腿”(天,这举的什么例子啊,怪物~)。只有这条鲨鱼是有腿的,当然,定义鲨鱼的类时不需要这个属性,是后来这个对象里加上的。
在你设计好一个完整的类之后,你就不需要担心它了,你可以当它一个黑箱操作,你发信息进去,里面返回信息,而不需要理会和修改里面的任何内容。接是,你就可以在任何其他程序使用这个类,其他人不需了解该类里面的代码细节,他需要知道和你需写进文档的,只是如何使用它。(这就是OOP重要特性之一:封装性)
你一定想知道以上这些用FLASH是如何实现吧?FLASH内部的编程语言ActionScript,is a full object-oriented language based on ECMAscript.(这句我没翻照写了,XX公司可说明AS是完全的面向对象语言)。ECMAscript是一种脚本语言规范,其中最为大家所知的一种就是JavaScript。
AS里面有很多OO的重要特性,首先,它有很多的内建对象已经可以使用,从MC到XML都是(打开AS面板,NORMAL模式,OBJJECT那一栏就能找到)。其次,AS可以让你扩展对象的属性、方法。最后,AS还可以让你定义新的类。
3.ActionScript语法讲解
实例1怎样制作按狃
知识点:制作按钮,按钮内部的几个影桢的涵义,在按钮内部的影桢上放电影剪辑
实例2 拖曳动作
知识点:按钮函数语句 电影剪辑,面对对象编程思想,对象的实体等等
按钮事件类别
事件类型 函数
鼠标按下 on (press)
鼠标按下后释放 on (release)
鼠标在按钮上滑动 on (rollOver)
鼠标滑出按钮 on (rollOut)
鼠标释放并停在按钮外 on (releaseOutside)
鼠标拖曳并按钮上滑动 on (dragOver)
鼠标拖曳并滑出按钮 on (dragOut)
键盘控制按钮 on (keyPress )
实例3
知识点:简单动画播放控制函数
stop() 停止
play() 播放
gotoAndPlay() 跳到某一桢并播放
gotoAndStop() 跳到某一桢并停止
nextFrame() 跳到下一桢并停止
nextScene() 跳到下一场景并停止
prevFrame() 跳到前一桢并停止
prevScene() 跳到前一场景并停止
实例4 脚本控制物体运动
脚本控制物体运动
脚本控制物体运动
知识: 理解电影剪辑对象,桢循环
电影剪辑(Moive Clip)的属性
_alpha 透明度(0—100)
_height 高
_highquality 显示质量
_name 名称
_rotation 旋转角度
_visible 是否可见
_width 宽
_x x轴方向坐标值
_y y轴方向坐标值
实例5 下雨了
知识点:复制电影剪辑,函数的条件判断
Flash教学资源网站:
www.flashkit.com 顶级的flash教学资源网站,有大量的flash源文件,分类齐全,flash教程。声音/图形资源,是闪客必去的地方。
www.flashshock。com 国外flash设计高手的联盟网站,偏重于flash的网站设计,有经典的flash源文件资源,教程,最大的亮点是收集了大量的flash设计的网站,个个都是名家的经典之作。是设计师激发灵感和学习的乐园。
http://www.actionscripts.org/ flash程序设计资源网站,有源文件和教程
——————————————————————————————————————
优秀纯Flash网站:
http://www.2advanced.net/ 国内闪客尽力效仿的网站,很闪客中是一个优秀网站的典范。
http://www.digitalorganism.com/genesis/ 出色的DNA菜单设计,很高的技术含量,整个动画流畅动敢
http://www.digitalorganism.com/genesis/ Flash设计团队网站,大胆而成功的红的界面的应用,仿视窗界面风格设计,
应用了真实影视/广告动画片段,相信FlashMX的导入视频能力能把这种风格流行。
http://www.nrg.be/ 优秀的形状渐变的处理,大气的,有力量感觉的网站,配合出色的声音效果,已经是超出了普通网页的模式和风格。
http://www.matinee.co.uk/ Flash4时代的网站,出色的三维效果,对早期的web页面设计人员来说是革命性,颠覆了传统设计人员的web设计思维。从此web页面设计师都在尝试用flash。
优秀flash游戏网站:
http://web.tiscali.it/swed/aidroid_rn.html flash游戏网站,出色的界面和可玩性,所有flash游戏设计师看到后到感到黯然失色。
http://www.dpi.nl/site_nl/xtra/game/polar/ flash网络游戏的典范,技术含量很高,与后台语言的结合,对玩家成绩和资料处理,让人感到flash程序设计功能异常强大。
Flash第三方工具软件网站:
http://buraks.com/asv/ 大名鼎鼎的asv(一种针对flash文件的代码解析工具)的官方网站,有asv的帮助文件
http://www.swift3d.com/ Swift3D 的官方网站 这个就不用说了
http://www.vecta3d.com/ 第三方3D工具软件vecta3d的网站
http://www.flaxfx.com/ 第三方文本特效工具flaxfx网站
其他:
http://www.flashforward2002.com 国外flash电影节官方网站
第三讲 ActionScript深入应用
以下是一些概念和原理,是通往flash脚本编程必由之路
1. 面对对象编程(Object-Oriented Programme )
早期的计算机语言,如FORTRAN、BASIC、C等被称为过程语言(procedural languages),运行时都是逐行执行代码的,这样对于大量的代码来说对程序开发人员是个不小的考验——要理解程序代码必须读懂每一行代码。这样对于合作程序开发是一个致命的制约,总不能要求开发小组中的每一个成员从头到尾读懂代码。
后来为了解决这些问题,出现了对面向对象(object orientation)概念。在后来的程序语言中,比如跨平台的Java,经典的C++,网页上实现交互和特效的JavaSript,以及Flash内建的ActionScript都应用了面对对象的思想,都是面对对象程序语言。
面对对象是把所有一类的物体的相关信息组织起来,放在一个称为类(Class)的集合中,类的信息就称为属性(Properties)和方法(Method)。这就好象把“人”称为一个类,“人”是一个抽象的概念,而具体的人是实在存在的,那么每一个具体的人就是“人”这个类的对象,“人”这个类有一些通用的属性和方法,比如人能说话,能够繁衍后代 ,能直立行走。同样FlashMX中,ActionScrip把MoiveClip(电影剪辑),Sound(声音)和Color(色彩)等等归为一类,这些类的实体(Instance)就是对象,这些类,以电影剪辑为例,有一些属性比如_width(宽),_height(高),_visible(是否可视)等等和一些方法,比如attachMoive(从库中绑定电影剪辑),duplicateMoiveClip(复制电影剪辑)等等。对象作为类的实体化(Instancing)就有了该类的属性和方法。改变对象的属性和执行对象方法就是一种基于对象的行为。ActionScript和JavaScript一样都是采用了ECMA_262(欧洲计算机制造协会)的语法标准,
学过JavaScript的人很容易学习ActionScript。
2.基本脚本函数
如果是想让动画播放到某一桢停止,或动作由某一桢跳到另一桢并播放或停止,用什么函数语句控制?使动画播放或停止是常见的动画控制,而用来控制的函数语句也是常用的,为了便于区别,我们把它们归为基本脚本函数。常用的基本脚本函数和功能如表3-4-1:
函数语句 功能
gotoAndStop() 播放磁头到某一影桢并停止
gotoAndPlay() 播放磁头到某一影桢并播放
nextFrame() 跳到下一影桢并停止
nextScene() 跳到下一场景开始播放
Play() 播放
Stop() 停止
prevFrame() 跳到前一影桢并停止
prevScene() 跳到前一场景并播放
stopAllSounds() 停止播放动画中所有声音
表3-4-1基本脚本函数语句
上面函数语句中其中gotoAndStop()和gotoAndPlay()有参数,其他的没有参数,直接写入即可。而gotoAndStop()和gotoAndStop()要参数设置,图3-4-3:
图3-4-3 goto语句的参数设置
两个函数的语法参数设置很相似,以为gotoAndStop()说明:
语法:gotoAndStop( scene ,frame)参数说明:Scene: 跳到某一场景 current scence: 当前场景 next scence: 下一个场景previous scence: 上一个场景Type:目标桢在时间轴上的位置和名称。Frame Number: 目标桢在时间轴的位置 Frame lable : 目标桢的名称 Expression: 通过算术表达式表示目标桢 Next Frame: 跳到下一影桢 Previous Frame: 跳到上一影桢 Frame: 目标桢的位置和名称
基本脚本函数在Flash4以后(包括Flash4)的播放器(Flash Player)都支持,不用考虑函数在播放器中是否能执行的问题。
3。深入理解电影剪辑
在前面的章节中讲过电影剪辑是“小电影”,是动画设计师最常应用的设计元素。而在Flash脚本程序开发人员心目中,电影剪辑是最常用的对象之一,也是唯一图形化的对象。怎么理解呢?Flash脚本程序开发人员是用ActionScript来工作的,ActionScript是基于对象的脚本语言,所以在他们的眼中最精美的电影剪辑首先是一个电影剪辑,然后才是图形。从库中拖出的放置场景中的电影剪辑都是电影剪辑的一个实体(Instance),从库中把电影剪辑拖出的过程就是电影剪辑实体化的过程,在场景中的电影剪辑实体都有一个也是唯一一个标识名(Instance Name),也就是对象的名字。
前面说过,电影剪辑可以相互嵌套,电影剪辑可以包含另一电影剪辑,这就存在一个层次结构的问题。现如果是要使放在电影剪辑甲内部的电影剪辑乙播放,那么就要给电影剪辑乙指定一个路径,这个路径中就要用到电影剪辑的实体名。电影剪辑实体名字在该电影剪辑属性面板中命名即可,如图3-4-4所示,给电影剪辑实体命名为myball。
图3-4-4 给电影剪辑实体命名
4.电影剪辑的路径
电影剪辑对象可以相互嵌套,这就像文件夹内部有另一个文件夹,这个文件夹内才有我们要找的文件,现在这个文件找到了,如果要告诉别人,就最好应该提供一个文件的路径。同样,在Flash中,现在ActionScript要找到嵌套在电影剪辑实体甲内的电影剪辑乙,也需要提供一个路径才可以找到。
5. 电影剪辑的属性
电影剪辑是对象,有自己的属性(Properties)和方法(Method),表3-5-1所示是一些常用的电影剪辑的属性。
表3-5-1 电影剪辑的属性
属性 说明
_alpha 电影剪辑实体的透明度,范围0-100
_currentframe 电影剪辑实体播放时播放磁头所在的影桢
_framesloaded 被载入的电影剪辑实体内部的影桢数,常和_totalframes一起使用
_height 电影剪辑实体的高
_name 电影剪辑实体名
_rotation 电影剪辑实体的角度值,范围为0—360
_target 电影剪辑实体的目标路径
_totalframes 电影剪辑实体内部的影桢,和_totalframes一起用于loading制作
_url 电影剪辑的url值
_visible 电影剪辑实体是否可见,分true和false两个值,true可见,false不可见
_width 电影剪辑实体的宽
_x 电影剪辑实体的x轴坐标值
_xscale 电影剪辑实体与原电影剪辑的x坐标方向的大小比值,范围为0-100
_y 电影剪辑实体的y轴坐标值
_yscale 电影剪辑实体与原电影剪辑的y坐标方向的大小比值,范围为0-100
6.电影剪辑的onClipEvent语句
动作脚本可以捆绑在MoiveClip的外部,也可以加为其内部的影桢上,捆绑在外部必须用到onClipEvent语句。onClipEvent语句是触发型语句,用以检查MoiveClip实体有没有被出发,如果触发的话就执行包含在语句内的代码。和在按牛上捆绑onMouseEvent语句一样,在动作脚本面板的普通模式下提供语句事件的类型参数面板。
图3-5-2onClipEvent语句事件类型参数面板
事件类型 说明
Load 电影剪辑实体载入电影场景后,触发事件
EnterFrame 播放到放置电影剪辑实体所在的影桢时,触发事件,执行onClipEvent内的代码,而不管该电影剪辑实体本身是播放还是停止。
unload 电影剪辑被卸载后,开始出发事件
Mouse down 鼠标按下时触发事件,执行onClipEvent内的代码,主要鼠标按下就触发,不要求是按在电影剪辑上
Mouse up 鼠标释放时触发事件,执行onClipEvent内的代码,主要鼠标释放就触发,不要求是从电影剪辑上释放
Mouse move 鼠标移动时触发事件,执行onClipEvent内的代码
Key down 键盘按下时触发事件,执行onClipEvent内的代码
Key up 键盘按下后释放触发事件,执行onClipEvent内的代码
Data LoadVariable或LoadMoive语句在其他电影剪辑实体上加载数据时,触发事件
从图3-5-2可知道onClipEvent语句事件类型有9种 如表3-5-2所示:
表3-5-2,onClipEvent语句事件类型
7. 电影剪辑的方法(Method)
电影剪辑有很多属性和方法,表3-6-1列出了一些常用电影剪辑的方法。
表3-6-1电影剪辑的方法
方法(Method) 说明 说明
MovieClip.attachMovie 从库中绑定一个电影剪辑到场景中
MovieClip.createEmptyMovieClip 新建一个空电影剪辑
MovieClip.createTextField 在电影剪辑中创建一文本
MovieClip.duplicateMovieClip 复制电影剪辑实体
MovieClip.getBytesLoaded 获取指定电影剪辑已下载的字节数
MovieClip.getBytesTotal 获取指定电影剪辑全部字节数
MovieClip.getDepth 获取指定电影剪辑的深度
MovieClip.gotoAndPlay 跳到指定电影剪辑内部的影桢并播放
MovieClip.gotoAndStop 跳到指定电影剪辑内部的影桢并停止
MovieClip.hitTest 检测指定的电影剪辑是否和其他电影剪辑和鼠标碰撞
MovieClip.loadMovie 载入电影剪辑
MovieClip.loadVariables 给指定电影剪辑加载外部变量
MovieClip.play 播放指定电影剪辑
MovieClip.removeMovieClip 删除指定电影剪辑
MovieClip.setMask 给指定电影剪辑设置遮罩效果
MovieClip.startDrag 开始拖曳电影剪辑
MovieClip.stop 停止播放指定电影剪辑
MovieClip.stopDrag 停止拖曳电影剪辑
MovieClip.unloadMovie 卸载指定电影剪辑
8. 给动画加点声音
实例1 控制物体运动
实例2抛体运动
实例3 下雨了
实例4 鼠标跟随
5.重力小球
Flash Mx和Flash5事件模式比较
无双
相信不少闪客们注意到macromeidia公司在介绍FlashMX增强的动作脚本(ActionScript)功能时有过这样的说法“new event model”——新的事件模式。这是什么意思?从Flash4到Flash5,在flash的教材和培训中我们第一次用上了动作脚本(actionscript和面对对象(oriented-object)的字眼,相信这也是flash由一个纯粹的动作制作软件演变成一个集成的多媒体开发环境的一个最重要因素,从flash5开始,我们可以随心所欲的用程序代码去控制电影剪辑的运动,做出很多客户端的其他程序语言不敢做的可怕的交互效果。笔者认为这是一件很惬意的事情,但是如果你是一个java或 web页面开发人员,你知道流行的面对对象的编程思想,你在用flash的动作脚本编写程序时可能感到有点的遗憾,你感觉到一个动画制作软件结合面对对象的思想给你变编程带来便利的时候,也感到flash5的actionscript不象java 和javascript那样完全的面对对象,为什么按纽不能是对象呢,还有在javascript中的表单(form)为什么不是对象呢。
Macromedia公司给我们的总是要比我们期望的要多。你现在可以在FashMX中找到答案。我们来看看对象的事件模式到底有什么样的改进。
Flash5的电影剪辑事件
· enterFrame
· load
· unload
· mouseDown
· mouseUp
· mouseMove
· keyDown
· keyUp
· data
电影剪辑作为对象拥有上面这些事件,我们只能把事件方法捆绑在一个电影剪辑对象实体在外部(无双注:不是电影剪辑时间线上的桢上),常用的表达方式:
onClipEvent (event) {
// code
}
Button Events in Flash 5ash 5的按纽事件
· press
· release
· releaseOutside
· rollOver
· rollOut
· dragOver
· dragOut
· keyPress
常用的表达方式
on (event) {
// code
}
在flash5和以前版本中,动作脚本代码只可以捆绑在帧(frame),按钮和电影剪辑上,其中按纽和电影剪辑实践代码只能捆绑在其外部。这就给我们带来一些问题:
· 不能把onClipEvent事件捆绑在电影剪辑自身内部
· 当电影剪辑运行时不能直接改变或删除事件句柄
· 不能从库(lirary)中绑定电影剪辑后,再给这个电影剪辑赋动作脚本
作为一个flash开发人员,这些问题相信不处不在,我们为了通过动作脚本用一个电影剪辑去控制另一个电影剪辑,有时候需要做空白的电影剪辑,这个电影剪辑仅仅是用于包含其他的电影剪辑,于是电影剪辑相互嵌套,父电影剪辑,子电影剪辑,层层关系,让我们感到象一个巨大的迷宫。FlashMX新的时事件模式让我们不再这样呆板的工作。看看FlashMX的事件模式。
FlashMX的事件模式
在FlashMX中,事件句柄仅仅是对象的的一个属性,flash5中的电影剪辑事件变成了电影剪辑对象的一个属性,电影剪辑事件处理可以用流行的点语法表达,比如做电影剪辑实体mc的。onEnterFrame事件的方法。可以是mc.onEnterFrame 。
有一个电影剪辑实体ball,用通过动作脚本让其自由转动,在flash5中可以在这个电影剪辑实体上捆绑下面代码:
// code on "ball" instance
onClipEvent (enterFrame) {
this._rotation += 5;
}
这样当电影剪辑每运行一桢时,有旋转5度。做到了让电影剪辑旋转的目的,但是这样的旋转是无终止的,我们不能通过代码让其在适当的时候停止。
在FlashMX新事件模式中我们可以把代码放在电影剪辑实体内部的桢上,可以捆绑下面代码
// code inside "ball" symbol
this.onEnterFrame = function () {
this._rotation += 5;
};
我们可以在电影剪辑的一桢上捆绑上面代码,而在另一桢上捆绑下面的代码
this.onEnterFrame = function () {
this._rotation -= 5;
};
在第三桢上捆绑下面代码使电影剪辑停止:
this.onEnterFrame = undefined;
再通过外部的脚本使电影剪辑停止在某一桢,这样就可以控制电影奸计是顺时针运动,逆时针运动还是停止运动。
Button and Movie Clip Events in Flash MX
Flash MX中的按纽和电影剪辑事件
让我们感到欣慰的是,在FlashMx中按纽终于作为一个对象来来处理了,和电影剪辑一样,可以从苦库中拖出按纽来创建按纽对象实体,按纽事件也作为对象的属性来处理。下面是点语法表达的按纽事件处理表达方式:
· Button.onDragOut
· Button.onDragOver
· Button.onKeyDown
· Button.onKeyUp
· Button.onKillFocus
· Button.onPress
· Button.onRelease
· Button.onReleaseOutside
· Button.onRollOut
· Button.onRollOver
· Button.onSetFocus
如果你足够细心的话,可以看到按纽增加了新的事件(属性?笔者的观念现在还没有改变过来,注意以后千万叫属性,不叫事件:))))——focus--onSetFocus 和onKillFocus.
下面是全部的电影剪辑事件(属性?)
· MovieClip.onData
· MovieClip.onDragOut
· MovieClip.onDragOver
· MovieClip.onEnterFrame
· MovieClip.onKeyDown
· MovieClip.onKeyUp
· MovieClip.onKillFocus
· MovieClip.onLoad
· MovieClip.onMouseDown
· MovieClip.onMouseMove
· MovieClip.onMouseUp
· MovieClip.onPress
· MovieClip.onRelease
· MovieClip.onReleaseOutside
· MovieClip.onRollOut
· MovieClip.onRollOver
· MovieClip.onSetFocus
· MovieClip.onUnload
同样增加了新的事件句柄onPress 和onRollOver.这有什么用呢?还记得我们在射击等游戏时候怎样去检测目标(电影剪辑)被击中吗?用的是hitTest()方法,现在可以用电影剪辑的onPress,onRelease,onRollOut实现同样的功能。
实例说明
Macromedia Flash Player与Nokia终端设备整合
为Nokia终端媒体用户提供丰富的web内容接入和体验
郝尔辛基—2002年2月6日—Nokia and Marromeida公司(Nasdaq: MACR)今天联合宣称Macromedia Flash Player将被整合到Nokia终端媒体设备,构建一种全新的与数字视频广播(DVB),Internet内容接入,个人视频录音机(PVR)无缝结合的娱乐媒体组合。Nokia多媒体终端机,是Nokia最近设计开发的第一个针对家庭环境的用户设备,它把家庭电视转变为一个多功能的娱乐集成环境,整合了数字电视的所有功能以及把Internet内容接入到家庭娱乐环境。其技术是以开放源代码技术(Open Source Technologies),比如liunx为基础构架。Macromedia 和 Nokia的合作使全球超过一百万的Maromedia Flash 设计师和程序开发人员把他们现有的技术用在Nokia家庭娱乐集成环境的开发中。Macromedia Flash Player 提供最小的基于工业标准优于简单图形,MP3音频的多媒体(Rich Media)环境。为了提高Nokia多媒体终端机性能更好的释放用户的应用体验,Macromedia Flash能乘载广泛的应用体验和服务,包括互动广告,电子导航和个性化的商业服务。 “Nokia多媒体终端家庭娱乐平台能使用户获得和无缝接触周围无处不在的数字信息流。” Nokia多媒体终端产品部总经理Hanno Narjus说,“通过在Nokia多媒体终端机中整合Mzcromeida Flash Player ,用户能充分体验第一位的丰富网络内容,应用和服务。”“应用整合在基于开放标准的Nokia多媒体终端机上的Macromedia Flash Player,Macromedia和Nokia正在帮助开发者和数字媒体提供商用可能的方式制作和传递丰富的内容和应用给终端用户。”Macromedia公司副总裁Peter Meechan说,“Macromedia Flash功能的多样给数字媒体提供商对终端用户传递独特而丰富的交互内容和应用带来一个灵活的方式。”Nokia多媒体终端机目前在瑞典有应用,要知道更多的多媒体终端机的信息,请浏览网站: www.nokia.com/multimedia/mediaterminal.html. 关于 MACROMEDIAMacromedia(www.macromedia.com)使数以百万的设?..易澹琈acromedia 正在引导新一代丰富Internet 应用程序的发展,从根本上改进 Internet 带给用户的体验。关于 NOKIANokia是世界领先的移动电话通讯制造商。本着很强的行业经验,创造力,友好的用户关怀和确保信用解决,成为领先的移动电话和移动,固定和IP网络提供商。通过给Internet带来移动性,为公司创造了新的发展机遇和为人们的日常生活带来全新的活力和体验。
和公司告别,与Flash告别,下面是我给公司员工做Flash培训写的东东,现在没有用了,发给大家看看,以纪念我的过去的两年
————————————————
第2讲 动作脚本和交互动画
理解几个概念
1. 什么是动作脚本语言(ActionScript)
flash是基于网络的带交互属性的动画,和我们看的普通动画不一样,可以通过鼠标和键盘来和动画“对话”,比如点击按钮播放动画,鼠标拖曳动画图形等等,这些都是通过flash自带的动作脚本语言(ActionScript)实现的。按照Macromedia公司的说法, ActionScript是种基于对象的面对对象脚本语言。ActionScript和JavaScript(一种用于html页面交互的客户端脚本语言)一样采用了ECMA-262语法标准。如果是学过JavaScript,学习ActionScript将很容易。
上面的是一段写在书本上关于ActionScript的文字,大家大概了解一下就可以。没有必要很明白,只要明白ActionScript是用来使动画交互的语言。还有我要说明一下,我这里说的脚本语言和制作课件写的脚本不是一个概念。
2. 面对对象编程思想(OOP )
以前
早期的计算机语言,如FORTRAN、PASCAL、C等被称为过程语言(procedural languages),它们都是按一步一步的方式运行的,程序员将可重用的代码写成函数(functions)。过程语言的标志是函数的运用与数据结构(data structures)是没有联系的。
过程语言工作上一点问题都没有,但是它们也有缺点,一步一步运行的特性使程序员必须知道每一行程序的用途。(试想几十个人合作的程序,每个人都要读懂其他人写的程序,比自己写还要命)同时,它另一大弱点就是函数与数据结构没有关系。
之后
为解决这些问题,有伟大的面向对象(object orientation)概念的出现。
经典的C++、我们熟悉的JacaScript、还有我们更熟悉的ActionScript,都可以用结构函数(constructor functions)定义类(classes),将函数与数据结构联系了起来。(我们不要细究AS到底是面向对象语言,还是“面向符号语言”或“基于对象语言”,OO其实是一种编程的思想,而写AS时确实可以贯彻这个思想(虽然未必能完全彻底地)。关注的重点应该是AS中运用面向对象编程能为我们带来什么样的好处。)
一个构造函数(或称构造器),其实是一套指令用于定义该类的属性(properties)和方法(methods)。有了它你可以创建类的实例(instances),这些实例就称为对象(object)(大家搞清楚了,这时候instances和object就是指同一个东西)
下面再阐述一次最基本的概念:
* 类(Class):你创建的用于定义新的对象的数据类型。创建一个新的类,你需要创建一个构造函数先。
* 构造器(Constructor):用来定义一个类的属性与方法的函数
* 函数(Function)可复用的代码模块,可以通过参数接受数据,自身也可以返回数据
* 标识符(Identifier)用来标识变量、属性、对象、函数或者方法的名字,第一个字符是必须字母、下划线(_),或$。其他字符可以为字母、数字、下划线(_),或$
* 方法(Method):分配到对象上的成员函数。(chocobo:实现某些对对象操作的功能)
* 对象(Object):类的一个实例。每个实例包含构造器定义好的属性和方法,同时它可以包含追加进去的,不是类定义,这个实例特有的属性和方法。
* 属性(Property):定义一个对象的参数
再举个例子,更形象地说明问题。
我们要写构造函数来定义一个叫“鲨鱼”的类,这个类里面包括象“牙齿”、“尺寸”、“形状”、“食欲”等等属性,还包括“游泳”、“进食”和“捕猎”等等方法。
完成了构造函数,我们就有鲨鱼了大致蓝图。要得到一条新的鲨鱼,就创建一个类的实例,每一个实例就是每一条鲨鱼,它们拥有类似的属性(都有牙齿,都有鱼翅),但是它们的属性不一定一样,而且互相没有联系。
每一个对象还可以拥有独立的属性和方法,称为对象的extending。例如某一条鲨鱼它多了一个属性,叫“腿”(天,这举的什么例子啊,怪物~)。只有这条鲨鱼是有腿的,当然,定义鲨鱼的类时不需要这个属性,是后来这个对象里加上的。
在你设计好一个完整的类之后,你就不需要担心它了,你可以当它一个黑箱操作,你发信息进去,里面返回信息,而不需要理会和修改里面的任何内容。接是,你就可以在任何其他程序使用这个类,其他人不需了解该类里面的代码细节,他需要知道和你需写进文档的,只是如何使用它。(这就是OOP重要特性之一:封装性)
你一定想知道以上这些用FLASH是如何实现吧?FLASH内部的编程语言ActionScript,is a full object-oriented language based on ECMAscript.(这句我没翻照写了,XX公司可说明AS是完全的面向对象语言)。ECMAscript是一种脚本语言规范,其中最为大家所知的一种就是JavaScript。
AS里面有很多OO的重要特性,首先,它有很多的内建对象已经可以使用,从MC到XML都是(打开AS面板,NORMAL模式,OBJJECT那一栏就能找到)。其次,AS可以让你扩展对象的属性、方法。最后,AS还可以让你定义新的类。
3.ActionScript语法讲解
实例1怎样制作按狃
知识点:制作按钮,按钮内部的几个影桢的涵义,在按钮内部的影桢上放电影剪辑
实例2 拖曳动作
知识点:按钮函数语句 电影剪辑,面对对象编程思想,对象的实体等等
按钮事件类别
事件类型 函数
鼠标按下 on (press)
鼠标按下后释放 on (release)
鼠标在按钮上滑动 on (rollOver)
鼠标滑出按钮 on (rollOut)
鼠标释放并停在按钮外 on (releaseOutside)
鼠标拖曳并按钮上滑动 on (dragOver)
鼠标拖曳并滑出按钮 on (dragOut)
键盘控制按钮 on (keyPress )
实例3
知识点:简单动画播放控制函数
stop() 停止
play() 播放
gotoAndPlay() 跳到某一桢并播放
gotoAndStop() 跳到某一桢并停止
nextFrame() 跳到下一桢并停止
nextScene() 跳到下一场景并停止
prevFrame() 跳到前一桢并停止
prevScene() 跳到前一场景并停止
实例4 脚本控制物体运动
脚本控制物体运动
脚本控制物体运动
知识: 理解电影剪辑对象,桢循环
电影剪辑(Moive Clip)的属性
_alpha 透明度(0—100)
_height 高
_highquality 显示质量
_name 名称
_rotation 旋转角度
_visible 是否可见
_width 宽
_x x轴方向坐标值
_y y轴方向坐标值
实例5 下雨了
知识点:复制电影剪辑,函数的条件判断
Flash教学资源网站:
www.flashkit.com 顶级的flash教学资源网站,有大量的flash源文件,分类齐全,flash教程。声音/图形资源,是闪客必去的地方。
www.flashshock。com 国外flash设计高手的联盟网站,偏重于flash的网站设计,有经典的flash源文件资源,教程,最大的亮点是收集了大量的flash设计的网站,个个都是名家的经典之作。是设计师激发灵感和学习的乐园。
http://www.actionscripts.org/ flash程序设计资源网站,有源文件和教程
——————————————————————————————————————
优秀纯Flash网站:
http://www.2advanced.net/ 国内闪客尽力效仿的网站,很闪客中是一个优秀网站的典范。
http://www.digitalorganism.com/genesis/ 出色的DNA菜单设计,很高的技术含量,整个动画流畅动敢
http://www.digitalorganism.com/genesis/ Flash设计团队网站,大胆而成功的红的界面的应用,仿视窗界面风格设计,
应用了真实影视/广告动画片段,相信FlashMX的导入视频能力能把这种风格流行。
http://www.nrg.be/ 优秀的形状渐变的处理,大气的,有力量感觉的网站,配合出色的声音效果,已经是超出了普通网页的模式和风格。
http://www.matinee.co.uk/ Flash4时代的网站,出色的三维效果,对早期的web页面设计人员来说是革命性,颠覆了传统设计人员的web设计思维。从此web页面设计师都在尝试用flash。
优秀flash游戏网站:
http://web.tiscali.it/swed/aidroid_rn.html flash游戏网站,出色的界面和可玩性,所有flash游戏设计师看到后到感到黯然失色。
http://www.dpi.nl/site_nl/xtra/game/polar/ flash网络游戏的典范,技术含量很高,与后台语言的结合,对玩家成绩和资料处理,让人感到flash程序设计功能异常强大。
Flash第三方工具软件网站:
http://buraks.com/asv/ 大名鼎鼎的asv(一种针对flash文件的代码解析工具)的官方网站,有asv的帮助文件
http://www.swift3d.com/ Swift3D 的官方网站 这个就不用说了
http://www.vecta3d.com/ 第三方3D工具软件vecta3d的网站
http://www.flaxfx.com/ 第三方文本特效工具flaxfx网站
其他:
http://www.flashforward2002.com 国外flash电影节官方网站
第三讲 ActionScript深入应用
以下是一些概念和原理,是通往flash脚本编程必由之路
1. 面对对象编程(Object-Oriented Programme )
早期的计算机语言,如FORTRAN、BASIC、C等被称为过程语言(procedural languages),运行时都是逐行执行代码的,这样对于大量的代码来说对程序开发人员是个不小的考验——要理解程序代码必须读懂每一行代码。这样对于合作程序开发是一个致命的制约,总不能要求开发小组中的每一个成员从头到尾读懂代码。
后来为了解决这些问题,出现了对面向对象(object orientation)概念。在后来的程序语言中,比如跨平台的Java,经典的C++,网页上实现交互和特效的JavaSript,以及Flash内建的ActionScript都应用了面对对象的思想,都是面对对象程序语言。
面对对象是把所有一类的物体的相关信息组织起来,放在一个称为类(Class)的集合中,类的信息就称为属性(Properties)和方法(Method)。这就好象把“人”称为一个类,“人”是一个抽象的概念,而具体的人是实在存在的,那么每一个具体的人就是“人”这个类的对象,“人”这个类有一些通用的属性和方法,比如人能说话,能够繁衍后代 ,能直立行走。同样FlashMX中,ActionScrip把MoiveClip(电影剪辑),Sound(声音)和Color(色彩)等等归为一类,这些类的实体(Instance)就是对象,这些类,以电影剪辑为例,有一些属性比如_width(宽),_height(高),_visible(是否可视)等等和一些方法,比如attachMoive(从库中绑定电影剪辑),duplicateMoiveClip(复制电影剪辑)等等。对象作为类的实体化(Instancing)就有了该类的属性和方法。改变对象的属性和执行对象方法就是一种基于对象的行为。ActionScript和JavaScript一样都是采用了ECMA_262(欧洲计算机制造协会)的语法标准,
学过JavaScript的人很容易学习ActionScript。
2.基本脚本函数
如果是想让动画播放到某一桢停止,或动作由某一桢跳到另一桢并播放或停止,用什么函数语句控制?使动画播放或停止是常见的动画控制,而用来控制的函数语句也是常用的,为了便于区别,我们把它们归为基本脚本函数。常用的基本脚本函数和功能如表3-4-1:
函数语句 功能
gotoAndStop() 播放磁头到某一影桢并停止
gotoAndPlay() 播放磁头到某一影桢并播放
nextFrame() 跳到下一影桢并停止
nextScene() 跳到下一场景开始播放
Play() 播放
Stop() 停止
prevFrame() 跳到前一影桢并停止
prevScene() 跳到前一场景并播放
stopAllSounds() 停止播放动画中所有声音
表3-4-1基本脚本函数语句
上面函数语句中其中gotoAndStop()和gotoAndPlay()有参数,其他的没有参数,直接写入即可。而gotoAndStop()和gotoAndStop()要参数设置,图3-4-3:
图3-4-3 goto语句的参数设置
两个函数的语法参数设置很相似,以为gotoAndStop()说明:
语法:gotoAndStop( scene ,frame)参数说明:Scene: 跳到某一场景 current scence: 当前场景 next scence: 下一个场景previous scence: 上一个场景Type:目标桢在时间轴上的位置和名称。Frame Number: 目标桢在时间轴的位置 Frame lable : 目标桢的名称 Expression: 通过算术表达式表示目标桢 Next Frame: 跳到下一影桢 Previous Frame: 跳到上一影桢 Frame: 目标桢的位置和名称
基本脚本函数在Flash4以后(包括Flash4)的播放器(Flash Player)都支持,不用考虑函数在播放器中是否能执行的问题。
3。深入理解电影剪辑
在前面的章节中讲过电影剪辑是“小电影”,是动画设计师最常应用的设计元素。而在Flash脚本程序开发人员心目中,电影剪辑是最常用的对象之一,也是唯一图形化的对象。怎么理解呢?Flash脚本程序开发人员是用ActionScript来工作的,ActionScript是基于对象的脚本语言,所以在他们的眼中最精美的电影剪辑首先是一个电影剪辑,然后才是图形。从库中拖出的放置场景中的电影剪辑都是电影剪辑的一个实体(Instance),从库中把电影剪辑拖出的过程就是电影剪辑实体化的过程,在场景中的电影剪辑实体都有一个也是唯一一个标识名(Instance Name),也就是对象的名字。
前面说过,电影剪辑可以相互嵌套,电影剪辑可以包含另一电影剪辑,这就存在一个层次结构的问题。现如果是要使放在电影剪辑甲内部的电影剪辑乙播放,那么就要给电影剪辑乙指定一个路径,这个路径中就要用到电影剪辑的实体名。电影剪辑实体名字在该电影剪辑属性面板中命名即可,如图3-4-4所示,给电影剪辑实体命名为myball。
图3-4-4 给电影剪辑实体命名
4.电影剪辑的路径
电影剪辑对象可以相互嵌套,这就像文件夹内部有另一个文件夹,这个文件夹内才有我们要找的文件,现在这个文件找到了,如果要告诉别人,就最好应该提供一个文件的路径。同样,在Flash中,现在ActionScript要找到嵌套在电影剪辑实体甲内的电影剪辑乙,也需要提供一个路径才可以找到。
5. 电影剪辑的属性
电影剪辑是对象,有自己的属性(Properties)和方法(Method),表3-5-1所示是一些常用的电影剪辑的属性。
表3-5-1 电影剪辑的属性
属性 说明
_alpha 电影剪辑实体的透明度,范围0-100
_currentframe 电影剪辑实体播放时播放磁头所在的影桢
_framesloaded 被载入的电影剪辑实体内部的影桢数,常和_totalframes一起使用
_height 电影剪辑实体的高
_name 电影剪辑实体名
_rotation 电影剪辑实体的角度值,范围为0—360
_target 电影剪辑实体的目标路径
_totalframes 电影剪辑实体内部的影桢,和_totalframes一起用于loading制作
_url 电影剪辑的url值
_visible 电影剪辑实体是否可见,分true和false两个值,true可见,false不可见
_width 电影剪辑实体的宽
_x 电影剪辑实体的x轴坐标值
_xscale 电影剪辑实体与原电影剪辑的x坐标方向的大小比值,范围为0-100
_y 电影剪辑实体的y轴坐标值
_yscale 电影剪辑实体与原电影剪辑的y坐标方向的大小比值,范围为0-100
6.电影剪辑的onClipEvent语句
动作脚本可以捆绑在MoiveClip的外部,也可以加为其内部的影桢上,捆绑在外部必须用到onClipEvent语句。onClipEvent语句是触发型语句,用以检查MoiveClip实体有没有被出发,如果触发的话就执行包含在语句内的代码。和在按牛上捆绑onMouseEvent语句一样,在动作脚本面板的普通模式下提供语句事件的类型参数面板。
图3-5-2onClipEvent语句事件类型参数面板
事件类型 说明
Load 电影剪辑实体载入电影场景后,触发事件
EnterFrame 播放到放置电影剪辑实体所在的影桢时,触发事件,执行onClipEvent内的代码,而不管该电影剪辑实体本身是播放还是停止。
unload 电影剪辑被卸载后,开始出发事件
Mouse down 鼠标按下时触发事件,执行onClipEvent内的代码,主要鼠标按下就触发,不要求是按在电影剪辑上
Mouse up 鼠标释放时触发事件,执行onClipEvent内的代码,主要鼠标释放就触发,不要求是从电影剪辑上释放
Mouse move 鼠标移动时触发事件,执行onClipEvent内的代码
Key down 键盘按下时触发事件,执行onClipEvent内的代码
Key up 键盘按下后释放触发事件,执行onClipEvent内的代码
Data LoadVariable或LoadMoive语句在其他电影剪辑实体上加载数据时,触发事件
从图3-5-2可知道onClipEvent语句事件类型有9种 如表3-5-2所示:
表3-5-2,onClipEvent语句事件类型
7. 电影剪辑的方法(Method)
电影剪辑有很多属性和方法,表3-6-1列出了一些常用电影剪辑的方法。
表3-6-1电影剪辑的方法
方法(Method) 说明 说明
MovieClip.attachMovie 从库中绑定一个电影剪辑到场景中
MovieClip.createEmptyMovieClip 新建一个空电影剪辑
MovieClip.createTextField 在电影剪辑中创建一文本
MovieClip.duplicateMovieClip 复制电影剪辑实体
MovieClip.getBytesLoaded 获取指定电影剪辑已下载的字节数
MovieClip.getBytesTotal 获取指定电影剪辑全部字节数
MovieClip.getDepth 获取指定电影剪辑的深度
MovieClip.gotoAndPlay 跳到指定电影剪辑内部的影桢并播放
MovieClip.gotoAndStop 跳到指定电影剪辑内部的影桢并停止
MovieClip.hitTest 检测指定的电影剪辑是否和其他电影剪辑和鼠标碰撞
MovieClip.loadMovie 载入电影剪辑
MovieClip.loadVariables 给指定电影剪辑加载外部变量
MovieClip.play 播放指定电影剪辑
MovieClip.removeMovieClip 删除指定电影剪辑
MovieClip.setMask 给指定电影剪辑设置遮罩效果
MovieClip.startDrag 开始拖曳电影剪辑
MovieClip.stop 停止播放指定电影剪辑
MovieClip.stopDrag 停止拖曳电影剪辑
MovieClip.unloadMovie 卸载指定电影剪辑
8. 给动画加点声音
实例1 控制物体运动
实例2抛体运动
实例3 下雨了
实例4 鼠标跟随
5.重力小球
Flash Mx和Flash5事件模式比较
无双
相信不少闪客们注意到macromeidia公司在介绍FlashMX增强的动作脚本(ActionScript)功能时有过这样的说法“new event model”——新的事件模式。这是什么意思?从Flash4到Flash5,在flash的教材和培训中我们第一次用上了动作脚本(actionscript和面对对象(oriented-object)的字眼,相信这也是flash由一个纯粹的动作制作软件演变成一个集成的多媒体开发环境的一个最重要因素,从flash5开始,我们可以随心所欲的用程序代码去控制电影剪辑的运动,做出很多客户端的其他程序语言不敢做的可怕的交互效果。笔者认为这是一件很惬意的事情,但是如果你是一个java或 web页面开发人员,你知道流行的面对对象的编程思想,你在用flash的动作脚本编写程序时可能感到有点的遗憾,你感觉到一个动画制作软件结合面对对象的思想给你变编程带来便利的时候,也感到flash5的actionscript不象java 和javascript那样完全的面对对象,为什么按纽不能是对象呢,还有在javascript中的表单(form)为什么不是对象呢。
Macromedia公司给我们的总是要比我们期望的要多。你现在可以在FashMX中找到答案。我们来看看对象的事件模式到底有什么样的改进。
Flash5的电影剪辑事件
· enterFrame
· load
· unload
· mouseDown
· mouseUp
· mouseMove
· keyDown
· keyUp
· data
电影剪辑作为对象拥有上面这些事件,我们只能把事件方法捆绑在一个电影剪辑对象实体在外部(无双注:不是电影剪辑时间线上的桢上),常用的表达方式:
onClipEvent (event) {
// code
}
Button Events in Flash 5ash 5的按纽事件
· press
· release
· releaseOutside
· rollOver
· rollOut
· dragOver
· dragOut
· keyPress
常用的表达方式
on (event) {
// code
}
在flash5和以前版本中,动作脚本代码只可以捆绑在帧(frame),按钮和电影剪辑上,其中按纽和电影剪辑实践代码只能捆绑在其外部。这就给我们带来一些问题:
· 不能把onClipEvent事件捆绑在电影剪辑自身内部
· 当电影剪辑运行时不能直接改变或删除事件句柄
· 不能从库(lirary)中绑定电影剪辑后,再给这个电影剪辑赋动作脚本
作为一个flash开发人员,这些问题相信不处不在,我们为了通过动作脚本用一个电影剪辑去控制另一个电影剪辑,有时候需要做空白的电影剪辑,这个电影剪辑仅仅是用于包含其他的电影剪辑,于是电影剪辑相互嵌套,父电影剪辑,子电影剪辑,层层关系,让我们感到象一个巨大的迷宫。FlashMX新的时事件模式让我们不再这样呆板的工作。看看FlashMX的事件模式。
FlashMX的事件模式
在FlashMX中,事件句柄仅仅是对象的的一个属性,flash5中的电影剪辑事件变成了电影剪辑对象的一个属性,电影剪辑事件处理可以用流行的点语法表达,比如做电影剪辑实体mc的。onEnterFrame事件的方法。可以是mc.onEnterFrame 。
有一个电影剪辑实体ball,用通过动作脚本让其自由转动,在flash5中可以在这个电影剪辑实体上捆绑下面代码:
// code on "ball" instance
onClipEvent (enterFrame) {
this._rotation += 5;
}
这样当电影剪辑每运行一桢时,有旋转5度。做到了让电影剪辑旋转的目的,但是这样的旋转是无终止的,我们不能通过代码让其在适当的时候停止。
在FlashMX新事件模式中我们可以把代码放在电影剪辑实体内部的桢上,可以捆绑下面代码
// code inside "ball" symbol
this.onEnterFrame = function () {
this._rotation += 5;
};
我们可以在电影剪辑的一桢上捆绑上面代码,而在另一桢上捆绑下面的代码
this.onEnterFrame = function () {
this._rotation -= 5;
};
在第三桢上捆绑下面代码使电影剪辑停止:
this.onEnterFrame = undefined;
再通过外部的脚本使电影剪辑停止在某一桢,这样就可以控制电影奸计是顺时针运动,逆时针运动还是停止运动。
Button and Movie Clip Events in Flash MX
Flash MX中的按纽和电影剪辑事件
让我们感到欣慰的是,在FlashMx中按纽终于作为一个对象来来处理了,和电影剪辑一样,可以从苦库中拖出按纽来创建按纽对象实体,按纽事件也作为对象的属性来处理。下面是点语法表达的按纽事件处理表达方式:
· Button.onDragOut
· Button.onDragOver
· Button.onKeyDown
· Button.onKeyUp
· Button.onKillFocus
· Button.onPress
· Button.onRelease
· Button.onReleaseOutside
· Button.onRollOut
· Button.onRollOver
· Button.onSetFocus
如果你足够细心的话,可以看到按纽增加了新的事件(属性?笔者的观念现在还没有改变过来,注意以后千万叫属性,不叫事件:))))——focus--onSetFocus 和onKillFocus.
下面是全部的电影剪辑事件(属性?)
· MovieClip.onData
· MovieClip.onDragOut
· MovieClip.onDragOver
· MovieClip.onEnterFrame
· MovieClip.onKeyDown
· MovieClip.onKeyUp
· MovieClip.onKillFocus
· MovieClip.onLoad
· MovieClip.onMouseDown
· MovieClip.onMouseMove
· MovieClip.onMouseUp
· MovieClip.onPress
· MovieClip.onRelease
· MovieClip.onReleaseOutside
· MovieClip.onRollOut
· MovieClip.onRollOver
· MovieClip.onSetFocus
· MovieClip.onUnload
同样增加了新的事件句柄onPress 和onRollOver.这有什么用呢?还记得我们在射击等游戏时候怎样去检测目标(电影剪辑)被击中吗?用的是hitTest()方法,现在可以用电影剪辑的onPress,onRelease,onRollOut实现同样的功能。
实例说明
Macromedia Flash Player与Nokia终端设备整合
为Nokia终端媒体用户提供丰富的web内容接入和体验
郝尔辛基—2002年2月6日—Nokia and Marromeida公司(Nasdaq: MACR)今天联合宣称Macromedia Flash Player将被整合到Nokia终端媒体设备,构建一种全新的与数字视频广播(DVB),Internet内容接入,个人视频录音机(PVR)无缝结合的娱乐媒体组合。Nokia多媒体终端机,是Nokia最近设计开发的第一个针对家庭环境的用户设备,它把家庭电视转变为一个多功能的娱乐集成环境,整合了数字电视的所有功能以及把Internet内容接入到家庭娱乐环境。其技术是以开放源代码技术(Open Source Technologies),比如liunx为基础构架。Macromedia 和 Nokia的合作使全球超过一百万的Maromedia Flash 设计师和程序开发人员把他们现有的技术用在Nokia家庭娱乐集成环境的开发中。Macromedia Flash Player 提供最小的基于工业标准优于简单图形,MP3音频的多媒体(Rich Media)环境。为了提高Nokia多媒体终端机性能更好的释放用户的应用体验,Macromedia Flash能乘载广泛的应用体验和服务,包括互动广告,电子导航和个性化的商业服务。 “Nokia多媒体终端家庭娱乐平台能使用户获得和无缝接触周围无处不在的数字信息流。” Nokia多媒体终端产品部总经理Hanno Narjus说,“通过在Nokia多媒体终端机中整合Mzcromeida Flash Player ,用户能充分体验第一位的丰富网络内容,应用和服务。”“应用整合在基于开放标准的Nokia多媒体终端机上的Macromedia Flash Player,Macromedia和Nokia正在帮助开发者和数字媒体提供商用可能的方式制作和传递丰富的内容和应用给终端用户。”Macromedia公司副总裁Peter Meechan说,“Macromedia Flash功能的多样给数字媒体提供商对终端用户传递独特而丰富的交互内容和应用带来一个灵活的方式。”Nokia多媒体终端机目前在瑞典有应用,要知道更多的多媒体终端机的信息,请浏览网站: www.nokia.com/multimedia/mediaterminal.html. 关于 MACROMEDIAMacromedia(www.macromedia.com)使数以百万的设?..易澹琈acromedia 正在引导新一代丰富Internet 应用程序的发展,从根本上改进 Internet 带给用户的体验。关于 NOKIANokia是世界领先的移动电话通讯制造商。本着很强的行业经验,创造力,友好的用户关怀和确保信用解决,成为领先的移动电话和移动,固定和IP网络提供商。通过给Internet带来移动性,为公司创造了新的发展机遇和为人们的日常生活带来全新的活力和体验。