- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
as3.0常用算法
as3.0常用算法
【Timer计时器的使用】
var timer:Timer = new Timer(delay:Number, repeatCount:int = 0);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
private function onTimer(event:TimerEvent):void {
//code
}
【以指定方向和速度移动元件】
speed: 目标速度
radians: speed与x轴的夹角,弧度
vx = Math.cos(radians) * speed;
vy = Math.sin(radians) * speed;
【缓动动画算法】
targetX,targetY: 目标坐标;
easingSpeed: 每次移动分数,范围0到1;
var vx:Number = (targetX – sprite.x) * easingSpeed;
var vy:Number = (targetY – sprite.y) * easingSpeed;
sprite.x += vx;
sprite.y += vy;
注意: 在非常逼近目标点时,往往找出通往目标点的距离,如果其值少于特定值,就应该停止该缓动.
【模拟弹簧往复运动算法】
五个变量: targetX(目标点的x坐标),sprite.X(物体的x坐标),vx(水平速度),ax(水平加速度),k(弹簧强度)
已知: targetX(目标点的x坐标),k(弹簧强度)
var ax:Number = (targetX – sprite.x) * k;
vx += ax;
sprite.x += vx;
注意: 这里只是水平方向的情形,也可以推广到垂直方向以及水平垂直一起来的情形
【模拟单摆运动】
四个变量: sprite.x(物体的x坐标),centerX(中心位置的x坐标),angle(弧度),radius(摆动的振幅,也就是摆动的范围)
sprite.x = centerX + Math.sin(angle) * radius;
angle += 0.05;
【模拟阻尼运动】
六个变量: targetX(目标点的x坐标),sprite.X(物体的x坐标),vx(水平速度),ax(水平加速度),k(弹簧强度),damp(阻尼系数)
已知: targetX(目标点的x坐标),k(弹簧强度)
var ax:Number = (targetX – sprite.x) * k;
vx += ax;
sprite.x += vx;
vx *= damp; //无阻力情况下的弹簧往复运动只缺少此句
注意: 这里只是水平方向的情形,也可以推广到垂直方向以及水平垂直一起来的情形.
这种原理可以推广到其它属性,如scaleX:
scaleVel += (targetScale – sprite.scaleX) * k;
sprite.scaleX += scaleVel;
scaleVel *= damp;
【计算两点间的角度】
Math.atan2(y:Number, x:Number):Number
y: 两点间的垂直距离
x: 两点间的水平距离
返回一个以弧度为单位的角度,返回值介于正PI和负PI之间.
【让物体指着鼠标(跟随眼睛)】
var dx:Number = mouseX – sprite.x;
var dy:Number = mouseY – sprite.y;
var radians:Number = Math.atan2(dy, dx);
sprite.rotation = radians * 180 / Math.PI;
【联结字符串时需要注意的地方】
var result:String = 2 + 6 + “a”;
trace(result); //输出: 8a
var result:String = “a” + 2 + 6;
trace(result); //输出: a26
var result:String = “a” + (2 + 6);
trace(result); //输出: a8
【查找匹配的字符串】
使用String.indexOf(val:String, startIndex:Number = 0):int
返回指定子字符串的第一个匹配项的索引,没有匹配就返回-1
查找所有匹配的字符串:
var index:int = -1;
while((index = myString.indexOf(”val”, index + 1)) != -1) {
trace(”结果:” + index)
文档评论(0)