as3——检测系统语言,检测播放器的类型,检测版本

来源:互联网 发布:中国长征火箭 vi 知乎 编辑:程序博客网 时间:2024/05/21 18:48

用flash.system.Capabilities.language 属性和flash.system.IME 类可以知道显示影片的电脑使用的语言和用户将要输入的文本。
使用 flash.system.Capabilities.language属性可以测定电脑系统的语言。该属性返回一个两个字母的ISO-639-1的语言代码(如"fr"代表法语)。有的地方可能需要附加两个区域字母并用“-”号分开(例如,“zh-CN”代表“中文简体”而“zh-TW”代表中文繁体)。
对于语言代码一览表可以看http://lcweb.loc.gov/standards/iso639-2/englangn.html 和 http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
利用这一属性可以动态的载入适合语言的内容:
// Create an associative array with language codes for the keys
// and greetings for the values.
var greetings:Array = new Array(  );
greetings["en"] = "Hello";
greetings["es"] = "Hola";
greetings["fr"] = "Bonjour";

// Extract the first two characters from the language code.
var lang:String = flash.system.Capabilities.language.substr(0, 2);

// Use a default language if the language is not in the list
if (greetings[lang] == undefined) {
  lang = "en";
}

// Display the greeting in the appropriate language.
trace(greetings[lang]);
当要在影片中提供多种语言时,可以选择不同的方法。
    第一种方法,像前面的代码那样为所有影片中出现的文本创建相关的数组。另一种方法是在多个影片中创建固定的内容(每种语言创建一种)并且根据语言代码载入影片。利用这种技术,每个swf文件名应包含语言代码,例如myMovie_en.swf, myMovie_es.swf, myMovie_fr.swf等等。
// Get the language from the capabilities object.
var lang:String = System.capabilities.language.substr(0, 2);

// Create an array of the languages you are supporting (i.e.,
// the languages for which you have created movies).
var supportedLanguages:Array = ["en", "es", "fr"];

// Set a default language in case you don't support the user's
// language.
var useLang:String = "en";

// Loop through the supported languages to find a match to the
// user's language. If you find one, set useLang to that value
// and then exit the for statement.
for (var i:int = 0; i < supportedLanguages.length; i++) {
  if (supportedLanguages[i] == lang) {
    useLang = lang;
    break;
  }
}

// Load the corresponding movie.
var movieURL:String =  "myMovie_" + useLang + ".swf");
    了解用户根据自己系统怎样输入文本常常也很重要。语言可能有数以千计的情况,如汉语,日语,韩语。为了通过键盘输入这些字符,必须有一个叫做Input Method Editor(IME)的特殊程序。这通常是特殊语言操作系统的一部分。
    如果发现用户的系统中有IME,检测flash.system.Capabilities.hosIME的值会返回true或false。然后用flash.system.IME类获得更多资讯和互动。flash.system.IME能够告诉你是否用户正在使用IME或直接从键盘输入文本。这个属性是可写的,因此可以利用它打开IME。在某些平台和操作系统,可以发送一个字符串到IME转换成正确的字符,而且可以接受IME输出返回到一个文本域。因为它不能使用在所有系统,所以最好先检测操作系统。

 

 

用flash.system.Capabilities.playerType属性可以得知正在运行的swf的播放器类型。
播放器的类型包括:

  •     以插件的形式在网页浏览器中比如Mozilla或Firefox。
  •     用在Internet Explorer中的ActiveX控件。
  •     浏览器以外的独立播放器。
  •     整合到Flash IDE中的外部播放器。

    有些场合需要知道当前的swf运行在哪一种播放器中。例如,如果你正在做用浏览器代码(比如JavaScript, VBScript)的任何类型的集成,知道程序能否运行在Internet Explorer 浏览器或其它类型的浏览器是非常重要的,运行代码时这些浏览器可以做不同的行为。的确,重要是得知swf运行在独立播放器中,因为JavaScript等在这种情况下根本不能用。


    检测播放器的类型,可以看到flash.system.Capabilities.playerType的值,PlugIn, ActiveX, StandAlone和External。在if语句中可以使用:
if(flash.system.Capabilities.playerType == "Plugin") {
  // do actions for Mozilla, etc. browsers
}
else if(flash.system.Capabilities.playerType == "ActiveX") {
  // do actions for IE
}
else {
  // do actions for no browser
}

 

 

怎样确定用户使用的flash player的版本?
    利用Flash Player Detection Kit,从Adobe的网站检查播放器的版本,如果需要,可以升级播放器(http://www.adobe.com/software/flashplayer/download/detection_kit)。
    检测用户浏览器目前安装的flashplayer的版本是一个老问题了,而且已经被不同的开发者解决。通常由三种类型:

  •     浏览器代码检测
  •     伺服端检测
  •     ActionScript检测

    第一种方法用JavaScript或VBScript检测用户安装的flashplayer版本。多数代码在用在不同的平台和浏览器类型时会出现错误。
    假如你不懂伺服端代码,伺服端检测可能很困难的。
    大部分ActionScript的版本检测技巧不能直接用在ActionScript 3.0制作的swf。ActionScript3.0有自己的方法检测player的版本,它是flash.system.Capabilities.version的属性。当然,不能用在flashplayer8.5之前的版本。
Adobe已经彻底的研究了所有这些问题,而且带来了一个 Flash Player Detection Kit引导你完成检测player版本的最好的程序。
    这个Kit包括了针对不同问题和潜在的解决方案的文档,包括针对浏览器检测版本的的VBScript和JavaScript例子;针对ActionScript检测的.fla、.as、和.swf的文件;同时还有针对伺服端检测的ColdFusion和PHP的代码。
    以ActionScript为基础的检测可以成功的检测flashplayer4以上的任何版本。基本上,它是一个flash4的swf执行一个代码来检测当前player的版本;你需要做的仅仅是设置一个player版本的最小要求值作为代码的一个变量。如果player的版本满足了要求,就会载入指定的内容。如果不满足,就会重新引导浏览器到一个预定内容的页面。这个页面可以包含一个低版本的swf,一个非flash的内容或者一个提示用户升级flashplayer的公告,连接到Adobe站点的player升级页面。
    此外,这个Kit包含一个swf和Html用来初始化安装最新flashplayer版本的模版。如果用户的player不符合要求,浏览器会重新传入这个swf,通过它从Adobe网站上下载最新的flashplayer版本并且自动安装,最后重新返回到指定的flash,而用户不用离开你的位置。这个功能要求用户已经安装了flashplayer6.0.65.0。
    使用Flash Player Detection Kit里的这组技术是你能够精确的控制flashplayer版本和你要传递给观众的内容。
为了测试,老版本的flashplayer可以从Macromedia的站点获得(http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_14266)。

 
原创粉丝点击