2011年1月31日 星期一

Flex安全沙箱

1.網路訪問的swf檔,Security.sandboxType值為remote,這種情況下通過伺服器上的跨域檔crossdomain.xml判斷是否能夠跨域訪問。比如http://site1/flash1.swf需要訪問http://site2上的資源,則需要在site2伺服器上crossdomain.xml中添加site1的訪問許可。

2.本地訪問的swf檔,Security.sandboxType值為localTrustedlocalWithNetwork localWithFile三者之一。localWithNetwork僅允許訪問網路資源,localWithFile僅允許訪問本地資 源,localTrusted兩者均可。Flash9 Debug版本默認為localTrusted(?待確認),Flash10 Debug版本默認為localWithNetwork

因此在使用Flex進行編譯時,如果訪問本地資源將會產生安全沙箱錯誤。
  • 解決方法一:更改工程屬性,Flex Compiler - > Additional compiler argumentsFlex3),加上"-use-network=false",該選項強制Security.sandboxTypelocalWithFile,帶來的問題是無法訪問網路資源.
  • 解決方法二:更改工程屬性,Run/Debug Settings - > Main ->Url or path to lauch,改為通過Url載入Flash,這樣Security.sandboxTyperemote,本地資源的相對路徑也將作為網路相對路徑進行 訪問。
  • 解決方法三:通過設置Flash Player Trust directory,將swf檔所在目錄放入Flash Player Trust directory中,這樣該swf安全沙箱類型Security.sandboxTypelocalTrusted。(但該方法在Window Server 2003Flash 10 Debug環境下暫未通過)

2011年1月9日 星期日

AS3 Smooth Loaded Bitmaps

對用loader的content的bitmap做平滑化處理



//建立一個loader元件,並加到stage
var slideLoader:Loader=new Loader();
this.addChild(slideLoader);
//下載圖
slideLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, scaleContentForPicture);
slideLoader.load(new URLRequest("images/tree.jpg"));
//做平滑化處理
function scaleContentForPicture() {
var smoother_bm=Bitmap(slideLoader.content);
smoother_bm.smoothing=true;
}

AS3 快速產生整數數列和不重覆亂數

快速產生整數數列
trace(new Array(10).sort(Array.RETURNINDEXEDARRAY));
// 0,1,2,3,4,5,6,7,8,9


快速產生不重覆亂數
// 產生 0 到 (n - 1) 不重複亂數陣列
function genRandomArray(n:int):Array
 {
  var ary:Array = [];
  while (n--) ary.push(Math.random());
  return ary.sort(Array.NUMERIC | Array.RETURNINDEXEDARRAY);
}
// 產生 0-9999 不重複亂數陣列
var ra:Array = genRandomArray(10000);


源於TICORE' BLOG