带来一篇Flash AS 教程:帧轮回-Flash actionscript
可以为受众提供跨计算机、智能手机、平板电脑和电视平台的令人痴迷的一致性体验。帧轮回
帧轮回的理念,存在于Flash最早的版本中,当时ActionScript还不像明天那末壮大。把代码写进关头帧,并鄙人一帧中写进像gotoAndPlay如许的语句,使播放头(playhead)回到前一帧。如许两帧之间就构成了一个无穷轮回,每当播放头到了代码帧上时,就会实行那些代码。比方,在舞台上有一个实例名为ball的影片剪辑。
第一帧的代码就像如许:
ball.x++;
第二帧的代码以下:
gotoAndPlay(1);
实践上第二帧不必要做任何事,只是让工夫轴主动回到第一帧而以。另外一个版本是创建三个帧,第一帧举行初始化,写进只实行一次的代码,不举行轮回。第二帧才是次要的实行代码,第三帧只写gotoAndPlay(2);这个办法在初期Flash版本中常被利用,固然有点过期,可是一样能够杰出地完成义务。即刻我们还要学到更天真更壮大的设置办法,但从此你会发明实在道理上是一样的。
影片事务
影片事务在AS3中完全的消散了,这真是件功德。但还要捎带提一下,回忆Flash5的时期,只要帧轮回和影片剪辑事务两种选择。影片事务指代码间接写在影片剪辑上,而不是帧上。怎样完成影片事务,起首选择舞台上的影片剪辑,然后翻开举措面板并将代码写在下面,这些代码只对该影片剪辑无效。一切代码必须写在事务块中,好比:
onClipEvent(eventName){
//codegoeshere
}
关于onClipEvent(eventName),感化于eventName(某种事务)。关于"on"范例事务则必须指定鼠标或键盘事务,如按下(press)和开释(release)。
事务称号(eventName)是指很多Flash影片事务之一,所谓事务就是在影片中产生的事。事务分为两种:体系事务和用户事务。体系事务指产生在如盘算机,Flash,或影片上的事务,好比调取数据,调失信息,或播放帧等。用户事务是指用户所做的一些事,基础上就是鼠标和键盘两种。影片事务利用得最多的就是load和enterFrame这两个。Load事务会在影片第一次呈现在舞台上时才实行,且只实行一次。以是说十分合适在这内里写进初始化代码。只需把代码写在年夜括号间便可:
onClipEvent(load){
//initializationcode
}
我们能够把带有以下代码的影片剪辑放进工夫轴上(注重:此处为AS1写法):
onClipEvent(load){
this._x=100;
this._y=100;
}
onClipEvent(enterFrame){
this._x+=5;
}
本书示例中的代码不利用这类写法(由于它已不是一种言语了),但不管利用何种办法,初始化(initialization),反复举措(repeatingactions)和屏幕革新(screenrefresh)都长短常主要的。
事务及事务处置
FlashMX的ActionScrpt产生了主要的改动,这些变化与刷新为Flash成为真实的富客户端程序(RIA)奠基了基本。个中一个就是全新的事务布局,在编写十分庞大的举动时比之前的版本好用良多。FlashMX之前的版本,只能把代码放在影片和按钮的onClipEvent(eventName)或on(eventName)这两种事务处置办法中。这就意味着,在计划的时分就要把影片剪辑放到舞台上,并把代码写进影片剪辑中。MX的事务布局其实不完善,但与之前版原本说已有了长足的前进,并同意我们在任什么时候候会见任何事务,或是中断处置任何事务,或是静态改动某个事务的举动,能够设想这有何等的壮大和天真。
要想懂得事务,就要分明上面几条观点:侦听器(lintener)与处置函数(handler),这两个名字很贴切,侦听器就是侦听事务的工具,处置函数是一个用于处置所要产生的事务的函数。侦听与处置在ActionScript的开展过程当中举行过良多次演化,在AS2中就有良多分歧的完成办法。为了不凌乱,我很推许AS3,由于它简化了这个历程,使事务处置变得更便利更分歧。
事务侦听器与处置函数
后面说过,侦听器是一个用于侦听事务的工具。我们能够计划一个类,经由过程挪用addEventListener函数为某事务指定一个侦听器。输出要侦听的事务称号和要实行处置的函数称号。看一个例子:
addEventListener("enterFrame",onEnterFrame);
在到场事务侦听器时,可以使用可选参数,本书中不会用到;关于年夜多半的使用程序来讲,会利用以上这类写法就够用了。请注重事务名"enterFrame"为字符串型,戏称它为“魔力字符串”(MagicString)。为何这么叫?假如你误输出成了"entorFrame",只管没有这个事务称号,编译器也会编译实行它,会发明事务处置函数没有实行。但AS3仍会对其举行处置,除利用“魔力字符串”之外,还可使用事务类(EventClass)的属性。比方:
addEventListener(Event.ENTER_FRAME,onEnterFrame);
实践上Event.ENTER_FRAME的值就是”enterFrame”这个字符串。那末这个属性也大概输错就像Event.ENTOR_FRAME,但这类办法幸亏,假如输出毛病了,程序会回绝编译,并提醒你在事务类中不存在该属性。编译器会提醒产生毛病的行及切实的字符。以是,最好利用这类办法,除非编译器会帮我们修改毛病或编写代码。
除此以外,另有别的的事务范例如:MouseEvent.MOUSE_DOWN,KeyboardEvent.KEY_DOWN,TimerEvent.TIMER等。这些都由"mouseDown","keyDown","timer"如许的复杂字符串来暗示,假如你记不住这些字符串,那末最好就往利用事务类的属性。
另外一个重点是,利用addEventListener函数间接挪用类中的函数。偶然,必要侦听另外一个工具发生的事务,比方,有一个名为mySpriteButton的Sprite影片(Sprite):影片或按钮,能完成按钮的举措。当用户点击它的时分就会发生mouseDown(鼠标按下)事务。侦听该Sprite影片的mouseDown事务,就要挪用该工具的addEventListener办法,以下:
mySpriteButton.addEventListener(MouseEvent.MOUSE_DOWN,onSpritePress);
最初一点,必须要有事务处置函数如onEnterFrame,在AS3中,能够恣意地为事务处置函数定名,这点与之前的ActionScript分歧。在enterFrame示例中,利用onEnterFrame办事件处置函数,是由于我们习气利用这个称号。在AS3中,onEnterFrame已不再是关头字,固然也能够为这个处置函数定名为move,run,或是doSomethingCool。但是,我们已习气利用”on”暗示事务入手下手,前面跟一些形貌词如onStartButtonClick,onConfigXMLLoad或onRoketCrash。有些伴侣喜好在事务名前面加上"Handler"作为后缀,如:enterFrameHandler,这只是团体偏好成绩。
侦听器用于侦听事务,但关于一个侦听器来讲,大概会同时侦听良多事务。在体系外部,一个事务工具具有一个包含了一切工具及本身的侦听器的列表。假如一个工具可以发生多种分歧范例的事务,如mouseDown,mouseUp,mouseMove等,那末它就具有一个侦听器列表,个中包含它所触及的一切范例的事务。不管触发何种事务,城市检索一遍列表,然后使列表中的每一个工具都晓得所产生的事务。
另外一种对事务的形貌是,将其看做一个到场到事务行列的侦听器成员。发生事务的工具将它所发生的事务发布给一切成员,当你不再必要这个工具举行侦听时,能够令其中断侦听或利用removeEventListener办法排除该成员;就是告知工具从侦听器列表中删除该侦听器,如许一来,他就不会再吸收信息了。
让我们看看这段代码,上面是一段在舞台中创立Sprite影片,并举行画图,然后再为其增加侦听器的代码:
package{
importflash.display.Sprite;
importflash.events.MouseEvent;
publicclassEventDemoextendsSprite{
privatevareventSprite:Sprite;
publicfunctionEventDemo(){
init();
}
privatefunctioninit():void{
eventSprite=newSprite();
addChild(eventSprite);
eventSprite.graphics.beginFill(0xff0000);
eventSprite.graphics.drawCircle(0,0,100);
eventSprite.graphics.endFill();
eventSprite.x=stage.stageWidth/2;
eventSprite.y=stage.stageHeight/2;
eventSprite.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
eventSprite.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
}
privatefunctiononMouseDown(event:MouseEvent):void{
trace("mousedown");
}
privatefunctiononMouseUp(event:MouseEvent):void{
trace("mouseup");
}
}
}
在初始化函数(init)中创立一个Sprite影片,并在内里画圆,置于舞台中央,最初两句是为它增加两个侦听器,侦听鼠标按下(MOUSE_DOWN)和鼠标弹起(MOUSE_UP)这两个事务。它们是MouseEvent类的两个属性,而这个类必须要导进。最初界说两个处置函数onMouseDown和onMouseUp。
由事务工具挪用事务处置函数,一般还会包含一些事务信息。在处置鼠标事务时,就包含触发该事务时鼠标地位的信息如:鼠标点击在按钮上。关于键盘事务,就要包含按下键时的信息如Ctrl,Alt,Shift等。把上述示例保留为EventDemo.as文件,并选择一种后面讲过的编译体例。当运转SWF时,就会看到每次点击或图形时,城市输入pressed或released。
用于设计和编辑Flash文档。1996年11月,美国Macromedia公司收购了FutureWave,并将其改名为Flash。后又被Adobe公司收购。 考虑到实际的效果,这些专业的网站并不会去单纯追求技术本身,广告设计是否FLASH不是目的,关键是获得最好的宣传效果。 富媒体广告的概念:富媒体 Rich Media,是由英文翻译而来,从字面上很难理解Rich Media到底是什么。 逐渐改变了我们生活及生活习惯的一些东西,而正是互联网的大势兴起,Flash动画越来越受到宠爱,现在,Flash动画已成为网络广告的中坚力量。 FLASH广告的问题主要表现在: 在计算机出现之前,动画制作者必需手工绘制即使差别很小的不同祯的图像。当然,非自动的,一祯祯的动画在很多情况下仍然很有用,Flash也允许这样做。 flash的优缺点可以如何运用呢? 各种性能才能运用的得心应手,制作出优秀的动画。 原始动画为单纯的手绘,累而且费时耗资严重,随着科技的发展应运而生了很多制作动画的软件,然而flash在各个方面的应用尤为广泛,作用最为突出,具有一定的影响力。
页:
[1]