文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页网页设计Flash → Action for Flash5:海浪效果

Action for Flash5:海浪效果

时间:2004/11/7 2:25:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            

我的思路是这样的,先制作一个框架,里面包含一些物体,当鼠标指针定位在框架内部时,我想要框架内的物体有大小和透明度的变化,而且这种变化还可以依据鼠标指针和物件的距离变化而变化,另一方面,当鼠标移到框架之外时,我就要框架内的物件回到初始状态,就像海浪似的,汹涌澎湃的冲到岸上来,然后又缓缓的退了回去。好,请先下载源文件


结构


打开源文件,在主场景里,你可以看到一个名为“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”。


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 Flash CS4基础入门 如何在Flash中打开一个定制的浏览器新窗口?学习ActionScript 3.0的6个好处几个小技巧精简Flash文件体积在Flash动画中添加“加为收藏”和“设为首页

人气排行 Flash游戏制作--小熊拼图用Flash实现几种镜头效果Flash制作动画知识:遮罩Flash如何做鼠标指针样式Flash制作环形文字Flash制作声情并茂的电子相册实例讲解flashMTV制作全过程(3)鼠标效果系列教程:游动的鱼