• AS3与AS2的差异(简明列表)


    以前的程序是 AS2 写的,因为要用到 JSON ,感觉AS3方便些,没想到语言之间的差别不小,以下是遇到的一些问题的整理。

    官方的详细差异列表:http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/migration.html

    Object 不再是默认类型,引入无类型变量

    在 ActionScript 2.0 中,下面的两行代码等效,因为缺乏类型注释意味着变量为 Object 类型:
    var someObj:Object;
    var someObj;
    但是,ActionScript 3.0 引入了无类型变量这一概念,这一类变量可通过以下两种方法来指定:
    var someObj:*;
    var someObj;
    无类型变量与 Object 类型的变量不同。二者的主要区别在于无类型变量可以保存特殊值 undefined,而Object 类型的变量则不能保存该值,如果赋给它undefined,则会被转换为null

    #inlude 不再需要#

    以前使用 #include “mycodefile.as”,现在只需要 include “mycodefile.as” 就行了。

    getURL 的变化

    AS2:   getURL("javascript:ClearPreviousPhotoInfo()"); 

              getURL("http://www.cfh.ac.cn/",”_blank”); 

    AS3:

        var targetURL:URLRequest = new URLRequest("http://www.chinaontology.net/");
        navigateToURL(targetURL,"_blank");

    带下划线的变量不需要下划线了

    _root 变为 root ;其他的如 _x, _y,_visible,_width,_height,_parent 等等都是直接去掉下划线。

    注意:

    _xscale 变为 scaleX; _yscale 变为 scaleY;

    _xmouse 变为 mouseX;_ymouse 变为 mouseY;

     

    scale 值的表示方式改变

    AS2  _xscale = 200  表示 200%

    AS3 scaleX = 2  表示 200%

    文本框变量不能再用了

    AS2 里面创建一个文本框,直接赋给一个变量;代码中操作变量即可。现在不能这样用了。

    AS3 里面需要给文本框实例命名,然后使用文本框的 text 属性即可,更加面向对象。这个修改还是不错的。

    例如:  DocTitle.text = "文章标题";

    按钮点击事件

    AS2 里面,创建一个按钮实例 BtnOK,则点击它的事件这样写:

    BtnOK.onPress = function()

    {

    alert(" BtnOK is Pressed! ");

    }

    AS3 里面需要修改为

    function OK_Clicked(event:MouseEvent):void
    {

          alert(" BtnOK is Pressed! ");
    }

    BtnOk.addEventListener(MouseEvent.CLICK, OK_Clicked);

     

    访问父级对象里面的变量

    AS2 里面,主时间轴上代码有个 DebugMsg 变量,记录了调试信息;在子对象 MessageBox 的 ShowDebug 方法中可以这样引用这个变量:  _level0.DebugMsg

    AS3 里面这样用:

    主时间轴上  var DebugMsg:String = "这是调试信息!";

    子对象里面这样引用: MovieClip(this.parent).DebugMsg   此时 this.parent 指定的是 DisplayObjectContainer 类,需要将其转换为 MovieClip 对象,才能像 AS2 那样。

    _global 没有了,不能再用了

     

    取得对象的尺寸与屏幕的尺寸

    屏幕内有 MC1  ,则  stage.width 与 MC1.width 是一样的(BT!!)

    stage.width 语义不是屏幕的尺寸, stage.stageWidth 才是。 height的处理同理

    初始化参数的传递

    AS2 里面直接将参数放在Html文档的Object标签当中作为变量,每个参数可以独立放置。然后在 _root0 上就可以取得。

    AS3 里面不行了,方法是:

    (1)需要将参数放在 swf 文件后面

    <param name="movie" value="View.swf?myname=bruce" />

    (2)在Object 标签当中添加 FlashVars 变量

    <param name="FlashVars" value="sex=man&myname=bruce" />

    取得参数需要

    var param:Object = root.loaderInfo.parameters;
    var MyName = param["myname"];

    文献:有关参数传递的安全性话题 http://www.slideshare.net/taobaoued/flashxhtml-3432665

    MovieClipLoader 取消,以 Loader 取代,使用方法大变

  • 相关阅读:
    L1-009. N个数求和
    L1-008. 求整数段和
    L1-007. 念数字
    L1-006. 连续因子
    L1-005. 考试座位号
    L1-003. 个位数统计
    mtk preloader学习笔记
    android kernel启动学习笔记
    android MTK平台编译UBOOT学习笔记
    dota2输入法无候选框?
  • 原文地址:https://www.cnblogs.com/chinaontology/p/1723697.html
Copyright © 2020-2023  润新知