AS3做的flash动画效果不平滑,请FLASH和AS3高手指教

最近原创了一个下雪的效果,但奇怪的是雪花掉落非常不平滑,总有一顿一顿的感觉,请高手帮我看看:http://www.cnchu.com/templates/cnchu/ap... 最近原创了一个下雪的效果,但奇怪的是雪花掉落非常不平滑,总有一顿一顿的感觉,请高手帮我看看:
http://www.cnchu.com/templates/cnchu/aps/snow.swf
对比一下高手做的效果就很明显:
http://www.cnchu.com/templates/cnchu/aps/snow2.swf
源码:直接flash上第一帧,s1是雪花mc的链接

import flash.events.Event;
var wind:Number = 0;
var gravity:Number = 0;
var snow:Array=new Array();
windtext.alpha = 0.3;
for (var i=1; i<100; i++)
{
snow[i]=new s1();
addChild(snow[i]);
snow[i].scaleX = snow[i].scaleY = 0.1 + Math.random() * 0.1;
snow[i].y = 1 / 2 * stage.stageHeight - Math.random() * stage.stageHeight;
snow[i].x = Math.random() * stage.stageWidth;
snow[i].filters = [new GlowFilter(0xffffff,1,10,10)];
snow[i].addEventListener(Event.ENTER_FRAME,move);
}
function move(e:Event)
{
gravity = e.target.scaleX * 3;
e.target.y += Math.random() * 1 + gravity;
if (checkbox.selected == true)
{
windtext.alpha = 1;
strbar.visible = true;
strbar.enabled = true;
wind = strbar.value;
e.target.x += Math.random() * 2 - 1 + wind;
}
else
{
windtext.alpha = 0.3;
strbar.visible = false;
strbar.enabled = false;
e.target.x += Math.random() * 2 - 1;
}
e.target.rotation += Math.random() * 10;
if (e.target.y > stage.stageHeight)
{
e.target.y = 0;
}
if (e.target.x < 0)
{
e.target.x = stage.stageWidth;
}
if (e.target.x > stage.stageWidth)
{
e.target.x = 0;
}
}

本人尝试过:
1.使用updateAfterEvent,结果:该方法不支持ENTER_FRAME事件
2.将动画属性设置为允许平滑,结果:flash cs5中找不到设置选项

可以直接修改源码,或者告诉我如何设置,非常感谢!
展开
 我来答
roseclarkh
2010-11-05 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:166万
展开全部
不平滑是因为你的算法有问题,当然还要设置帧频25-40fps……
首先,把x轴的变化先去掉,你先实现让雪花转动着掉下,这一步应该没问题
然后,加上x轴的变化,用一个固定的deltaX,实现让雪花斜着落下,这一步应该也没问题
代码是 x += deltaX;
接下来才是重点,你要在deltaX的基础上再加上一个恒定加速度plusX,实现让雪花弧线落下,当然plusX可正可负
代码是 deltaX += plusX
x += deltaX;
好了,最后还剩一步,让plusX按照一定的规律变化,而非恒定,这个规律就随便你了,可以用随机数,也可以弹簧原理根据中线距离。

如果你上面都实现了,应该就是平滑运动了,不过注意每个值是逐渐递减的,比如deltaX是2,那么plusX就是0.1-0.3,plusX的变化就要更小一点。这样子整个变化才柔和。
welcome2001
2010-11-09
知道答主
回答量:46
采纳率:0%
帮助的人:37.2万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
侠依子诺
2010-11-05
知道答主
回答量:38
采纳率:0%
帮助的人:9.9万
展开全部
1.可能你的帧频太低了,动画要高于25,最好用30
2.可以用timer事件调用EnterFrame调用的函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李节龙
2010-11-17
知道答主
回答量:87
采纳率:0%
帮助的人:23.3万
展开全部
学习学习,加点财富
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式