人非木

大丈夫处世,不能立功建业,几与草木同腐乎?

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/


 

posted on 2008-09-16 11:02  人非木  阅读(319)  评论(0编辑  收藏  举报

导航