【改變輸出swf的尺度,背景顔色或幀頻】
在Navigator窗框裡右鍵你的項目
在"Navigator"窗框裡右鍵你的項目>選中"Properties">選中"ActionScript Compiler">在"Additional compiler arguments"裡輸入你所需要的指令
如想改變背景顔色,請輸入: -default-background-color 0xffffff
【滑鼠坐标】
mouseX mouseY
【檢查變量類型并傳回布爾值】
is
【檢查變量類型并傳回類型】
typeof
【檢查對象類型并傳回該對象】
as
【是數字但不是有效數字問題】
var quantity:Number = 15 - "rabbits";
trace(typeof quantity); //顯示: "number" , 但它是NaN (not a number)
trace(quantity is Number); //true
trace(quantity != NaN); //false
//使用isNaN()函數檢測:
isNaN(quantity); //true
//檢測變量是否内含有效數字:
!isNaN(quantity); //false
【取消預設的嚴格編譯模式】
在"Navigator"窗框裡右鍵你的項目>選中"Properties">選中"ActionScript Compiler">取消"Enabel compile-time type checking"選項
【基中繼資料類型和複雜資料類型好比"值類型"和"引用類型"】
基中繼資料類型類似按值傳遞:
var intOne:int = 1;
var intTwo:int = 1;
trace(intOne == intTwo); //true
【複雜資料類型類似按引用傳遞】
var arrayOne:Array = new Array("a", "b");
var arrayTwo:Array = arrayOne;
trace(arrayOne == arrayTwo); //true
//-----------------------------------
var arrayOne:Array = new Array("a", "b");
var arrayTwo:Array = new Array("a", "b");
trace(arrayOne == arrayTwo); //false
【優化邏輯AND(&&)和OR(||)的小知識】
對于邏輯And(&&):
除非條件表達式的前半部分為真,否則,ActionScript不會再去求算邏輯AND運算符的後半部.如果前半部為假,整個條件表達式一定為假,是以再去求算後半部就沒效率了.
對于邏輯OR(||):
除非條件表達式前半部為假,否則,ActionScript不會再去求算邏輯OR運算符的後半部,如果前半部為真,整個條件表達式一定為真.
總結:使用邏輯AND(&&)時,把結果最可能為false的表達式放到前面;使用邏輯OR(||)時,把結果最可能為true的表達式放到前面.
為了了解,我補充一例子,AND的情況: a!=null && a.length>0 ; OR的情況: a==null || a.length==0 //a 的空, 相對于a.length長度是否為0可能性比較大。
【Timer類注意事項】
不要認為Timer可以極其準确;使用Timer時間間隔不要低于10毫秒.
【private,protected,internal,public通路權限】
private:隻能在類本身内部通路,按慣例,命名私有成員時以下劃線"_"開頭;
protected:可以由類本身或任何子類通路.但這是以執行個體為基礎的.換言之,類執行個體可以通路自己的保護成員或者父類的保護成員,但不能通路相同類的其它執行個體的保護成員,按慣例,命名保護成員時以下劃線"_"開頭;
internal:可以由類本身或者相同包内的任何類通路;
public:可以在類内部通路,也可以由類執行個體通路,或者聲明為static時,可以直接從類通路.
【一個函數具有未知個數的參數,用arguments對象或"...(rest)"符号通路它的參數】
注意:使用"...(rest)"參數會使 arguments 對象不可用;
private funciton average():void{
trace(arguments.length); //輸出參數的個數
// arguments的類型是:object,但可以像通路數組一樣去通路它
trace(arguments[1]); //輸出第二個參數
}
private function average(...argu):void{
trace(argu[1]); //輸出第二個參數,argu參數名是自定義的.
}
【錯誤處理try,catch,finally】
private function tryError():void{
try {
trace("測試開始-try");
throwError();
}catch(errObject:Error) {
trace("錯誤資訊:" + errObject.message);
trace("測試結束-catch");
return;
}finally{
trace("雖然catch裡已經有return方法,但位于return方法後面的finally裡的代碼依然會被執行.其實無論return方法是在try裡,還是catch裡,finally裡的代碼始終會被執行");
}
trace("前面已經有return了,此處是不會再執行的.除非沒有抛出錯誤,以使catch裡的代碼沒有被執行");
}
private function throwError():void{
throw new Error("抛出錯誤");
}
【for...in與for each...in的差別】
與for...in循環不同的是,for each...in循環中的疊代變量包含屬性所儲存的值,而不包含屬性的名稱(或主鍵,索引).
為了了解,我補充一例子:
for...in: for (var name:String in user) trace(name+": "+user[name]+"; ") //username: ryan; password: 123; 這個循環中的name是user中的每一個屬性名。
for each...in: for each(var user:User in users) trace(user+": "+user.username+"; ") //user: ryan; user: bill; user: tom;
【命名包路徑的小技巧】
使用相應于擁有者和相關項目的包名稱會比較好.按慣例來講,包名稱的開頭應該是逆向的網址名稱.例如,如果Example Corp(examplecorp.com)寫了一些ActionScript3.0類,就會把所有類放在com.examplecorp包内(或者 com.examplecorp的子包内).如此一來,如果英國有另一家Example Corp(examplecorp.co.uk)也寫了一些ActionScript3.0類,隻要使用包uk.co.examplecorp,就可確定唯一性.
當類屬于特定應用程式的一部分時,就應該放在該應用程式特定的子包内.例如,Example Corp可能有個應用程式名叫WidgetStore.如果WidgetStore應用程式使用一個名為ApplicationManager的類,則此類就應該放在com.examplecorp.widgetstore包内,或者位于該包的子包内. 按慣例來說,包名稱的開頭是小寫字母.
【隐式的取出方法(getter)和設定方法(setter)】
public function get count():uint {
return _count;
}
public function set count(value:uint):uint {
if(value < 100){
_count = value;
}else {
throw Error();
}
}
【確定類是絕不會有子類,使用final】
final public class Example{}
【super關鍵字的使用】
super(); //父類的構造函數,隻能在類執行個體構造函數内部使用
super.propertyName; //調用父類的屬性,屬性需要聲明為public或protected
super.methodName(); //調用父類的方法,方法需要聲明為public或protected
【建立常數,使用關鍵字const而不是var】
static public const EXAMPLE:String = "example";
【檢測播放器版本】
flash.system.Capabilities.version
對于8.5版以前的任何Flash Player版本,這種方法都不适用.
【判斷用戶端系統】
flash.system.Capabilities.os
【檢測播放器類型】
flash.system.Capabilities.playerType
可能的值有:
"StandAlone",用于獨立的 Flash Player
"External",用于外部的 Flash Player 或處于測試模式下
"PlugIn",用于 Flash Player 浏覽器插件
"ActiveX",用于 Microsoft Internet Explorer 使用的 Flash Player ActiveX 控件
【檢測系統語言】
flash.system.Capabilities.language
【判斷使用者是否啟用了IME(輸入法編輯器)】
flash.system.IME.enabled
【檢測螢幕的分辨率】
flash.system.Capabilities.screenResolutionX
flash.system.Capabilities.screenResolutionY
【把彈出視窗居中的算法】
X = (舞台寬/2)-(視窗寬/2)
Y = (舞台高/2)-(視窗高/2)
【控制影片配合Player的方式,包括縮放問題】
stage.scaleMode
可供選擇值:flash.display.StageScaleMode
【舞台的對齊方式】
stage.align
可供選擇值:flash.display.StageAlign
【隐藏Flash Player的右鍵菜單
stage.showDefaultContextMenu = false;
【檢測系統是否具有音頻功能】
flash.system.Capabilities.hasAudio
【檢測播放器是在具有MP3解碼器的系統上運作,還是在沒有MP3解碼器的系統上運作】
flash.system.Capabilities.hasMP3
【檢測播放器能 (true) 還是不能 (false) 播放流式視訊】
flash.system.Capabilities.hasStreamingVideo
【檢測播放器是在支援 (true) 嵌入視訊的系統上運作,還是在不支援 (false) 嵌入視訊的系統上運作】
flash.system.Capabilities.hasEmbeddedVideo
【檢測播放器能 (true) 還是不能 (false) 對視訊流(如來自 Web 攝像頭的視訊流)進行編碼】
flash.system.Capabilities.hasVideoEncoder
【顯示 Flash Player 中的"安全設定"面闆】
flash.system.Security.showSettings();
可供選擇項:flash.system.SecurityPanel
【讓其它域的.swf通路本域的.swf】
在本域的.swf檔案裡加上:flash.system.Security.allowDomain()
或 者使用安全政策檔案"crossdomain.xml".在Flash 8以前,這個檔案必須放在.swf所在域的根目錄,現在,你可以使用flash.system.Security.loadPolicyFile(),指定安全政策檔案所在的位置.拒絕任何域的做法是在<cross-domain-policy>标簽内什麼也不填,安全政策檔案也支援通用字元 "*":
<?xml version="1.0"?>
<!-- http://www.mydomain.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.google.com" />
<allow-access-from domain="*.google.com" />
<allow-access-from domain="210.32.186.12" />
<allow-access-from domain="*" />
</cross-domain-policy>
【數字的不同進制之間的轉換】
parseInt(str:String, radix:uint = 0):Number 傳回十進制的數,參數radix表示要分析的數字的基數.如果省略radix,就預設為10,除非字元串的開頭是"0x","0X"或"0":
trace(parseInt("0x12")); //設定radix為16,輸出:18
trace(parseInt("017")); //設定radix為8,輸出:15
或者使用Number,uint和int對象的toString(radix)方法.
【使用Math.round()對一個數取整,四舍五入】
Math.round()
trace(Math.round(204.499)); //輸出:204
trace(Math.round(401.5)); //輸出:402
【使用Math.floor()對一個數向下取整,就是隻要整數部分而不理會小數分】
trace(Math.floor(204.99)); //輸出:204
【使用Math.ceil()對一個數向上取整,隻要小數部分不為零,整數部分就加1】
trace(Math.ceil(401.01)); //輸出:402
【産生一個随機數】
使用Math.random()産生一個僞随機數n,其中 0 <= n < 1
【把數字取至最近的小數點位,即指定精确度】
1. 決定你要取的數字的小數點位數:例如,如果你想把90.337取成90.34,就表示你要取到兩位小數點位,也就是說你想取至最近的0.01;
2. 讓輸入值除以步驟1所選的數字(此例為0.01);
3. 使用Math.round()把步驟2所計得的值取成最近的整數;
4. 把步驟3所得的結果乘以步驟2用于除法的那個值.
例如,要把90.337取成兩個小數點位數,可以使用:
trace(Math.round(90.337/0.01)*0.01); //輸出:90.34
【把數字取成一個整數的最接近倍數值】
例1,這樣會把92.5取成5的最近倍數值:
trace(Math.round(92.5/5)*5); //輸出:95
例2,這樣會把92.5取成10的最近倍數值:
trace(Math.round(92.5/10)*10); //輸出:90
【在指定數值範圍内獲得随機數】
//可取範圍:[min, max]
private function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
應用例子:
模拟投銀币,即希望得到随機布爾值(true 或 false): randRange(0, 1);
模拟投骰子,即希望得到随機六個值: randRange(1, 6);
為避免被緩存而需要産生一個獨一無二的數字追加在URL尾端,通常最佳方法是取得目前毫秒數.
【弧度(radian)與度數(degree)之間的轉換】
從弧度轉為度數: degrees = radians * 180 / Math.PI
從度數轉為弧度: radians = degrees * Math.PI / 180
【計算兩點之間的距離】
勾股定理: c2 = a2 + b2ler
假設有兩個影片剪輯mc1和mc2,則它們兩點間的距離c為:
var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));
【模拟圓周運動】
已知圓心o(x0, y0),半徑r和弧度angle,求圓上任意一點P(x, y)的坐标:
x = x0 + (Math.cos(angle) * r);
y = y0 + (Math.sin(angle) * r);
注意:舞台的x軸正方向水準向右,y軸正方向垂直向下.
【模拟橢圓運動】
已知圓心o(x0, y0),長軸a,短軸b以及弧度angle,求圓上任意一點P(x, y)的坐标:
x = x0 + (Math.cos(angle) * a);
y = y0 + (Math.sin(angle) * b);
【華氏溫度和攝氏溫度之間的轉換】
華氏溫度 = 攝氏度數 * 9 / 5 + 32
攝氏溫度 = (華氏度數 - 32) * 5 /9
【公斤與磅之間的轉換】
公斤 = 磅 * 2.2
磅 = 公斤 / 2.2
【向數組尾端添加元素】
var array:Array = new Array();
array.push("a", "b");
//向數組尾端添加單一進制素也可以這樣:
array[array.length] = "c";
//如果以索引設定的元素不存在,數組本身會自動擴充以包含足夠的元素數目.介于中間的元素會被設為undefined:
array[5] = "e";
trace(array[4]); //輸出: undefined
轉載:http://tieba.baidu.com/f?kz=569403190
版權聲明:本文為CSDN部落客「weixin_34037173」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34037173/article/details/91883886