搜尋部落格文章

2013年7月9日 星期二

[轉] Capabilities 獲得使用者端資訊

 as3.中的flash.system.Capabilities 類有許多靜態方法返回關於播放器和計算機的信息,比如操作系統,語言,音頻和視頻。 通過Capabilities 屬性確定用戶所擁有的設備的類型,可以向盡可能多的用戶提供適當的內容。 更有用的是可以通知服務器發送合適的SWF 文件,或是通知SWF 文件變更其播放方式。 

檢測播放器版本 
version屬性指定Flash Player平台和版本信息。 
trace("version: " + Capabilities.version); //我的電腦返回version: WIN 9,0,45,0 
這裡需要解釋一下,返回的數據以此是:平台主版本號次版本號生成版本號內部生成版本號。 看出我的flash播放器是9.0版。 
檢測操作系統 
os屬性指定當前的操作系統 
trace("os: " + Capabilities.os); //Windows XP 
apple上返回的還帶有版本號,我們能基於系統做一些事情,比如載入不同的開始畫面 
var os:String = System.capabilities.os.substr(0, 3); 
if (os == "Win") { 
// 載入微軟標示或者... 
} else if (os == "Mac") { 
// 看到缺一口滴蘋果 
} else { 
// ... 
} 
檢測播放器類型 
playerType指定播放器的類型 
trace("playerType: " + Capabilities.playerType);//可能返回以下四種結果 
"StandAlone" ,用於獨立的Flash Player 
"External" ,用於外部的Flash Player或處於測試模式下 
"PlugIn" ,用於Flash Player瀏覽器插件 
"ActiveX"
 
"ActiveX"
 ,用於Microsoft Internet Explorer使用的Flash Player ActiveX控件如果我們用腳本進行交互,就必須知道播放器在ie裡運行還是別的什麼瀏覽器,如果是獨立運行,很抱歉腳本失效料。
 
if(flash.system.Capabilities.playerType == "Plugin") { 
// 在除ie的瀏覽器執行的東西 
} 
else if(flash.system.Capabilities.playerType == "ActiveX") { 
// 在ie中執行的as 
} 
else { 
// 其他 
} 
檢測系統語言 
language指定系统语言
trace("language: " + Capabilities.language);//zh-CN
顾名思义,如果我们要做国际化的flash,就会用到,检测不同语言然后载入不同的swf文件
var lang:String = System.capabilities.language.substr(0, 2);
// 创建支持语言数组
var supportedLanguages:Array = ["en", "es", "fr"];
// 设置默认语言.
var useLang:String = "en";
//循环匹配,如果找到,设置useLang
for (var i:int = 0; i < supportedLanguages.length; i++) {
if (supportedLanguages[i] == lang) {
useLang = lang;
break;
}
}
// 载入对应Flash
var movieURL:String = "myMovie_" + useLang + ".swf");

检测显示设置这个当然很有用了!其实很简单fg
trace("screenResolutionX: " + Capabilities.screenResolutionX);//1280
trace("screenResolutionY: " + Capabilities.screenResolutionY);//960 
指定系统语言
trace("language: " + Capabilities.language);//zh-CN
顾名思义,如果我们要做国际化的flash,就会用到,检测不同语言然后载入不同的swf文件
var lang:String = System.capabilities.language.substr(0, 2);
// 创建支持语言数组
var supportedLanguages:Array = ["en", "es", "fr"];
// 设置默认语言.
var useLang:String = "en";
//循环匹配,如果找到,设置useLang
for (var i:int = 0; i < supportedLanguages.length; i++) {
if (supportedLanguages[i] == lang) {
useLang = lang;
break;
}
}
// 载入对应Flash
var movieURL:String = "myMovie_" + useLang + ".swf");

检测显示设置这个当然很有用了!其实很简单fg
trace("screenResolutionX: " + Capabilities.screenResolutionX);//1280
trace("screenResolutionY: " + Capabilities.screenResolutionY);//960
ok,知道屏幕尺寸我们可以作很多有用的事情拉我们可以根据情况载入不同的尺寸的内容。
var resX:int = flash.system.Capabilities.screenResolutionX;
var resY:int = flash.system.Capabilities.screenResolutionY;
if ( (resX <= 240) && (resY <= 320) ) {
var url:String = "main_pocketPC.swf";
}
else {
var url:String = "main_desktop.swf";
}
loader.load(new URLRequest(url));
利用分辨率还可以居中你的弹出窗口:
var resX:int = flash.system.Capabilities.screenResolutionX;
var resY:int = flash.system.Capabilities.screenResolutionY;
//设置窗口的宽和高
var winW:int = 200;
var winH:int = 200;
// 设置窗口起始坐标
var winX:int = (resX / 2) - (winW / 2);
var winY:int = (resY / 2) - (winH / 2);
// 创建代码,然后传递给URLLoader.load( )
// 打开新浏览器窗口
var jsCode:String = "javascript:void(
newWin=window.open('http://www.person13.com/'," +
"'newWindow', 'width=" + winW +
", height=" + winH + "," +
"left=" + winX + ",top=" + winY + "'));";
// 使用URLLoader 对象调用JavaScript 函数
urlLoader.load(new URLRequest(jsCode));

检测设备音频
hasAudio
 检测设备音频hasAudio指定播放器是否在具有音頻功能的系統上運行 
hasMP3指定播放器是在有沒有MP3解碼器的系統上運行 
trace("hasMP3: " + Capabilities.hasMP3);//true 
trace("hasAudio: " + Capabilities.hasAudio);//true 
因為聲音文件是非常大的,對於網絡來說。 我們通常會避免沒有音頻的用戶下載音頻文件。 
// 只有當播放器可以播放聲音才再如包含聲音的.swf 
if (flash.system.Capabilities.hasAudio) { 
content = "sound.swf"; 
} else { 
content = "silent.swf"; 
} 
//即時系統有播放音頻能力也不意味著它有播放mp3的能力。 因此當發布含有mp3內容時應用 
flash.system.Capabilities.hasMP3 屬性檢測下目標設備。 
if (flash.system.Capabilities.hasMP3) { 
var url:URLRequest = new URLRequest("sound.mp3"); 
sound = new Sound(url); 
sound.play( ); 
} else { 
// code to load an external .swf containing a ADCP sound 
} 
檢測設備視頻 
hasEmbeddedVideo指定播放器是否支持嵌入視頻 
hasStreamingVideo指定播放器是否支持視頻流首先檢測用戶能否播放視頻流,如果返回false ,再檢測能否支持內嵌視頻,如下 
if(flash.system.Capabilities.hasStreamingVideo) { 
// 播放視頻流 
} 
else if(flash.system.Capabilities.hasEmbeddedVideo) { 
// 下載內嵌視頻的swf文件 
} 
else { 
// 
}

沒有留言:

張貼留言