我自己寫的第一個特效就是跑螺旋!
超興奮的~
看到後來被人改成 瓢蟲 的時候~
我也是超興奮的~~
不過現在看看~
我好像從那個時候起就沒成長過~~
不過來介紹一下~
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
public class bejeweledAS extends Sprite
{
private var box:MovieClip; // 用來跑的物體!
private var ra:Number; // 角度
private var r:int = 100; // 長度
//
public function bejeweledAS()
{
box = new box07(); //我在引出的 MovieClip 的類別~
box.width = 10;
box.height = 10;
this.addChild(box);
ra = 0;
r = 10;
this.addEventListener(Event.ENTER_FRAME, onEnterFrameFun);
}
//
private function onEnterFrameFun(e:Event):void
{
box.x = r * Math.cos(ra*Math.PI/180) + 100;
box.y = r * Math.sin(ra*Math.PI/180) + 100;
ra += 10;
r += 0.1;
}
}
}
一個最簡單的跑螺旋的方式~改變一下角度是遞增遞減~
可以改變旋轉的方向~
改變一下~長度
會是轉入 或 是 轉出
===============================
剛剛學到一招~
使用 point的方法去處理~
據了解也是可以做到螺旋狀 !
Point.polar(r, ra*Math.PI/180);
詳細的可以看這個
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Point.html
然後我對下面兩個Function 作 unittest
public function test1():void
{
var r:int = 100;
for(var ra:int=0;ra<360;ra++)
{
r * Math.cos(ra*Math.PI/180) + 100;
r * Math.sin(ra*Math.PI/180) + 100;
}
}
public function test2():void
{
var r:int = 100;
var pi:Point;
for(var ra:int=0;ra<360;ra++)
{
Point.polar(r, ra*Math.PI/180);
}
}結果讓我意外!Math函數執行100次 消耗的時間為15毫秒 消耗 16384 記憶體 平均每次時間為 0.15毫秒
Point函數執行100次 消耗的時間為40毫秒 消耗 69632 記憶體 平均每次時間為 0.4毫秒
好像中間進行 GC 了
Math函數執行1000次 消耗的時間為163毫秒 消耗 16384 記憶體 平均每次時間為 0.163毫秒
Point函數執行1000次 消耗的時間為351毫秒 消耗 -40960 記憶體 平均每次時間為 0.351毫秒
基本上~使用三角函數計算的結果比用 Point.polar 快一截!
大家就看自己喜歡用啥就用啥瞜!
沒有留言 :
張貼留言