[隐藏]

目录

  • 添加API时遇到的问题

    • AS2
    • AS3

    1. 给文本赋值不能使用动态文本变量

    改用如下方式给文本赋值:

    this["myTxt"].text=_root.testVal;

    2. 使用 _root 和 _level0

    不建议在您的游戏中引用 _root 。

    如果您在测试您的游戏兼容性时遇到了问题,请替换这些引用然后再进行测试。

    使用 _level0、_leveln 或关卡中加载 loadMovie 在 AVM1Movie 中不支持,所以您必须更改依赖于它的代码。

    3. 对flash编译版本有要求吗?

    有。需要编译成flashplayer8(包含8,9,10)以上版本

    4. 可以通过调用 loadMovieNum("url", levelNum) 来加载文件吗?

    不可以。应当改用 MovieClipLoader 这个来实现加载外部文件

    5. 移动 _root 使 MovieClip.hitTest 表现怪异

    如果您更改 _root._x 或 _root._y,您可能会注意 MovieClip.hitTest 与平常相比表现大为不同。 这是因为 MovieClip.hitTest 在 AS3 容器内部时脱离全局坐标,但是它以其他方式基于 _root 坐标。

    下面是可以放在初始化代码内的一小段代码,它将使用下面为您提供翻译的这段代码检测容器并换出 MovieClip.hitTest 执行。

    /* detect AS3 container and patch MovieClip.hitTest */
    if (_level0 === undefined && MovieClip.prototype.oldHitTest === undefined) {
        var realRootForReal = this;
        MovieClip.prototype.oldHitTest = MovieClip.prototype.hitTest;
        MovieClip.prototype.hitTest = function (x, y, shapeflag) {
            if (arguments.length === 1) return this.oldHitTest(x);
            var obj = {x: x, y: y};
            realRootForReal.localToGlobal(obj);
            return this.oldHitTest(obj.x, obj.y, shapeflag);
        }
    }
    

    6. Flash 变量

    为了 AS2 可以正确挑选FlashVars,您需要使用指向 SWF 的 URL 代替。

    下面是如何将变量从 HTML 传递到您的 Flash 的示例:

    <embed src="game.swf?variable=awesome"></embed>
    

    7. 字符串不再作为 MovieClip 引用使用

    在 Flash 的早期版本中,它允许您在预计存在 MovieClip 引用的地方使用字符串。

    当该内容加载到一个 AS3 容器时,Flash 不再允许这样操作,而必须更改为引用。 例如:

    // BROKEN: "mc2" is a String, not a MovieClip
    mc.setMask("mc2");
    
    // FIXED: mc2 is a variable that references a MovieClip
    mc.setMask(mc2);
    

    8. 我的自定义鼠标 滑到积分面板上的时候被遮挡住了,应该如何处理?

    在你的代码中使用Mouse.hide();的地方后面加上下面这句代码:

    _global.bridge.setMouseVisible(false);
    

    在你的代码中使用Mouse.show();的地方后面加上下面这句代码:

    _global.bridge.setMouseVisible(true);
    

    9. 为什么我的游戏上传之后声音出不来了?

    需要修改创建声音对象的方式。

    如果原来是这么写的:

    var snd=new Sound();
    

    需要改为:

    var snd=new Sound(_root);
    

    1. 我的自定义鼠标滑到弹出面板(如:积分)上的时候被遮挡住了,应该如何处理?

    在代码中,有Mouse.hide();的地方,在其下方加入如下代码:

    _stageHold.setMouseVisible(false);
    
    在代码中,有Mouse.show();的地方,在其下方加入如下代码:
    _stageHold.setMouseVisible(true);
    

    注:其中_stageHold变量,通过如下代码得到

    如果存在游戏主文档类

    var _stageHold:* = CMain.serviceHold;
    // CMain为你的主文档类
    

    如果无主文档类

    var _stageHold:* = root["serviceHold"];
    

    2. 为什么积分,推荐等面板无法显示出来

    步骤1.查看代码中是否加入相应功能API的id

    解决方法:加入相应的id

    步骤2.检查是否由于游戏使用了预加载

    解决方法:去掉预加载后重新上传游戏进行调试

    步骤3.检查相应调用代码是否被正确执行到

    解决方法:假如在调试推荐API时,可以这样做:

    var _stageHold:* = root["serviceHold"];
    trace(_stageHold);//保证输出的值不要为null
    if(_stageHold){
    	_stageHold.showGameList();
    }
    

    3. 为什么成功上传了游戏,却一直提示无法预览?

    (目前原创平台上的SDK版本为3.5和4.5)

    查看FLEX项目的SDK版本,如果版本低于3.5请更新至3.5(播放器版本为9.0至10.0以下)

    如果高于3.5低于4.5请更新至4.5(播放器版本为11.2)

    4. 为什么游戏加上API后,构造函数中所引用的stage对象值变为null?

    步骤一:把构造函数体里面的代码注释掉。

    步骤二:在构造函数体里面添加,如下代码

    if(stage!=null)
         init4399();
    else
         addEventListener(Event.ADDED_TO_STAGE,init4399);
    

    步骤三:声明新的函数,如下代码:

    function init4399(evt:Event = null):void{
        if(hasEventListener(Event.ADDED_TO_STAGE)){
            removeEventListener(Event.ADDED_TO_STAGE,init4399);
        }
        //把步骤一注释掉的代码(不包含注释符),全部拷到这里面来
    }