About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Dec

    8

    如果已经弹出过 WIN10 升级提示(如果没有弹出过提示,就跳过这一段),先进入“控制面版—默认程序—程序和功能—查看已安装的更新”,找到 “KB3035583” 更新补丁将它删除。

    1、进入“控制面版—管理工具—服务“,找到“Windows Update”,将定改为禁用。

    2、在开始菜单的运行栏里输入“gpedit.msc”,启动本地组策略编辑器,“计算机配置—管理模版—Windows 组件— Windows Update—配置自动更新”,将它改为禁用。

    从此以后世界彻底的清静了。

    特别注意:按以上步骤设备后,不要再使用任何第三方的程序去更新系统补丁,比如 360,腾讯管家之类的,否则系统在下一次重启时将会卡在配置 Windows 失败的界面,无法进入系统(包括安全模式!!!)。

    Nov

    17

    很多链接已经打不开了,很多资料正在流失,仅为了收藏一下。
     

    More...

    Nov

    17

    Adobe 官方 Game SDK 的 API 手册链接:http://www.adobe.com/devnet-docs/gamingsdk/anedocs/

    Nov

    16

    我挺讨厌 Creative Cloud 这个东西的,每次下载和安装非常的慢,而且不能备份安装程序本身,每次重装系统后又得重新下载和安装,而且是完全捆绑式的安装非常令人反感。偶然看到这个页面《Creative Cloud 2015 Downloads: Adobe CC 2015 Direct Links / Trials》,我收藏一下先。

    必须使用迅雷下载

    原文链接http://prodesigntools.com/adobe-cc-2015-direct-download-links.html

    More...

    Nov

    10

    自定义函数的参数是array、point等类型时不能指定默认值。比如:

    var a: Array = [123];
    function test(b: Array = [120])
    {
     trace('b:' + b);
    }
    test(a);
    trace("Rarray:" + a);

    上面这个代码编译时就会报错:参数初始值设定项未知或不是编译时常数。改成下面这样子就可以了:

    var a: Array = [123];
    function test(b: Array = null) {
     if (== null) b = [120];
     trace('b:' + b);
    }
    test(a);
    trace("Rarray:" + a);

    Nov

    8

    1、按下 Ctrl + ` 组合键,输入以下代码,并回车:

    import urllib2,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp)else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://packagecontrol.io/' + pf.replace(' ''%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf)'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

    2、重启 Sublime Text。

    3、使用 Ctrl + Shift + P 打开命令行模式,在里面输入“Install Package” 即可搜索需要的 Package。

    4、输入选择 ConvertToUTF8 后,再次重启 Sublime Text,就可以解决中文乱码的问题。

    Nov

    3

    API 手册中写的是:

    注意:当在 Mac® OS X 上选择并打开多个文件时,AIR 将调度单个 invoke 事件,该事件在 arguments 数组中包含所有所选文件的名称。但是,在 Windows ® 和 Linux 中,AIR 将为 arguments 数组中只包含该文件名的每个所选文件调度一个单独的 invoke 事件。

    这句话前半句对 MAC 写的很清晰,但后半句对 Windows ® 和 Linux 写的很含糊。

    举个例子:AIR 程序先关联某个后缀名,然后同时选中两个文件后,右键菜单中选择“打开”。当应用程序启动后就会发生 invoke 事件,但 MAC 和 WIN 上各有区别。

    虽然选中了两个文件,但在 MAC 上只会调用一次 invoke 事件,在 arguments 数组参数中包含两个元素,分别是对应的两个文件名(请注意是文件名类型是 String,不是文件 File 类型)。而在 WIN 系统里,两个文件在同一个应用里会产生两次 invoke 事件,并且 arguments 数组长度为 1,也就是数组元素永远只包含 1 个元素

    Nov

    1

    Flex MXML 花括号绑定语法在编写程序时非常方便,可以省去大量的编码工作,让编译器自动完成。在使用列表类组件时,有时会遇到这样的提示:数据绑定将无法检测对“length”的指定。虽然它不会影响最终结果,但在调试和发布时都会遇到警告。

    比如,有一个按钮只想在列表类组件选中一行时启用,在未选中或多选几行时禁用,虽然可以这么写:

    //它会产生一个警告:数据绑定将无法检测对“length”的指定
    enabled="{Boolean(dg.selectedItems.length == 1)}"

    从 API 手册中可以查到 selectedItems 可以用于绑定操作,但它是一个 Array 对象,而 Array 的 length 属性并不可以用于绑定操作。需要作一些修改: 

    //这样世界就安静了
    enabled="{Boolean(new ArrayList(dg.selectedItems).length == 1)}"

    因为 API 手册中写了 ArrayList 的 length 属性可以用于绑定操作。

    Oct

    31

    比较通用,反正 AS、JS 之类的都差不多语法。

    static public function randomAccountString(_len:uint):String
    {
        //帐号一般第一个字母不能为数字
        var charsForFirstChar:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        var firstChar:String = charsForFirstChar.charAt(uint(Math.random() * charsForFirstChar.length));

        var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        var randomChar:String = "";

        for (var i:Number = 0; i < _len - 1; i++)
        {
            randomChar += chars.charAt(uint(Math.random() * chars.length));
        }

        randomChar = firstChar + randomChar;

        return randomChar;
    }


    static public function randomPasswordString(_len:uint):String
    {
        //密码往往是区分大小写的,并且允许使用一些特殊符号
        var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,[]{}!@#$%&*()_-+=";

        var randomChar:String = "";

        for (var i:Number = 0; i < _len; i++)
        {
            randomChar += chars.charAt(uint(Math.random() * chars.length));
        }

        return randomChar;
    }

    Oct

    31

    无论是在 Web 版还是在桌面 AIR 运行时环境,无论是默认的或自定义的项编辑器 itemEditor,都 发现存在这个问题:先让运行时环境失去焦点,然后再让运行时环境重新获得焦点。此时如果 DataGrid 有焦点,并且有项被选中,会发现被选中的项的项编辑器会一闪而过,虽然不影响操作,但有碍视觉效果,尤其是使用一个较大面积的自定义项编辑器时(如果是默认文本项编辑器因为面积很小甚至很难注意到它)。可以用如下方法处理:

    定义一个变量 canEnabledItemEdit 默认值为 true, 表示默认情况下允许点击单元格后自动使用项编辑器。但需要通过对 itemEditBeginning 事件加以验证:

    private function itemEditBeginningHandler(e:DataGridEvent):void
    {
      if(!canEnabledItemEdit)
     {
      e.stopImmediatePropagation();
      e.preventDefault();
     } 
    }

    与之对应的在运行时失去和获得焦点时设置 canEnabledItemEdit 的值: 

    //假装很高级的省略了一些包与类相关的代码
    NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, deactiveHandler);
    NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, activeHandler);

    private function deactiveHandler(e:Event):void
    {
     canEnabledItemEdit = false;
    }

    private function activeHandler(e:Event):void
    {
     this.callLater(callLaterHandler);
     
     function callLaterHandler():void
     {
      canEnabledItemEdit = true;
     }
    }