27
2014

新域名 crz.la

如题,crz.la
还在建设中
但以后会把东西搬过去…

0
21
2013

AS3 与 JS 通信交互

Tags: ,

ExternalInterface 是 AS3 提供的和宿主交互的接口,它有两个方法:call/addCallback 分别用来调用宿主方法和监听宿主调用。

ExternalInterface.call(function_name[,string_arg_1,string_arg_2,...]);
ExternalInterface.addCallback(function_name,function);

虽然只有两个方法,但在浏览器里调用的时候还是很容易出现错误,主要有三个方面的原因:

  • 权限
  • 控件对象
  • flash 加载状态

权限

要和 JS 通信的话需要在 HTML 里声明脚本访问权限,对于 object 标签,需要添加<param name="allowScriptAccess" value="always">标签,embed 则添加属性allowScriptAccess="always"

当 swf 文件和 html 文件访问域名不同时还会遇到跨域问题,需要在 AS 代码里允许跨域访问。 flash.system.Security.allowDomain(sourceDomain)

控件对象

IE 和 非IE 使用不同的标签加载 swf 文件,引用对象的方法也不一样,需要根据不同浏览器分开处理。

<object id="swfobject" ...>
    <embed name="swfobject" ...>
    ...
</object>
<script>
function thisMovie(moviename){
    if(navigator.appName.indexOf('Microsoft')!=-1){
        return window[moviename];
    }else{
        return document[moviename];
    }
}
swfobj = thisMovie('swfobject');
thisMovie('swfobject').swffun();
</script>

这是网上搜到的代码,不过 ie10 下使用window[moviename]返回的是和非 ie 一样的对象集合,会出错。

<script>
function thisMovie(moviename,testfun){
    if(window[moviename] && window[moviename][testfun]){
        return window[moviename];
    }else{
        return document[moviename];
    }
}
swfobj = thisMovie('swfobject','swffun');
thisMovie('swfobject','swffun').swffun();
</script>

这是我更改过的代码,根据已知的接口方法来判断是否是正确的对象。

flash 加载状态

有时候 swf 文件比较大或者网络不给力,接口方法还没注册成功就被调用。

<script>
function initSwf(){
    var moviename = 'swfobject',
        testfun = 'swffun';
    if(window[moviename] && window[moviename][testfun]){
        swfobj = window[moviename];
    }else if(document[moviename] && document[moviename][testfun]){
        swfobj = document[moviename];
    }
    if(!swfobj){
        setTimeout(arguments.callee,100);
    }else{
        // 初始化代码
    }
}
</script>

通过不断测试接口方法是否可用来判断,也有人给出在 as 里调用 js 方法来初始化的办法。

if(ExternalInterface.available){
    ExternalInterface.call('initSwf');
}
0
17
2013

雷柏 H6080 蓝牙耳机使用小结

  • 夹头发、夹衣服,上半段的折叠部分在拿下来的时候经常会夹到。上半伸缩下半折叠的结构可能不会吧。。。
  • 蓝牙连接,有时候会不能正常连接,这不是个经常会出现的问题,但出现了却很烦人。
  • 还是蓝牙连接,不过要说的是多点连接,多点连接只能在一开始的时候,如果有一个点播放了声音,另一个点就不能连接。。。
  • 蓝牙单声道,单声道是用于语音的模式,音质比较差,有时连接设备会直接连接到单声道模式,这应该是有人说音质很差的真相吧!
0
22
2013

删除 EN 输入法

Tags:

Windows 输入法管理器的一个 Bug?在运行某些程序(通常是英文版程序)的时候,系统会自动添加英文输入法。因为同时存在不同语言,输入法图标前面还会出现语言图标。嗯~~~很碍眼。。。

自动添加的可能会出现一种情况,在语言栏可以看到输入法,但输入法设置窗口里看不到,要删除的话需要先手动添加对应的输入法再删除才可以。

单纯删除输入法是不够的,下次再运行那个程序的时候还是会自动添加。一劳永逸的解决方法是从注册表里删除。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layouts\00000409

PS:某些输入法是捆绑安装,卸载并不需要这么麻烦。。。

0
03
2013

AirDisplay/iDisplay 试用比较

Tags: ,

测试环境

  • PC: HP CQ41-204Tx/Win7 x64 SP1
  • 手机: Motorola XT615/Android 2.3.7
  • wifi: BCM4313 二合一无线网卡/Win7 虚拟 AP
  • AirDisplay: 1.5.3/1.7.0(PC 端)
  • iDisplay: 2.4.4/2.3.0

AirDisplay

  • 连接不够流畅,静态画面问题不大,视频、游戏之类的动态画面就显得很卡
  • 不能使用 Aero,会自动切换到 Win7 Basics 主题
  • 屏幕管理由软件实现(调整屏幕的位置,分辨率,方向等)
  • 只能使用 wifi 连接,没有 usb 连接
  • 只能从电脑上发起连接

iDisplay

iDisplay 有两种驱动模式,一种借助显卡(GPU)来渲染画面,另一种则由软件(CPU)渲染。显卡渲染的效果比较好,但需要显卡支持;显卡不支持的时候会提示虚拟显卡安装驱动,软件渲染和 AirDisplay 的效果一样。以上为猜测结论。。。

下面的说明只针对显卡渲染模式,也就是没安装驱动的情况。

  • 基本流畅,但是有延迟,而且鼠标还是会飘
  • 除了 wifi 连接,还可以使用 usb 连接,连接效果一样
  • 由系统管理屏幕(右击桌面,分辨率;winxp 选“属性”;也可以在托盘菜单里选“Settings/Display arrangement”打开)
  • 屏幕旋转后,手机上的程序需要重新全屏,否则显示不正常
  • 连接手机后会打乱桌面上的图标,断开后小概率出现问题
  • 可以在手机上双指缩放显示的内容,显示不完整时会出现一个透明框来快速调整显示的位置
  • 只能从手机上发起连接

windows 上同时安装 AirDisplay/iDisplay 的情况下,iDisplay 会强制安装驱动,不能跳过。应该是 iDisplay 检测到 AirDisplay 安装的虚拟显卡不支持显卡渲染。。。

0