Flash学习记录.docx
- 文档编号:12012427
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:18
- 大小:29.63KB
Flash学习记录.docx
《Flash学习记录.docx》由会员分享,可在线阅读,更多相关《Flash学习记录.docx(18页珍藏版)》请在冰豆网上搜索。
Flash学习记录
1.委托是事件的处理函数的声明。
2.【】一般标语的转化都要加上从全透明到alpha值为0,这样不会显得突兀。
3.文字转化为元件后,做动画更好看。
4.转化会元件是很好的习惯,便于在库中调用。
元件还可以在脚本中通过实例名调用,普通插入的图片和文字是不行的。
5.代码与界面切换快捷键F9
6.Flash数组索引从0开始,用中括号引用,vara:
Array=["item0","item1","item2"];
a)Flash代码语法规则与javascript类似
7.获取场景的大小
a)stage.stageWidth
b)stage.stageHeight
8.读取FlashVars的值
a)as2:
vars=_root.url;(也可以不用加_root)
b)as3:
this.stage.loaderInfo.parameters["url"]
9.写在帧里的代码只执行一次,再次播放这个帧时不会再执行,要想再执行,要代码放入该帧的onEnterFrame()=function(){}函数里面。
10.Flash的代码是解释执行的,有eval函数
11.getURL(“”,“_blank”);
12.myMc.loadMovie(“
13.Flash声明变量:
a)vara:
String=”abc”;
b)varb:
Array=newArray(10);
c)varc:
Number=0;
d)varb:
Array={“”,“”};
14.引用库
a)importmx.transitions.*;
15.字符串拆分
a)varaPics:
Array=sPicList.split(";");
16.置顶mx.behaviors.DepthControl.bringToFront(PicFrame);//importmx.transitions.*;
17.设置渐变
a)aTransitions[0]={type:
Blinds,direction:
Transition.IN,duration:
2,easing:
None.easeNone,numStrips:
20,dimension:
0};
b)aTransitions[12]={type:
Wipe,direction:
Transition.IN,duration:
2,easing:
None.easeNone,startPoint:
8};
c)mx.transitions.TransitionManager.start(myMc,aTransitions[iRandEffectId]);
18.根据剪辑名称字符串获取剪辑变量
a)eval(“mc”+i);
19.var用于定义局部变量。
文本框分动态和静态两种,动态文本框中可以关联变量(不是通过文本框的实例名关联,而是有一个“variable”属性。
20.经典:
21.用过Flash的人都知道,Flash有个重要的概念叫影片剪辑,简称mc,它几乎是Flash一切动画的基础,Flash这东西,一言以蔽之,就是如何让很多影片剪辑在界面里按你想象的运动起来,滑动、变大、变小、旋转、显示、消失……就是这些最基础的运动,构成了Flash,甚至说任何图形界面的软件的最基本的交互和展现形式。
在关键帧时代,我们用关键帧来进行这些最基本的事情,在as时代,我们用as来做,如此而已。
a)在早期的Flash版本里边,我们都知道,按钮司交互,影片剪辑管运动,所以以前大家做一个Flash,思路很简单,我们需要一个东西有交互行为,说白了就是我点点点,他动动动,就是直接做个按钮,放到库里,再拖动场景里用;我需要一个东西动起来,直接建一个影片剪辑,放到场景里,再拖到场景里用。
在as时代,我们用as来做。
22.Flash是区分大小写的。
23.Flash的深度:
用过Flash或PS的人都知道,有一个层的概念,上面的层会盖住下面的层,深度也是一个类似的概念,深度值越大,越在上面,深度值越小的在下面。
a)有两点与层不一样,需要注意:
i.一个深度上只能有一个东西存在。
如果有两个的话,后面建立的会覆盖掉前面的。
ii.所有在场景里通过绘图工具或拖拽而不是程序建立的对象,默认处于第0层,也就是说你用程序建立的影片剪辑都会盖住处于时间轴上的那些对象。
iii.所以如果你已经在一个深度上建立了一个影片剪辑,再建立一个的时候要换一个深度。
24.发布:
Enter+CTRL
25.影片剪辑可以是个容器,像篮子盛苹果和梨一样。
一下子把很多对象同时移动。
26.如果不用代码直接可以把库里的元件拖到场景中来,这个动作用代码实现就是attachMovie。
先是右键点击元件,再选链接->为ActionScript导出,取个名字。
27.循环使得从此,腰不酸了,背不疼了,腿也不抽筋了。
28.Flash之所以能够在动画领域一骑绝尘,靠的可是出类拔萃的动画能力,如何用as实现动画才是问题的关键。
29.帧是动画里的一个概念,说简单点就是电影里的一格,见过电影胶片的人都知道,电影是由一格一格的画面组成的。
电影镜头靠在极短的时间里播放这些画面而使镜头连贯成运动的影像,具体说是一秒钟24格。
Flash里帧频是可以自定义的。
a)那么如果我们使用as,又如何让影片剪辑动起来呢?
很简单,只要我们修改影片剪辑的属性就行了。
用as写动画,让我这个会编程序的人实现动画很简单,mc有_x和_y的属性,比如我想让影片剪辑myMc从左侧横着飞进场景的话,只要控制_x使它从一个负值变成一个正值就好了。
同理,渐隐渐现只要修改透明度_alpha就好了,旋转只要控制_rotation属性就好了,放大只要控制width,_xscale就好了。
b)我们只要找到一个能使程序以帧频的频率运行的方法就好了。
这个方法就是OnEnterFrame。
i.myMc._x=0;
ii.onEnterFrame=function(){
iii.myMc._x=myMc._x+1;
iv.}
c)这里有个问题onEnterFrame外面的代码如myMc._x难道不是在每次进入帧的时候运行的吗?
30.在别的编程语言里,等待某个变量改变,一般用循环语句来等待。
这些循环语句一般是if...else、do...loop、for...next等等。
这些在AS里也有,但是你自己试试看,一旦使用这些循环,一旦循环次数较多,很容易使影片停顿,甚至进入死循环。
a)在AS里,一般不用循环语句来监测变量。
而是用EnterFrame和stop配合来实现的。
31.默认情况下,Flash文档库中的影片剪辑元件实例不能以动态方式创建(即只使用ActionScript创建)。
这是因为导出供ActionScript使用的每个元件都会增加SWF文件的大小,而且众所周知,有些元件可能不适合在舞台上使用。
因此,为了使元件可以在ActionScript中使用,必须指定为ActionScript导出该元件。
a)为ActionScript导出元件:
b)在“库”面板中选择该元件并打开其“元件属性”对话框。
c)必要时激活“高级”设置。
d)在“链接”部分中,激活“为ActionScript导出”复选框。
e)这样做的目的是因为有些元件在发布时是不用导出的,为了减少发布的文件的大小,要先声明一下哪些组件是需要导出的(代码中用到的,如果是直接拖到场景中的,是不需要声明的)
32.优秀的Flash动画中,影片剪辑的移动为什么看起来更流畅呢?
因为它更符合生活中的运动规律,说白了两个字-缓冲,想一想汽车怎么停下来的,速度逐渐减慢,然后停下来,任何事物在改变运动状态的时候,都是逐渐加速或减速的,所以要想你的动画看起来好看,你必须让动画学会缓冲才行。
33.匀速运动不美,如果你想让x轴坐标为500的时候逐渐减速停下来,那你这样写
a)myMc._x+=(500–myMc._x)/10;
b)这就是减速运动原理
c)加速运动原理是一样的,这里就不讲了,自己琢磨一下吧。
d)当然还有一件事情需要提醒一下,就是上次我们提到的,在onEnterFrame停止的时候,一定要记得清除掉循环,避免一直占用CPU资源
i.myMc._x=0;
ii.onEnterFrame=function(){
iii.myMc._x+=(500-myMc._x)/10;
iv.If(Match.abs(500-myMc._x)<0.5){
v.Deletethis.onEnterFrame;
vi.myMc._x=500;
vii.}
viii.}
e)这就是所谓的缓冲运动,当然还有更复杂的运动形式:
如钟摆运动,回弹运动等等。
34.据说,这个世界是由懒人创造的,因为实在不愿走路,所以我们发明了汽车,因为实在懒得提东西,我们发明了起重机,因为实在懒得计算,所以才有了计算机,实在懒得不愿意写汇编程序,懒人才去发明了高级语言。
因为实在懒得去想怎么缓动,于是才有了….
a)对了,是flashas2的缓动类。
b)Flashas2里与缓动有关的有两个兄弟:
一个叫tween类,另一个叫easing类。
c)有了这两兄弟,你就能做出让路人甲佩服的动画了。
35.Trace用于测试时调试输出变量。
36.一.flashas2.0与as3.0的本质区别?
37.二.flash当中的变量类型和定义方法与java,C++有那些相同和不同。
38.三.初学flex编程应该怎样学?
从什么地方开始。
a)问题一:
b)首先说下as2,as2实际上是as1的升级版,引入一面向对象的概念,但并不是完全面向对象的语言,只是在编译过程中支持OOP语法。
as2的面向对象虽然不全面,但是却是首次将OOP带到了FLASH,而AS3是一个完全基本OOP的标准化面向对象语言,最重要的就是as3不是as2的简单升级,而完全是两种思想的语言。
可以说,as3全面采用了面向对象的思想,而as2则仍然停留在面向过程阶段,举个例子,就像VB和C#的感觉。
c)所以as3绝不是as2的升级版,在as3里,可以看到java和c#的影子,确实,这三种语言大部分思想都是一致的,只有一些小的区别,比如as3引入了命名空间的概念,但是不支持比如委托,在包封装及外部访问上也引入了一些新概念。
d)在编译阶段,as2采用的是AVM1(actionScriptvitualmachine),而as3采用的是AVM2。
新一代虚拟机采用了OOP思想,在执行速度上比起avm1也快了10倍。
还提供了异常处理。
以前我们在使用AS2时,一旦出错,AVM1选择的是静默失败,让人根本不知道什么地方出错了,会浪费大量的时间去查错,而AVM2与目前主流的编译器一样,会有异常处理,运行出错会输出错误提示,工作效率大大提高。
如果做个对比,我想说,AVM1就是大刀长矛,而AVM2就是手枪,大刀和长矛也能杀敌,但是只在面对弱智的敌人才能发挥作用,面对一个大型项目,不用点现代化工具是不行滴。
e)as2与as3的部分区别,只说一些大的区别,小的不同太多,就不谈了:
f)1.运行时异常机制处理,这个刚才说过了。
g)2.事件机制,这也是很多人拿起as3就不知所措的原因,初学者会发现连一个按钮点击的方法都写不出来。
实际上as3的事件机制采用的是监听的方式,和as2onClipEvent不同,as3里所有的事件都是需要触发器,监听器,执行器三种结构的,这样做的好处就是使得这个语言非常的坚强,非常大标准化。
不像as2,奇形怪状的代码漫天飞,可以这样写,也可以那样写,代码变得繁复难懂,可读性太差,执行效率也大大降低。
要特别说明的是,as3的所有事件都直接继承event对象,而event是直接继承自BOSS类object,结构多么完美。
所以在as3中,所有的事件都继承自相同的父亲,结构相同,提高了重用性。
h)3.封装性,这是as3与as2最大的不同,as3引入了封装的概念,使得程序安全性大大提高,各个对象之间的关系也通过封装,访问控制而得以确定,避免了不可靠的访问给程序带来的意外产生。
i)4.XML,我觉得这是最令人激动人心的改变,现在as3程序员可以很轻松也很自豪的说,我们是使用XML人群中最快乐的人。
AS2时代对XML的存取仍然需要解析,而AS3则创新的将XML也视作一个对象,存取XML就像存取普通对象的属性一样方便,用点语法就可以,无疑大大提高了效率。
j)(写了这么多,如果楼主不给分,我就死给你看!
)
k)5.最关键的一点,容器的概念,AS3采用了容器的思想,告别了as2一个MovieClip打天下的局面。
对于as2程序员来说,可能不能理解,我mc用的好好的,干嘛不让我用啊。
但是当你真正的了解as3的思想的时候,当你真主的体会到OOP的好处的时候,你会觉得as3的容器的思想的完全正确的。
as2时代,我们做什么都用mc,而as2时代的mc也是直接继承自object,这给了mc极大的权限,极其多大方法属性,而有时我们只需要放一个背景图,这样做就造成了极大的浪费。
说实在话as2和as3比起来就是浪费之神,所以as2编出的swf绝对比as3编译出来的swf要大上几倍。
as3把所有你用到的显示对象都分开,mc的属性方法都被瓜分开来,举个例子,你去水果超市买水果,就肯定比直接去大型超市买要方便,更节约时间,时间就是金钱,那就是很大的节省。
l)当然还有很多不同,如果想继续交流,可以联系我。
m)问题二:
n)以as3为例,在变量命名方便基本和javac#一样,都分为值类型和引用类型,唯一有一点不太相同,不过在使用过程中,不对使用造成影响。
java的值类型都不是对象,c#的值类型都是system下的对象,而且都是别称,如int其实就是System.Int32,而as3中完全遵循OOP,一切都是对象,每个值类型都是对象,比如int就有int类。
但在使用过程中都是一样的,从这里也可以看出OOP的好处,你不需要关心底层的变化,使用的时候也完全感觉不到底层存在什么区别。
o)问题三:
p)关于学习的问题,我的建议是,学新东西,首先要有毅力,不要去看电子书,要买实体书看,要做笔记,能不能学会一种知识,不是从什么地方学的问题,而是学习方法的问题。
学习方法不对,不管有多好的老师也教不出好学生。
学习的问题我也和很多热爱学习的同志们说过,关键靠自己。
q)好的学习方法,我总结大致因该具备以下条件:
r)1.坚持看书,一本书至少看过3遍(注:
指实体书,而非电子书)
s)2.坚持做笔记,加强记忆。
t)3.如果是初学者,我建议抄程序,培养程序感,必要时可以背默关键字。
39.遮罩层的作就就是将其下面的图片(被遮罩层)遮住。
a)遮罩层可以看作一块档板,在其中绘制的任何图形都相当于把这部分挖去,可以通过挖去的窟窿看到下面图层的内容。
b)遮罩动画中的遮罩层和被遮罩层只有在锁定的情况下才能预览。
40.遮罩:
Mask:
遮罩层可以看作一块档板,在其中绘制的任何图形都相当于把这部分挖去,可以通过挖去的窟窿看到下面图层的内容。
能遮的是没有画东西的地方。
41.很多软件版本有CS,CS是什么意思?
MX又是什么意思?
a)CS,是CreativeSuite的缩写,意思是创意组件(套件,套装)。
b)Adobe公司把Photoshop®CS,Illustrator®CS,InDesign®CS,GoLive®CS,andAcrobat®7.0ProfessionalsoftwarewithnewVersionCue®CS,AdobeBridge和AdobeStockPhotos所有这些软件组成了一个创意设计的环境,并命名为CreativeSuite(创意组件),这样,在给所有这些软件的新版本命名时都加上了后缀CS,最新的版本是CS2。
c)我们以前接触的FLASHMX系列\FLASH8.0都是Macromedia公司开发的,至该公司被Adobe公司收并后,对以前的版本进行了升级版本号也就用CS来表示了你所说的FLASHCS3,也是我们通常说的FLASH9.0,也是FLASH制作软件中的最新版.
d)“MX”究竟是什么意思呢?
到目前为止,还没有一个官方的证实,如果一定要认为是某个单词的缩写,那么可以把MacromediaExperience作为最好的答案。
42.做引导层动画的练习,开始没有按照引导层运动,原因是末端未吸附好,一定要将中心吸附到路径上。
修改中心点的方法是选中元件,点击变形工具,就可以移动小圆圈了,小圆圈代表元件的中心点,十字架代表注册点。
a)看不清楚引导线可以将场景放大
b)图片吸附到引导线时一定要准,位置不准确一定不行,可打开吸附作用(视图/贴紧/贴紧到对象)或控件栏上的磁铁.
43.做遮罩动画练习时犯的错误:
被遮罩层的文字要打散才有效果。
44.Actions可以在Button、MovieClip和Frame中设置。
45.一般来说,Flash主要响应3种事件,分别是鼠标事件、键盘事件和关键帧事件。
46.常用的按钮Flash已经提供了,在window/commanylibrary/Button中。
47.在不同的对象上(按钮,影片剪辑或帧)上点右键,选动作,弹出的窗口实际上是不一样的,窗口的标题说明了类型。
48.ActionScript3.0
a)ActionScript是由FlashPlayer中的ActionScript虚拟机(AVM)来执行的。
i.ActionScript代码通常被编译器编译成“字节码格式”,字节码嵌入SWF文件中,SWF文件由运行时环境FlashPlayer执行。
b)ActionScript3.0引入了密封类的概念。
密封类只能拥有在编译时定义的固定的一组属性和方法;不能添加其它属性和方法。
这使得编译时的检查更为严格,从而导致程序更可靠。
由于不要求每个对象实例都有一个内部哈希表,因此还提高了内存的使用率。
还可以通过使用dynamic关键字来实现动态类。
默认情况下,ActionScript3.0中的所有类都是密封的,但可以使用dynamic关键字将其声明为动态类。
c)ActionScript3.0使闭包方法可以自动记起它的原始对象实例。
此功能对于事件处理非常有用。
在ActionScript2.0中,闭包方法无法记起它是从哪个对象实例提取的,所以在调用闭包方法时将导致意外的行为。
mx.utils.Delegate类是一种常用的解决方法,但已不再需要。
d)ActionScript2.0拥有单一数值类型Number,它是一种双精度浮点数。
ActionScript3.0包含int和uint类型。
e)事件和错误事件都位于flash.events包中。
f)处理动态数据和内容
i.ActionScript3.0包含用于加载和处理Flash应用程序中的资源和数据的机制,这些机制在API中是直观的并且是一致的。
新增的Loader类提供了一种加载SWF文件和图像资源的单一机制,并提供了一种访问已加载内容的详细信息的方法。
URLLoader类提供了一种单独的机制,用于在数据驱动的应用程序中加载文本和二进制数据。
Socket类提供了一种以任意格式从/向服务器套接字中读取/写入二进制数据的方式。
g)对于正在下载的数据而言,可使用URLStream类(由URLLoader实现)在下载数据的同时访问原始二进制数据。
使用ByteArray类可优化二进制数据的读取、写入以及处理。
h)ActionScript3.0包含一个用于所有与文本相关的API的flash.text包。
TextLineMetrics类为文本字段中的一行文本提供精确度量;它取代了ActionScript2.0中的TextField.getLineMetrics()方法。
TextField类包含许多有趣的新低级方法,它们可以提供有关文本字段中的一行文本或单个字符的特定信息。
这些方法包括getCharBoundaries()(返回一个表示字符边框的矩形)、getCharIndexAtPoint()(返回指定点处字符的索引)以及getFirstCharInParagraph()(返回段落中第一个字符的索引)。
行级方法包括getLineLength()(返回指定文本行中的字符数)和getLineText()(返回指定行的文本)。
新增的Font类提供了一种管理SWF文件中的嵌入字体的方法。
i)计算机程序的用途
i.首先,对计算机程序的概念及其用途有一个概念性的认识是非常有用的。
计算机程序主要包括两个方面:
1.程序是计算机执行的一系列指令或步骤。
2.每一步最终都涉及到对某一段信息或数据的处理。
ii.通常认为,计算机程序只是您提供给计算机并让它逐步执行的指令列表。
每个单独的指令都称为“语句”。
iii.实质上,程序中给定指令所做的全部操作就是处理存储在计算机内存中的一些数据位。
举一个简单的例子,您可能指示计算机将两个数字相加并将结果存储在计算机的内存中。
举一个较复杂的例子:
假设在屏幕上绘制了一个矩形,您希望编写一个程序将它移动到屏幕上的其它位置。
计算机跟踪该矩形的某些信息—该矩形所在位置的x、y光标、它的宽度和高度以及颜色等等。
这些信息位中的每一位都存储在计算机内存中的某个位置。
为了将矩形移动到其它位置,程序将采取类似于“将x坐标改为200;将y坐标改为150”的步骤(也就是说,为x和y坐标指定新值)。
当然,计算机的确会对这些数据进行某些处理,以便切实地将这些数字转变为显示在计算机屏幕上的图像;但考虑到我们所感兴趣的详细程度,我们只要知道“在屏幕上移动矩形”这一过程确实只涉及更改计算机内存中的数据位就足够了。
j)在ActionScript中,要创建一个变量(称为“声明”变量),应使用var语句:
i.varvalue1:
Number;
k)在AdobeFlashCS3Professional中,还包含另外一种变量声明方法。
在将一个影片剪辑元件、按钮元件或文本字段放置在舞台上时,可以在“属性”检查器中为它指定一个实例名称。
在后台,Flash将创建一个与该实例名称同名的变量,您可以在ActionScript代码中使用该变量来引用该舞台项目。
例如,如果您将一个影片剪辑元件放在舞台上并为它指定了实例名称rocketShip,那么,只要您在ActionScript代码中使用变量rocketShip,实际上就是在处理该影片剪辑。
l)数据类型
1.基元数据类型包括Boolean、int、Null、Number、String、uint和void。
ActionScript
2.核心类还定义下列复杂数据类型:
Obj
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flash 学习 记录