AS3实用函数、AS3常用算法大合集(7)
【获取指定文本行的度量信息】
TextField.getLineMetrics(lineIndex:int):TextLineMetrics TextLineMetrics类包含文本字段中某行文本的文本位置和度量值的相关信息,帮助文档里有深入的图解.
【获取指定索引处的字符所在段落内的第一个字符索引值】
如果给定一个字符索引,则返回同一段落中第一个字符的索引 TextField.getFirstCharInParagraph(charIndex:int):int
【获取指定索引处的字符所在段落内的字符数】
TextField.getParagraphLength(charIndex:int):int
【替换所选文字】
TextField.replaceSelectedText(value:String):void 可以使用此方法插入和删除文本而不破坏其余文本的字符和段落格式.
【替换指定范围的文本】
TextField.replaceText(beginIndex:int, endIndex:int, newText:String):void 注意: 如果对文本字段应用了样式表,则该方法不起作用
【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
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例