关于运行环境 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"
,用于 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
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
指定播放器是否在具有音频功能的系统上运行
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 {
//
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值