【timer計時器的使用】
var timer:timer = new timer(delay:number, repeatcount:int = 0);
timer.addeventlistener(timerevent.timer, ontimer);
timer.start();
private function ontimer(event:timerevent):void
【以指定方向和速度移動元件】
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 = mou*** - 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)
使用string.lastindexof(val:string, startindex:number = 0x7fffffff):int
返回指定子字串的最後乙個匹配項的位置,沒有匹配就返回-1
var index:int = mystring.length;
while((index = mystring.lastindexof("val", index - 1)) != -1)
注意: 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()方法重新組合為字串:對單詞而言,以空格(" ")作為聯結符,對字母而言,以空字元("")作為聯結符;
其他聚類演算法
二 birch 聚類演算法 三 mean shift 演算法 3.1簡介 四 affinity propagation 4.1 簡介 五 spectral clustering sklearn提供了其他很多聚類演算法 這個演算法專門為大型資料集設計的,它可以比kmeans還快,且結果差不多。但要注意...
jdk中的Timer類理解和學習
定時任務中只有乙個執行緒和乙個任務佇列 該佇列是乙個優先順序佇列,基於最小堆實現,時間距現在最近的任務排在開頭 任務的執行是根據當前時間進行判斷是否執行,如果任務的執行時間大於當前時間就在佇列上等待,否則更新任務的下次時間給任務,然後進行任務的執行 只要執行緒啟動後,就會在乙個while迴圈中不斷的...
關於C 中timer類
關於c 中timer類 在c 裡關於定時器類就有3個 1.定義在system.windows.forms裡 2.定義在system.threading.timer類裡 3.定義在system.timers.timer類裡 例 使用system.timers.timer類 system.timers....