About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Sep

    14

    在软件接力的过程中,经常会遇到需要将舞台上选中的位图(或其它对象)转换成影片剪辑的需求,图层和元件多的时候可以批量处理,方法如下。

    第一种方法:BatchPane + JSFL

    1、安装 BatchPane,安装方法《Flash IDE 批处理面板:BatchPane》。

    2、在 BatchPane 中输入以下代码: 

    var document = fl.getDocumentDOM();
    document.selectNone();

    var libraryItem = element.libraryItem;

    //这两行 _name 处理不是重点,只是为了处理位图转换后元件的名称
    //因为 PSD 或 AI 文件导入后一般都带有文件夹的路径,自己随意处理规则
    var _name = libraryItem.name;
    _name = _name.substr(_name.lastIndexOf("/") + 1);

    element.selected = true;
    document.convertToSymbol('movie clip', _name , 'top left');

    第二种方法:纯粹的 JSFL 代码

    var document = fl.getDocumentDOM();

    //被选择的所有对象
    var selections = document.selection;

    document.selectNone();

    for(var i=0; i <selections.length; i++)
    {
        var element = selections[i];
        var libraryItem = element.libraryItem;

        //这两行 _name 处理不是重点,只是为了处理位图转换后元件的名称
        //因为 PSD 或 AI 文件导入后一般都带有文件夹的路径,自己随意处理规则
        var name = libraryItem.name;
        name = name.substr(name.lastIndexOf("/") + 1);

        fl.trace(name);

        element.selected = true;

        document.convertToSymbol('movie clip', name , 'top left');

        document.selectNone();
    }
    fl.trace("结束:》》》》》》》》》》》》》》》》》》》》》》》");

    Sep

    11

    计算机意外断电或非法蓝屏意外关机,重启系统后运行 Flash CC 再打开工程文件报错,打开 “xxxxxxx.fla” 时发生错误。虽然可以用反编译工具还原动画,但库资源的命名会全部以反编译工具的规则重新命名,对继续进行工作非常不便。找到了一个完美解决的方法:

    使用 WinRAR 打开损坏的 fla 文件(会弹出一个对话框,报 “!  xxxx.fla: 不可预料的压缩文件末端”,把对话框关了不用管它),然后点“工具”下拉菜单里的“修复压缩文件”(如果找不到这个菜单命令,请升级 WinRAR 到最新版本),在 xxxx.fla 文件相同的目录里会生成一个“rebuilt.xxxx.fla”文件,再使用 Flash CC 打开,一切完好如初。

    Aug

    27

    检测是否为 iOS 苹果平板电脑

    • 0 Comments
    • Flash Platform
    //是否为平板
    static public const IS_IPAD:Boolean = _IS_IPAD();

    static private function _IS_IPAD():Boolean
    {
        var os: String = Capabilities.os;

        if (os.indexOf("iPad") > -1) 
        {
            return true;
        } 
        return false;
    }

    对于 iOS 设备而言,这个方法比较直接。

    安卓暂时没找到通过字符串来判断的方式,只能通过尺寸来判断一下了《判断是否为移动设备的大体框架代码》。

    Aug

    24

     如果只写 zh_Hans 与 zh_Hant 只能对 iOS 系统起作用,在 Android / 安卓中文系统中它们并不会起作用。安卓需要写 zh-CN 与 zh-TW。注意下划线与减号的区别、以及英文字母大小写的区别。
    <name>
        <text xml:lang="en">默认英文名称</text>
        <text xml:lang="zh_Hans">iOS 简体中文名称</text>
        <text xml:lang="zh_Hant">iOS 繁體中文名稱</text>
        <text xml:lang="zh-CN">Android 简体中文名称</text>
        <text xml:lang="zh-TW">Android 繁體中文名稱</text>
    </name>

    Aug

    16

    因为 F 大的网站已经好久都打不开了。幸好以前为了自己方便查阅保存了一份离线文档。做桌面程序有需要的就拿去吧。

    下载链接:杂志时代FlashPacker在线帮助.rar(已经另存为了离线文件)

    Aug

    9

    Adobe Scout 入门教程(中文版)

    • 1 Comments
    • Flash Platform

    Adobe Scout  的功能比 FB 专业版内置的概要分析器强大多了。想学 Adobe Scout 使用方法的开发者建议花一两个小时阅读一遍吧。

    官方地址:http://www.adobe.com/cn/devnet/scout/articles/adobe-scout-getting-started.html

    Jul

    30

    StarlingSWF 停止嵌套的 MC

    • 0 Comments
    • Flash Platform
    private function stopMC(mc:SwfMovieClip):void
    {
        mc.stop();
        //记得将播放头设为0,否则它会产生一些意想不到的效果
        //因为默认它的播放头在 -1 位置,并不是在 0 的位置
        mc.currentFrame = 0;

        for(var i:uint = 0; i < mc.numChildren; i++)
        {
            var child:SwfMovieClip = mc.getChildAt(i) as SwfMovieClip;

            if(child)
            {
                stopMC(child);
            }
        }
    }

    Jul

    24

    让 JS 安全的运行在 AS 里

    • 1 Comments
    • Flash Platform

    什么时候都要记得真机调试,否则会死的很惨。先上一段代码:

    package
    {
        import flash.display.Sprite;
        import flash.events.LocationChangeEvent;
        import flash.media.StageWebView;
        //一个 AIR for iOS 的主类
        public class MainTest extends Sprite
        {
            private const view:StageWebView = new StageWebView(true);
            
            public function MainTest()
            {
                super();
                test();
            }

            private function test():void
            {
                view.addEventListener(LocationChangeEvent.LOCATION_CHANGING, locationChaningHandler);

                var xml1:XML = 
                    <script type="text/javascript">
                        var name = prompt("写点什么?","")//当运行的时候我们点击取消   
                        if(name)
                            alert("1:" + name);
                        else
                            alert("2:" + name);
                    </script>;

                view.loadString(xml1.toXMLString());
            }

            private function locationChaningHandler(e:LocationChangeEvent):void
            {
                //我们并不是为了跳转网页,所以这里中止跳转
                e.preventDefault();
            }
        }
    }

    在桌面 AIR 环境中测试,点击取消,输出"2:null",看起来一切良好。可是当连接上手机后,在真机测试环境中测试发现同样的操作结果输出了“1:null”。这和 JS 的自动转型规则完全不一样了,也就是这种 JS 代码运行在 AS 里面它显的那么的不安全。

    将上面的 XML 改为如下这个样子,让 JS 代码运行在一个函数里:

    var xml1:XML = 
        <script type="text/javascript">
            function run()
            &#x7B;
            var name = prompt("写点什么?","");                            
            if(name)
                alert("1:" + name);
            else
                alert("2:" + name);
            &#x7D;
            run();
        </script>;

    现在无论是在桌面上测试,还是在真机环境下,它们都保持输出一致了,都是“2:null”。其中 &#x7B; 与 &#x7D; 两个字符是在 E4X 里 XML 代表的左右大括号转字义符的实体字符。

    也可以将 JS 代码完全剥离 AS,使用一个纯文本文件,然后使用 Embed 标签嵌入。但这个方法对于纯 Flash IDE 开发人员并不适用,因为 Embed 标签需要 FLEX SDK 支持。

    JS 文件(因为是在纯文本文件中,所以左右大括号就不需要转义了;而且仍然要在函数中运行,否则它依然是不安全的,会和桌面测试环境不一致):

    <script type="text/javascript">
        function run()
        {
            var name = prompt("写点什么?","");                            
            if(name)
                alert("1:" + name);
            else
                alert("2:" + name);
        }
        run();
    </script>;

    然后 AS 代码也稍作修改:

    //这里必须写上 mimeType="application/octet-stream"
    [Embed(source="/assets/js/run.js", mimeType="application/octet-stream")]
    static private const JS:Class;

    static public const js:String = new JS();

    private var view:StageWebView = new StageWebView(true);

    private function test():void
    {
        view.addEventListener(LocationChangeEvent.LOCATION_CHANGING, locationChaningHandler);
        view.loadString(js);
    }

    备注:使用静态嵌入的 JS 文件会有两个缺点:1、不能动态的生成 JS 代码了。2、不能使用 AS 的特性了,比如 XML 的绑定语法之类的都不能用了。

    Jul

    24

    在 E4X 语法中,XML 的转义字符有些特别。当这些字符用于属性、属生值、节点、节点值时需要用到转义的情况。其中左右大括号最为特别,因为在 E4X 中语法里,“绑定”语法使用的符号是左右大括号。

     

    Jul

    22

    error while loading initial content

    • 0 Comments
    • Flash Platform

    一般报这样的错误是因为 SWF 内部版本号与 AIR SDK 版本不相符产生的,或 SWF 产生错误运行中止(内部版本号大于 AIR SDK 版本),编译器参数中修改 -swf-version 值,或下载对应的 AIR SDK 版本。

    进程已终止,没有建立到调试器的连接。 
    error while loading initial content

    关于内部版本号: