About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Oct

    31

    第一步:安装 JAVA 运行时环境。

    第二步:启动 CMD 窗口,切换到 JAVA 虚拟机安装目录运行以下命令:

    keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore

    第三步:按提示输入相应的信息(输入信息时包含密码,完成后不要忘了密码)。

    这样一个 android.keystore 文件就生成了,可用于安卓应用在一些第三方平台接口功能调用时进行签名,比如 Facebook、微信神马的开放平台接口之类的。

    原文链接:http://blog.csdn.net/ms03001620/article/details/8490314

    Oct

    29

     

    曾经有一份真挚的爱情摆在我的面前,但是我没有珍惜,等到失去的时候才后悔莫及,尘世间最痛苦的事莫过于此,如果上天可以给我一个机会再来一次的话,我会跟那个女孩说“我爱你”,如果非要把这份爱上加一个期限,我希望是“一万年”。

    《大话西游》是我这 20 年期间看过遍数最多的电影(应该不下 20 遍吧),可还是没有看懂,每次看它的感觉就是“爱一个人是那么的痛苦”(这也是紫霞在最后被牛魔王刺中身亡之前说的话)。

    我看不懂是因为:孙悟空只是保护唐僧去西天取经,为什么必须要放下男女之爱?在 2013 年上映的《西游降魔篇》中也有讲到如果唐僧没有经历过小爱,怎知大爱。那唐僧西去取经,完成“大爱”任务时,又为何必须让孙悟空放下“小爱”?西去取经的经书作用是为了化解人世间的痛苦与仇恨,那为何又要让孙悟空和紫霞痛苦?最后将这种“痛苦”化为“仇恨”全部打在了牛魔王的身上发泄?

    Oct

    27

    乡村剧:《马向阳下乡记》

    • 0 Comments
    • Movies, TV and Celebrities

     

    如果说《篱笆·女人和狗》是我看过最满意的乡村剧,给 5 颗星的话,那么《马向阳下乡记》我只能给 3.5 颗星,其中有一颗星是给波哥的感情分。太不现实鸟~

    Oct

    27

    其实就是为了求一个独立对象匹配另一个固定的显示对象时的缩放值:

    var rec1:Rectangle = new Rectangle(0,0,w1,h1);//匹配的矩形对象(被缩放的对象)
    var rec2:Rectangle = new Rectangle(0,0,w2,h2);//被匹配的原矩形对象

    var _scaleW:Number = w2 / w1;
    var _scaleH:Number = h2 / h1;

    var scale:Number = Math.min(_scaleW,_scaleH);

    Starling 源码包中带有一个 Scaffold_Mobile 的项目样例代码,在多分辨率开发的过程中,里面通过 viewPort 属性来调整视口大小,为了保证游戏的清晰度和宽高比例,采用了屏幕留空白边距的方式:

     

    个人觉的这种留边效果比模糊效果更恶劣,至少在视觉上应该把这些黑色(舞台颜色)的留边区域放一个底纹图,但 viewPort 视口大小确定后, Starling 的舞台就不能再添加其它背景图片渲染至 viewPort 的外部。

    所以个人更喜欢 viewPort  与 Starling 的舞台大小一致,添加拼贴纹理图作为整个游戏的背景图,并保证背景图与屏幕大小一致,然后按比例缩放内部的单个 / 整个游戏场景更为合适。既便要留出边距保证清晰度,至少也有背景图作为过渡,没有这种黑色的边框这么突兀(因为一些安卓机的分辨率宽高尺寸是非常奇葩的,如果是用舞台背景作为边距,可能会是很大的一块区域)。

    Oct

    23

    1、注入点不起作用

    正确的样例代码:

    [Inject]
    public var someValue:SomeType;

    Inject 区分大小写,中括号后不能有分号,注入对象引用的修饰词必须是public(违反这些规则时编译器是不会报错的,但注入不会起作用)。

    2、元标签代码部份被剥离

    Flash / Flex 编译器会跳过不标准的元数据(所谓的元数据,其实就是指在编译阶段编译器可识别的特殊指令,不属于编译后代码的一部份),[Inject] 与 [PostConstruct] 都不属于 Flex 标准的元数据,它们都是开发者自定义的元数据。

    所以 Robotlegs 最好是使用它的现成 SWC “库文件”,而不是使用 AS “源文件”,因为库文件已经是预编译的代码,这些代码本身被编译器所需要的元数据所编译(如果使用了源代码的方式进行编译,它在调试模式时可能按原样方式输出,在发布 release 版本时这些代码会被全部剥离,变成无效代码)。

    如果一定要使用源代码的方式,那么需要按着如下方式:

    a:在 Flex 的项目属性里为编译器添加如下参数:

    -keep-as3-metadata+=Inject -keep-as3-metadata+=PostConstruct

     b:如果使用Flash IDE,要在发布设置中勾选“导出 SWC”文件(这样会强制 Flash 编译器)。

    3、在构造函数中访问的注入对象为 null

    不要在构造函数中直接使用注入对象的引用(因为这时候它们还没有被实例化,如果访问它们都会是null)。

    a、最常用的解决方法是从构造函数中删除这些访问注入对象的代码,把它们放在一个单独的函数中,并且使用一个 PostConstruct 元标签:

    [PostConstruct]
    public function init():void
    {
        //all dependencies have now been satisfied
        //这里就可以访问所有依赖注入的对象
    }

    b、Robotlegs 使用构造注入解决方案取代 属性与setter 对象注入,并且不要在构造函数中启动或执行任何复杂的业务。

    4、执行了一会儿意外停止

    比如下面的代码就有可能运行一会儿,然后意外停止,因为它使用的是一个局部变量,就有可能在垃圾回收时被回收掉了。需要改为使用一个实例变量始终引用这个上下文背景(context)对象。

    public class HelloActionScript extends Sprite
    {
        public function HelloActionScript()
        {
            var context:HelloContext = new HelloContext( this );
        }
    }

    5、Event Dispatch 调度事件时不起作用

    创建自定义事件时一定要,必须要,务必要重写 clone() 方法(发现很多人自定义事件时都不重写这个方法,包括 toString() 其实作为一种 AS 自定义事件时的编程习惯,都必须重写它们),clone() 方法是复制和转发事件所必须的(除非你这辈子不进行事件的复制与转发)。

    6、Mediator 对象没有实例化

    a:确认已经创建了映射;

    b:确认是否已经被添加到舞台;

    c:确认是先添加映射再被添加到舞台,而不是先添加到舞台再映射;

    d:确认是直接被添加到舞台的,添加后的 stage 属性是直接可以访问的(而不是先添加到一个没有舞台引用的父对象,再通过父对象添加)。

    7、访问未定义的方法

    如下样例代码:

    package controller 
    {
        import model.MyModel;
        import org.robotlegs.mvcs.Command;

        public class MyCommand extends Command
        {
            [Inject]
            public var model:MyModel;

            [Inject]
            public var event:MyEvent;

            override public function execute():void
            {
                model.myMethod();
            }
        }
    }

    有没有注意到上面有一个包是“model.MyModel;”?包路径中就带了一个 model。还有没有注意到一个实例变量是“var model:MyModel;”?也存在一个 model。开发人员的意图很可能是想访问一个 Model 实例myMethod() 方法,但编译器认为你想访问的是一个 model 包中一个名为 myMethod() 的全局方法。

    虽然代码在运行时作用域是由内而外的执行,先检查局部变量,再检查实例变量,再检查静态变量等等;但编译器编译代码时是如果发现你的变量定义与包名相同,它首先会使用最外部的包名,而不是代码中的定义。

    8、缺少注入映射

    还是一样,先看代码:

    injector.mapSingletonOf(ISomeType, SomeType);
    injector.mapSingletonOf(BaseSomeType, SpecialSomeType);

    在使用 mapSingletonOf() 这个方法后,第一个参数是一个映射类,而不是具体的类。

    比如下面这样子是正确的:

    [Inject]
    public var someValue:ISomeType;

    [Inject]
    public var someOtherValue:BaseSomeType;

    但下面这样直接使用具体的类就错了:

    [Inject]
    public var someValue:SomeType;

    [Inject]
    public var someOtherValue:SpecialSomeType;

    原文地址github.com/robotlegs/robotlegs-framework/wiki/Common-Problems

    Oct

    22

     

    ShoeBox 是一个基于 AdobeAIR 运行时环的免费工具,主要功能用于制作游戏、UI 等,能够很方便的处理游戏图片、创建位图字体等。

    官方网址:http://www.renderhjs.net/shoebox/

    一篇中文教程:“《利用 ShoeBox 制作位图字体》”

    Oct

    21

    Oct

    21

    Oct

    17

    中国好前夫:《离婚律师》

    • 0 Comments
    • Movies, TV and Celebrities

     

    被戴了绿帽子还能去参加前妻的婚礼,还给前妻和戴绿帽子的人做证婚人,这不是中国好前夫是神马?

    Oct

    16

     

    一个暴发户心态的女老板,一个屌丝心态的中年司机,一个屌丝心态的打工女白领,一个任性而坑爹的女儿,一个破坏别人家庭的小三,一个胡说八道又娘娘腔的男化妆师,一个年少气盛的街头画家……一整个电视剧除了那手机铃声《朋友的酒》之外,没有其它讨我喜欢的东西了……(我居然这么有耐性的看完了)。