zoukankan      html  css  js  c++  java
  • Cook Book 第二天 运行环境识别修改

    完全友好的flash载入前的操作还真多。。

    cookbook 第三章

    flash.system.Capabilities

    检测播放器版本

    检测操作系统

    检测播放器类型

    检测显示设置

    缩放影片

    改变对齐方式

    ---其余---

    隐藏Flash播放器的菜单项

    检测设备音频

    检测设备视频

    提示用户改变播放器设置

    处理系统安全

    ------

    检测播放器版本

    1、第一种方法使用JavaScript 或VBScript 检测Flash 播放器版本。但是很多脚本在不同的平台不
    同的浏览器上会有兼容性问题出现。
    2、服务端检测也有局限性,如果你无权限创建服务端脚本,这就很困难了。
    3、大多基于ActionScript 的检测技术不能在ActionScript 3.0 上用了。ActionScript 3.0 有一套自己
    的检测客户端版本的方法,那就是flash.system.Capabilities.version 属性。但是它不能检测Flash
    Player 8.5 之前的版本。
    还好Adobe 已经考虑到所有这些问题,推出了Flash Player Detection Kit 来指导你用最好的办
    法检测播放器版本。
    检测包里包含文档和各种解决办法,包括VBScript 和JavaScript 例子;ActionScript 检测;还
    有服务端的ColdFusion 和PHP 脚本检测。
    基于ActionScript 的检测是比较好的,它可以支持到Flash播放器4,它使用一个Flash 4 .swf t来
    检测当前版本,你所要做的就是在脚本里设置最小的版本变量,如果当前版本高,它会调用指
    定的内容。

    --------------------

    检测操作系统

    使用flash.system.Capabilities.os 属性

    下面的代码展示检测操作系统:
    var os:String = System.capabilities.os.substr(0, 3);
    if (os == "Win") {
    // Windows-specific code goes here
    } else if (os == "Mac") {
    // Mac-specific code goes here
    } else {
    // Must be Unix or Linux
    }

    -------

    检测播放器类型

    使用flash.system.Capabilities.playerType 属性.

    播放器的类型有:
    浏览器插件形式存在于Mozilla 或Firefox
    ActiveX 控件形式存在于Internet Explorer
    独立播放器
    外部播放器,它与Flash IDE进行交互。
    这些都是.swf 运行的环境,如果你要使用脚本进行交互,这就需要知道应用程序到底在Internet
    Explorer 或其他的浏览器运行。如果在独立播放器里运行,那么JavaScript等脚本就不管用了。
    检测播放器类型,察看flash.system.Capabilities.playerType 的值。它可能是PlugIn, ActiveX,
    StandAlone, 和External:
    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
    }

    ----------------

    检测系统语言

    // Example output: en-US
    trace(flash.system.Capabilities.language);
    var greetings:Array = new Array( );
    greetings["en"] = "Hello";
    greetings["es"] = "Hola";
    greetings["fr"] = "Bonjour";
    var lang:String = flash.system.Capabilities.language.substr(0, 2);
    if (greetings[lang] == undefined) {
    lang = "en";
    }
    trace(greetings[lang]);
    如果要创建国际化的Flash,可以把文本保存在数组里,根据语言动态显示,或者直接做成多个
    Flash版本(每个语言一个),如myMovie_en.swf, myMovie_es.swf, myMovie_fr.swf, 等.
    //从capabilities 对象上得到语言值
    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++) {
    常青翻译!
    http://blog.csdn.net/lixinye0123
    if (supportedLanguages[i] == lang) {
    useLang = lang;
    break;
    }
    }
    // 载入对应Flash
    var movieURL:String = "myMovie_" + useLang + ".swf");

     

    --------------

    检测显示设置

    screenResolutionX 和screenResolutionY 属性返回桌面的显示分辨率:
    trace(flash.system.Capabilities.screenResolutionX);
    trace(flash.system.Capabilities.screenResolutionY);

    有了这些值,你可以决定怎样显示flash影片。这一点对于Flash播放器也是很重要的,例如,手
    机屏幕和电脑屏幕尺寸是不同的,因此你要根据情况载入不同的尺寸的内容。
    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));
    另外,得到屏幕分辨率可以确定是否缩放Flash 影片。例如,用户把屏幕分辨率调高了,这时
    字体就变得小了。

    ------------

    缩放影片

    stage.scaleMode = StageScaleMode.SHOW_ALL; ---默认

    noBorder 模式在保持原始比例下进行缩放以适应播放器,但是,如果播放器和影片比例不匹配,
    影片显示不下的会被剪切掉,使用下面的语句设置:
    stage.scaleMode = StageScaleMode.NO_BORDER;
    exactFit 模式缩放影片适应播放器,它改变了电影原始比例,如果必要,它会匹配播放器,这
    样电影总是填充整个播放器,但是这样电影中的元素可能会扭曲,代码如下:
    stage.scaleMode = StageScaleMode.EXACT_FIT;
    noScale 模式即不进行缩放,保持原始比例。使用该模式不要忘了设置对齐方式
    stage.scaleMode = StageScaleMode.NO_SCALE;
    scaleMode 属性值并不影响右键菜单里功能,不过你可以禁用菜单里的缩放功能

    --------

    改变对齐方式

    使用stage.align 属性

    默认下Flash 电影会居中显示。可以利用任何可视化对象的stage.align 属性来重新设置电影的对
    齐方式。flash.display.StageAlign 类的属性:
    这里没有水平和垂直都居中的模式,其实,默认模式就是它了,但如果你改变了对其方式又想
    回到默认模式这时后只能传递空字符串""。

    package {

    import flash.display.Sprite;
    import flash.display.StageScaleMode;
    import flash.display.StageAlign;
    public class ExampleApplication extends Sprite {
    public function ExampleApplication( ) {
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_RIGHT;
    graphics.beginFill(0xff0000);
    graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
    graphics.endFill( );
    }
    }
    }

    嘿嘿,推荐个团购导航

    http://www.izhaotuan.com/


  • 相关阅读:
    Slim + Twig 构建PHP Web应用程序
    Slim
    nginx+php+flight 构建RESTFul API
    Redis Master/Slave 实践
    spring.net +dapper 打造简易的DataAccess 工具类.
    API文档管理工具-数据库表结构思考.
    解决oracle报 ORA-12560错误,只有服务器重启恢复正常的问题
    浮点数的编码
    Jquery.BlockUI-遮罩
    class.forname & classloader
  • 原文地址:https://www.cnblogs.com/melonlee/p/1291503.html
Copyright © 2011-2022 走看看