毕业论文 论文提纲 论文写作 公文范例 教育论文 教育学论文 师范教育 学术论文     论文指导*
                     
 
   
   
   
   
           
 

当前位置:课件115学培吧(kj115.com)→flash网侠教程(助你成为顶尖课件高手)→系列文章

 
 
标题:Action for Flash5:海浪效果
 
展示台

文章来源 作者:admin 密码:admin 整理:湖北金鹰

◇网侠教程栏目简介
    提供FLASH侠客教程和网页制作侠客教程,高手进阶教程。
    浏览过这些资源的还浏览过经典教程图文教程游戏开发教程等相关资源。

---------------

湖北金鹰课件吧

论文相关服务
 

 

我的思路是这样的,先制作一个框架,里面包含一些物体,当鼠标指针定位在框架内部时,我想要框架内的物体有大小和透明度的变化,而且这种变化还可以依据鼠标指针和物件的距离变化而变化,另一方面,当鼠标移到框架之外时,我就要框架内的物件回到初始状态,就像海浪似的,汹涌澎湃的冲到岸上来,然后又缓缓的退了回去。好,请先下载源文件。
结构
打开源文件,在主场景里,你可以看到一个名为“01-boundingbox”的MC,在第一帧上有三条行为动作,因为有些浏览者会将Flash影片全屏观看或者拖动改变它的大小,这样会使的这个例子的效果不明显,为了防止这样,我们在第一帧上设置如下行为动作:
FS Command ("fullscreen", "false")
FS Command ("allowscale", "false")
Stop
在“01-boundingbox”里,你将看到三个层,包含一个空的MC,一个框架和一些物件,物件的名字为“column1”,这里也只有一帧,一个行为动作,包含一段代码,一个名为“dragscale”的MC的中心显示在场景里,这是必须的,我们将利用它确定鼠标指针和物件之间的距离:
Start Drag ("dragscale", lockcenter)
在“column1”里的第二帧,是至关紧要的行为动作,第三帧的简单的Action可以保证第二帧不断的反复运行。
Go to and Play (2)
你可以注意到这里有二十个层,第一层包括行为动作和静止的物件,另外的第一到第十九层都是静止的物件,这样可以保证鼠标指针在框架外部时物件不会变化大小,每一个物件都取了一个名字,从“text1”到“text19”。
在第二帧,你可以看到如下的Action:
Set Variable: "colnum" = 1
Set Variable: "startnum" = 1
Set Variable: "endnum" = 19
Set Variable: "numberofItems" = 19
Set Variable: "mouseposX" = Int ( GetProperty ( "../dragscale", _x ) )
Set Variable: "mouseposY" = Int ( GetProperty ( "../dragscale", _y ) )
Set Variable: "I" = startnum
Set Variable: "m" = startnum+1
Set Variable: "filledSpace" = 0
Set Variable: "gapspace" = 0
If (myInit = FALSE)
Loop While (I <= endnum)
Set Variable: "textY" & I = GetProperty ("text" & I, _y )
Set Variable: "I" = I + 1
End Loop
Set Variable: "I" = startnum
Set Variable: "myInit" = TRUE
End If
Set Variable: "boundleft" = GetProperty ("../boundbox" & colnum, _x)
Set Variable: "boundright" = boundleft + GetProperty ("../boundbox" & colnum, _width)
Set Variable: "boundtop" = GetProperty ("../boundbox" & colnum, _y)
Set Variable: "boundbottom" = boundtop + GetProperty ("../boundbox" & colnum,_height)
第一个变量是指框架的数目,因此,我们定位在框架里的第一个“column1”,下面三个变量指第一个物件和最后一个物件,以及所有物件的数目,我们确定鼠标指针相关的两个变量“mouseposX”当前所在的X轴位置和“mouseposY”当前所在的Y轴位置,此外,我们要计数循环的次数,命名为“I”和“m”。最后,我们重新安排两个变量,“filledSpace”和“gapSpace”,我们将在后面讨论它们。
既然我们想要物件有一个原始的位置,我们需要建立一个数组,来保存这些原始的数值。当我们将每个物件的垂直位置都存储以后,我们将重新设置“I”以便保证行为动作只执行一次,设置“myInit”为真,如果“myInit”为假,则Action不执行。这里要提及的是,我们只需要物件的比例和透明度值变化,如果鼠标在框架内部,我们就得知道边界在哪里,下面四个变量将存储这些值。最后我们就得有两种变化,鼠标的位置在框架外面还是框架里面。好,接着我们就有了下面的代码:
If (mouseposX>= boundleft and mouseposX <= boundright and mouseposY>= boundtop and mouseposY <= boundbottom)
Loop While (I <= endnum)
Set Variable: "myDif" = (EVAL("textY" & I) ) - (mouseposY-boundtop)
Set Variable: "scaleAmount" = 250 - ((myDif*myDif) /16)
Set Variable: "alphaAmount" = 100 - ((myDif*myDif) / 6)
If (scaleAmount <100)
Set Variable: "scaleAmount" = 100
End If
If (alphaAmount <50)
Set Variable: "alphaAmount" = 50
End If
Set Property ("text" & I, X Scale) = scaleAmount
Set Property ("text" & I, Y Scale) = scaleAmount
Set Property ("text" & I, Alpha) = alphaAmount
Set Variable: "I" = I + 1
End Loop
Loop While (m <= endnum - 1)
Set Variable: "filledSpace" = filledSpace + GetProperty ( "text" & m, _height)
Set Variable: "m" = m + 1
End Loop
Set Variable: "totalheight" = GetProperty ( "text" & endnum, _y) - GetProperty ( "text" & startnum, _y)
Set Variable: "gapSpace" = totalheight - filledSpace
Set Variable: "avgDistance" = gapSpace / numberofitems
Set Variable: "m" = startnum + 1
Loop While (m <= endnum - 1)
Set Property ("text" & m, Y Position) = (GetProperty ( "text" & (m-1), _y) + GetProperty ( "text" & (m-1), _height)) + avgdistance
Set Variable: "m" = m + 1
End Loop
首先,如果鼠标在框架内部,我们就需要计算每一个物件和鼠标指针之间的距离,这将是一个多次的循环计算,我们首先得确定鼠标与顶部的距离,这是必须的,因为每一个物件和鼠标的距离都不一样,物件和鼠标的距离就是物件的垂直高度减去鼠标离顶部的高度,我们可以计算出来。当我们计算出了鼠标与物件的距离后,我们可以利用这个值“myDif”来确定物件的比例和透明度的值,你可以看到“scaleAmount”这个变量,注意到它是依靠“myDif”值变化的,如果“myDif”值为零,那么“scaleAmount”值为250(最大),“myDif”值越大,“scaleAmount”值越小,即距离越远,变化就越小,而“myDif”是一个正方形区域,所以鼠标周围的变化也是对称的。举个例子,有两个物件,“myDif”等于-5和5,这两个物件将是相同的变化,因为(-5)*(-5)=25,5*5=25,如果“myDif”不是正方形区域,只是用16来划分(数字越大,得到的变化越大),真实的距离可以得到真实的变化,这样的结果不是很完美,我们希望能得到像海浪那样的效果,有一个最高点的变化,透明度的值也是用同样的方法计算,唯一不同的是最大值为100,最小值50,我们用100代替250,用6代替16,因为_xscale和_yscale标准的百分数值默认设置为100,我们将在使用Set Property行为时使用他们。
最后,我们要确定物件的距离,当鼠标定位在框架内部时,同样,我们需要计算物件之间的平均距离。所以,我们需要找到物件之间的填充距离filledSpace,它是整个物件的高度,除了第一个和最后一个,因为他们是空的,和第一个与最后一个之间的全部空间。整个空间减去全部物件的高度值即为填充高度。为求得平均值,我们用这个高度去除以所有的物件数。计算除了平均距离以后,我们使用Set Property行为将值赋予物件,物件将依照前一个电影符号的位置和高度来确定增加平均值。
回到原始状态
Else
Set Variable: "I" = startnum
Loop While (I <= endnum)
If (int ( GetProperty ("text" & I, _yscale ) )> 100)
Set Property ("text" & I, Y Scale) = Int ( GetProperty ("text" & I, _yscale ) ) - 1
Set Property ("text" & I, X Scale) = Int ( GetProperty ("text" & I, _xscale ) ) -1
End If
If ( GetProperty ("text" & I, _y) EVAL("textY" & I))
Set Property ("text" & I, Y Position) = Int ( GetProperty ("text" & I, _y ) ) - 1
End If
If ( GetProperty ("text" & I, _Alpha)> 50)
Set Property ("text" & I, Alpha) = Int ( GetProperty ("text" & I, _alpha ) ) - 1
End If
Set Variable: "I" = I + 1
End Loop
End If
在一开始还有另外一种状态,即鼠标不在框架内部时所有的物件都将回到初始状态。因此,我们必须确定每一个物件的比例获透明度是否和初始时一样,他们的垂直位置是否大于或小于初始值,这里又是一个循环检查。如果比例大于初始值即100,我们将比例值减小1,如果透明度值大于初始值50,我们同样将其减少1,如果垂直位置大于初始值,我们将其减小1,如果垂直位置小于初始值,我们就增加1。
自定义文件
如果建立多个这样的例子,你需要在“01-boundingbox”里增加框架。第二个框架可以取名“boundbox2”,第三个可以取名“boundbox3”如此类推。增加好以后,物件都需安放好相应的框架里,而在第二帧里的四个变量将依照框架数,开始物件数,最后的物件数,和全部物件数确定。例如第二个物件群,在第二个框架内,你可以设置不同的框架内有不同的效果产生,只需设置变动最大值,最小值和拆分的变量“scaleAmount”和“alphaAmount”。

 

 

 
课件115学培吧(湖北金鹰)欢迎您!永久免费服务网址:http://www.kj115.com
   
 

学员众多的FLASH课件学习基地,成万免费FLASH课件制作教程在线学习,还有免费内容课件教程、视频教程、课件技巧、课件探讨、课件欣赏、课件展示、实用教程、课件界面、课件脚本、课件游戏、课件下载、课件封面、课文内容图片、课文人物图片库、课件素材、图片素材、声音素材、动物素材、背景图片、背景资料、背景边框、课件顶栏图片素材、Dreamweaver教程、Dreamweaver网页课件教程、软件下载。承接学习和培训,承接课件订制,课件修改等所有课件相关服务。
本站主要业务:┃flash课件制作视频教程培训┃承接全国竞赛flash课件┃论文代写代发┃代办课件国家级获奖证书┃
联系:QQ:444860709 手机:13339817386


 
 

业务办理
鄂ICP备08005724号