`

Timer类和其他算法

 
阅读更多
【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);

}

使用String.lastIndexOf(val:String, startIndex:Number = 0x7FFFFFFF):int

返回指定子字符串的最后一个匹配项的位置,没有匹配就返回-1

var index:int = myString.length;

while((index = myString.lastIndexOf("val", index - 1)) != -1) {

    trace("结果:" + index);

}

注意: indexOf()和lastIndexOf()方法都是区分大小写的.想把大小写都查找出来的话,可以结合String.toLowerCase()和String.toUpperCase()方法先把字符串一起转为小写或大写再进行查找.

 
【提取子字符串】

String.substr(startIndex:Number = 0, len:Number = 0x7fffffff):String

String.substring(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String

String.slice(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String

substr()第一个参数可以是负值,表示索引值是从字符串尾端算过来,-1是最后一个字符;

substring()和slice()差别在于substring()只接受正索引值,而把负值作为0处理.另外,如果endIndex小于startIndex,substring()方法在执行前,会自动将其调换过来,总是使用两个参数中较小的值作为起始索引.

slice()方法可接受startIndex和endIndex为负值,而把负值表示为从字符串的尾端算回来,如果endIndex小于startIndex,slice()方法会返回空字符串.

 
【以指定模式拆分字符串】

String.split(delimiter:*, limit:Number = 0x7fffffff):Array

 
【替换指定的字符串】

使用String.replace(pattern:*, repl:Object):String

可以这样来替换所有指定的字符串: myString.split("a").join("b");

 
【按单词或单个字母逆转字符串】

1. 把字符串切割使用String.split()方法成一个数组:对单词而言,以空格作为分界符,对字母而言,以空字符("")作为分界符;

2. 使用Array.reverse()方法对数组进行逆转;

3. 使用Array.join()方法重新组合为字符串:对单词而言,以空格(" ")作为联结符,对字母而言,以空字符("")作为联结符;

分享到:
评论

相关推荐

    Java语言中Timer类的简洁用法.doc

    Java中的`Timer`类和`TimerTask`是用于计划任务执行的重要工具,它们在Java标准版(J2SE)和微型版(J2ME)环境中都有应用。然而,这两个类的功能相对有限,不能满足所有复杂任务调度的需求。例如,它们无法处理因...

    02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序.rar

    4. **Timer3**:同样为16位定时器,Timer3通常用于更复杂的定时任务,比如实时操作系统或高级控制算法。它同样支持多种工作模式,测试程序会展示如何灵活运用Timer3来满足不同的需求。 5. **Timer4**:如果STC8A8K...

    c# 随机数生成器 Timer

    这个“c# 随机数生成器 Timer”项目可能是一个简单的Windows Forms应用程序,它利用了C#的System.Random类以及Timer控件,来周期性地生成并显示随机数。让我们详细探讨一下这个项目中的关键知识点。 1. **System....

    Java语言中Timer类的简洁用法.pdf

    Java 语言中的 `Timer` 类和 `TimerTask` 类是用于计划和执行周期性任务的重要工具,它们在 Java 2 SDK, Standard Edition, Version 1.3 中被引入。这两个类为开发者提供了一种简单的方式来安排任务在未来的某个时刻...

    vp_Timer.zip

    - **高效性**:优化的算法使得`vp_Timer`能够精确且高效地管理计时任务,减少不必要的计算开销。 - **易用性**:简洁的API接口,使得开发者可以快速上手,节省开发时间,提高开发效率。 2. **主要组件解析** - *...

    java演示一些经典的算法

    9. **文档编写**:项目中可能包含注释和文档,解释代码的功能和实现细节,这对于其他人理解和学习算法演示至关重要。 10. **版本控制**:可能使用了Git等版本控制系统来管理代码,便于协作和版本回溯。 综上所述,...

    Java 连连看 经典算法

    在Java中,可以使用java.util.Timer和TimerTask类来定时执行特定任务,比如检查是否有新的消除可能,或者更新计时器显示。此外,为了增加游戏紧张感,可以设置时间限制,当达到一定时间后如果没有完成消除,游戏结束...

    利用Timer中断控制LED1

    中断在实时控制中扮演着核心角色,特别是对于电机控制和开关电源这类需要快速响应的应用。在昊芯28027中,Timer中断是一种有效的控制机制,可以实现精确的时间间隔控制,如本例中的LED闪烁。此外,该芯片基于RISC-V...

    操作系统课程设计磁盘调度算法

    本课程设计的目的是通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等...

    C++实现的距离矢量路由算法

    1. **路由表**:每个网络节点都维护一个路由表,记录到其他所有节点的最短距离和下一跳信息。初始时,所有节点认为到达自身的目标距离为0,到达其他所有节点的距离为无穷大。 2. **路由更新**:D-V算法的核心是定期...

    LN2000分散控制算法手册 第六部分 时间功能算法块.doc

    - 功能:提供基本定时器(TIMER),单脉冲定时器(PULSE),滞后置位型定时器(TD_ON),滞后复位型定时器(TD_OFF)和滞后置位保持型定时器(LSH)五种模式。每种模式都有特定的逻辑顺序图和特性描述,如基本...

    窗口飘动(Timer控件)

    【窗口飘动(Timer控件)】 在编程领域,尤其是Windows应用程序开发中,`Timer控件`是一个常用且重要的...在实际开发中,还可以结合其他控件和功能,如按钮、计时器状态指示等,来扩展这一效果,使其更加灵活和实用。

    MSP430+正弦波+DMA+TIMER

    二是实时计算,通过查表和插值算法得到精确的正弦值。考虑到MSP430的处理能力,前一种方法更为常见,因为它减少了运行时的计算负担,尤其是在需要高精度和低延迟的应用中。 在调试过程中,我们需要注意以下几点: ...

    pintos timer_sleep

    描述部分提到的是`timer_sleep`算法的代码实现。该算法的优点在于其高效性,并且已经通过了基本的测试。然而,描述中也指出了一个缺点——即该算法在进行`alarm-priority`测试时无法通过。 #### 标签解析 标签...

    GD3210x-DAC_TIMER_DMA SIN.rar

    在GD3210x系列微控制器中,DAC(Digital-to-Analog Converter,数字模拟转换器)配合TIMER(定时器)和DMA(Direct Memory Access,直接内存访问)功能,可以实现高效、精确的SIN(正弦波)信号生成。这个GD3210x-...

    java-timer的应用

    Java定时器框架包括Timer类和TimerTask类,它们为简单的定时任务提供了便利。然而,对于一些复杂的需求,如任务需要在每天固定时间执行,而要考虑夏令时等因素,标准的Java定时器框架就显得不够灵活。 在Java 2 SDK...

    经典游戏俄罗斯方块与经典算法

    作为编程和算法学习者,深入研究它的内在逻辑不仅有趣,也能提升编程和算法设计能力。本文将围绕游戏的核心算法进行详细介绍,特别关注C#语言实现的策略。 首先,我们来看俄罗斯方块的基本概念。游戏由各种形状的...

    利用timer模拟RTC做日历计时

    这就需要一个日历算法来计算天数、月份和年份,确保时间和日期的正确更新。 5. **低功耗优化**:在待机或休眠模式下,通过配置系统时钟和定时器的工作模式,可以降低功耗,以模拟RTC的低功耗特性。 6. **测试和...

    java Floyd算法 Dijkstra算法 丰富Swing界面游戏实例源码

    Swing提供了一系列组件,如JButton、JLabel、JPanel等,用于构建游戏界面,同时,利用Swing Timer类可以实现游戏循环和定时事件,如计时器、动画帧率控制等。 总的来说,这个项目将理论的算法知识与实际的软件开发...

Global site tag (gtag.js) - Google Analytics