as 帮助文档笔记(一)

AS2
1 严格数据类型定义  var usrName:String="";
2 可以使用 Array()、Boolean()、Number()、Object() 和 String(),进行转换数据类型
  var a = new Object();
  trace(a.constructor == Object); //输出 true
  var b = new Array();
  trace(b.constructor == Array); //输出 true
  trace(b.constructor == Object); //输出 false
  trace(b instanceof Object); //输出 true
3 关于原始和复杂数据类型
  原始的数据类型:Boolean、null、Number、String 和 undefined
  复杂的数据类型:Array、Date、Error、Function、 Object 和 XML
  原始比复杂的要更快更高效
  (1)MovieClip 数据类型 ;定义影片剪辑实例的变量就是MovieClip 类型数据
      动态创建影片剪辑  image_mc是动态创建的影片剪辑名称
       // 创建一个影片剪辑以放置该容器。
    this.createEmptyMovieClip("image_mc", 9);
    // 将图像加载到 image_mc 中。
    image_mc.loadMovie("http://www.helpexamples.com/flash/images/image1.jpg");
  (2) object数据类型,定义为类对象的变量是object类型,还有as自带的类
      var user:Object = new Object();
      user.name = "Irving";
      user.age = 32;
      user.phone = "555-1234";
  (3) void数据类型  值只有一个就是void,用来在函数定义中指示函数不返回值或如果要编写一个没有返回       类型的函数,可以将该函数的返回类型指定为 Void
       function displayFromURL(url:string):void{}
4 当表达式需要转换但没有严格指定变量的类型时,ActionScript 总是自动转换原始数据类型,严格数据   类型指定在编译时带来了几方面好处。一个优点是,对于严格指定类型的内置对象,Flash 会自动显
   示代码提示。声明数据类型(严格数据类型指定)有助于防止代码中出现错   误,或者可以在编译时
   诊断代码中的错误。
   例
   // 在 Student.as 类文件中
  class Student {
    public var status:Boolean; // Student 对象的属性
  }

  // 在 FLA 文件中
  var studentMaryLago:Student = new Student();
  studentMaryLago.status = "enrolled"; /* 赋值语句中类型不匹配: 找到的是 String,但需要的是 Boolean。 */

5 只要定义变量,就需要指定数据类型 var myNum:Number = 7; var birthday:Date = new Date();
   function welcome(firstName:String, age:Number) { }
   function square(myNum:Number):Number { var squared:Number = myNum * myNum; return          
   squared; }
 
   您在一个名为 Student.as 的文件中定义了 Student 类,则可以指定您创建的对象属于类型 Student
   var myStudent:Student = new Student();

6  指定"发布设置"和定义要用于发布文件的 ActionScript 版本:从主菜单中修改发布设置("文件">"发    布设置   
     "),或单击"属性"检查器中的"设置"按钮(确保没有选中任何实例)。要使用特定版本的      
    ActionScript 或 Flash Player,请在"发布设置"对话框中选择"Flash"选项卡,并从"ActionScript 版本    "弹出菜
    单中做出一项选择。
7  类型检查 是指验证变量和表达式的内容是否兼容使用typeof()函数,typeof(100)返回的指示number
8  无需在 ActionScript 中显式添加数据类型信息。ActionScript 编译器允许在编译时使用不存在的属性    和调用
    不存在的方法。这使您可以在运行时动态创建属性和指定方法。
    可以在编译时使用未知的属性和方法,因为代码的限制性更小,所以,这会给某些编码情形带来好
    处。例如,下面的代码创建了一个名为 runtimeTest() 的函数,它调用一个方法并返回一个属性,    这两个
    事件对编译器来说都是未知的。代码不会生成编译时错误,但是如果属性或方法在运行时不能    访问,就会出    现一个运行时错误。
    function runtimeTest(myParam) {
    myParam.someMethod();
    return myParam.someProperty;
  }
9  变量  最好在定义变量的时候设置初始化值,初始化变量有助于在播放 SWF 文件时跟踪和比较变量的值。通       常是在时间轴上面的第一帧或SWF文件开始播放时加载的类中完成

10  可以在时间轴中的帧上声明变量,直接在对象上声明,或在一个外部类文件中声明。并非所有变量都需要显      式定义。一些变量是 Flash 自动创建的。例如,要查找舞台的尺寸,应该使用以下两个预定义变量的值:
   Stage.width 和 Stage.height。
11 尽量使用简化的方式赋值:
      var myObj:Object = new Object();
      myObj.firstName = "Steve";
      myObj.age = 50;
      myObj.childrenArr = new Array("Mike", "Robbie", "Chip");
      简化为
     var myObj:Object = {firstName:"Steve", age:50, childrenArr:["Mike", "Robbie", "Chip"]};
12 变量包含的数据类型会影响如何以及何时更改变量的值。原始数据类型(例如字符串和数字) 是按值进行传     递的,这意味着使用的是变量的当前值,而非对该值的引用。复杂数据类型的例子包括 Array 和 Object 数据        类型,这里面定义的变量是对值的引用。
     如:
     function zeroArray (theArr:Array):Void {
     var i:Number;
     for (i = 0; i < theArr.length; i++) {
       theArr[i] = 0;
     }
   }
   var myArr:Array = new Array();
   myArr[0] = 1;
   myArr[1] = 2;
   myArr[2] = 3;
   trace(myArr); // 1,2,3
   zeroArray(myArr);
   trace(myArr); // 0,0,0

AS 3
一 actionscript快速入门
每章的最后都有实例
1 另外一种变量声明方法。在将一个影片剪辑元件、按钮元件或文本字段放置在舞台上时,可以在"属性"检查器
   中为它指定一个实例名称,在flash后台就可以引用这个变量,例如,如果您将一个影片剪辑元件放在舞台上并  
   为它指定了实例名称 rocketShip,那么,只要您在 ActionScript 代码中使用变量 rocketShip,实际上就是在处
   理该影片剪辑。

2 数据类型
  经常用作数据类型的同义词的两个词是类和对象。"类"仅仅是数据类型的定义 ─ 就像用于该数据类型的所有对
  象的模板,例如"所有 Example 数据类型的变量都拥有这些特性:A、B 和 C"。而"对象"仅仅是类的一个实际
  的实例;可将一个数据类型为 MovieClip 的变量描述为一个 MovieClip 对象。下面几条陈述虽然表达的方式不
  同,但意思是相同的:

    * 变量 myVariable 的数据类型是 Number。
    * 变量 myVariable 是一个 Number 实例。
    * 变量 myVariable 是一个 Number 对象。
    * 变量 myVariable 是 Number 类的一个实例。

3 方法,方法是指可以由对象执行的操作。下面的一行代码将变量 numericData 中的数值转换为文本,然后
   使这些文本显示在屏幕上名为 calculatorDisplay 的 TextField(文本域) 对象中:
  calculatorDisplay.text = numericData.toString();

4 "事件"就是所发生的、ActionScript 能够识别并可响应的事情。

5 属性表示某个对象中绑定在一起的若干数据块中的一个。

6 事件处理过程在as快速入门 /处理对象/事件中。

7 用于组织代码的选项: a 将代码存储在 Flash 时间轴中的帧中,该代码将在影片播放期间播放头进入该帧时执
   行。优点是灵活,缺点是在大型的项目中不利于代码的跟踪和维护。 b  将代码存储在外部 ActionScript 文件(扩展名为 .as 的文本文件)中。可以采用以下两种方式之一

    * 非结构化 ActionScript 代码:使用include语句直接插入
    * ActionScript 类定义:定义一个 ActionScript 类,包含它的方法和属性。通过创建给类的一个实例并使用他的属性方法和事件来访问该类中的代码,这需要做到以下两点

            1 使用 import 语句来指定该类的全名,以便 ActionScript 编译器知道可以在哪里找到它。例如,如果您希               望使用 ActionScript 中的 MovieClip 类,首先需要使用其全名(包括包和类)来导入该类:
                       import flash.display.MovieClip;
               或者,您也可以导入包含该 MovieClip 类的包,这与针对该包中的每个类编写单独的 import 语句是等效               的:import flash.display.*;
               此规则的唯一例外是,如果在代码中引用的类为顶级类,没有在包中定义,则必须导入该类。
            2 创建实例 var smallBox:Box = new Box(10,20);

8 编写as的工具   flash创作工具  a 动作面板 b 脚本窗口

9 类设计策略
   (1) 考虑该类的实例在应用程序中扮演的角色

    * 值对象:这些对象主要用作数据的容器 ─ 也就是说,它们可能拥有若干个属性和很少的几个方法(有时               没有方法)。也就是程序中经常起到初始化数据的类
    * 显示对象:它们是实际显示在屏幕上的对象。负责显示画面的
    * 应用程序结构:应用程序执行的逻辑和处理

    (2) 确定类所需的特定功能。不同类型的功能通常会成为类的方法。
    (3) 如果打算将类用作值对象,请确定实例将要包含的数据。这些项是很好的候选属性。
    (4) 由于类是专门为项目而设计的,因此最重要的是提供应用程序所需的功能。回答下列问题可能会对您很有  帮助:

    * 应用程序将存储、跟踪和处理哪些信息?确定这些信息有助于您识别可能需要的值对象和属性。
    * 需要执行哪些操作 ─ 例如,在应用程序首次加载时,在单击特定的按钮时,在影片停止播放时,分别需要执行哪些操作?这些是很好的候选方法(如果"动作"仅涉及更改单个值,则是很好的候选属性)。
    * 对于任何给定的动作,要执行该动作,该类需要了解哪些信息?这些信息将成为方法的参数。
    * 随着应用程序开始工作,应用程序的其它部分需要了解类中的哪些内容将发生更改?这些是很好的候选事件。

     (5) 继承,如果有一个现有的对象与您需要的对象类似,只是缺少某些您需要添加的一些额外功能,应考虑创 建一个子类,可以继承flash的内建类

10 编写类的代码
      public class MyClass
   {    }
     
     package mypackage    //指示包含该类的包的名称
    {
    public class MyClass
    {
    }
     }
 
     public var textVariable:String = "some default value";

     使用与函数定义所用的相同语法来定义类中的每个方法。
     普通的方法
   public function myMethod(param1:String, param2:Number):void
   {
     // 使用参数执行某个操作
   }
      使用构造函数:应创建一个名称与类名称完全匹配的方法:
   public function MyClass()
   {
     // 为属性设置初始值
     // 否则创建该对象
     textVariable = "Hello there!";
     dateVariable = new Date(2001, 5, 11);
    }
        如果没有构造函数,编译器就会自动在该类中创建一个构造函数

11 最好是每个类存放在一个文件中,文件名对应类名,这样是易于管理的

12 示例:创建基本应用程序  查看帮助文档相应的位置

二 as语言及其语法

1 对象和类:ActionScript 3.0 引入了无类型变量这一概念,这一类变量可通过以下两种方法来指定:
                       var someObj:*;       var someObj;   
                      用const定义常量,用var定义变量,用get和set属性(arribulte)定义getter和setter属性(property)
                      用function声明方法,用new创建实例
2 包: 定义package smaple{public class Samplecode{}} ,编译器会自动加上包名称并使用.符号,例如这里是smaple.Samplecode,这样还可以避免命名的冲突,高级功能是可以在包的顶级定义命名空间,以便包中的所有的类都能够使用,但包的顶级只允许使用两个访问说明符,public和interal ,as允许嵌套包,实例flash.xml 包参考本部份手册

3 创建包:as3允许源文件当中含有多个类,但是只允许有一个类可供该文件的外部代码使用,其他的类必须定义在包的外面这样就可以不被源文件的外部代码所使用,在包定义内部声明的类的名称必须与源文件的名称匹配。
包表示的是目录。
在 ActionScript 3.0 中,使用 package 语句来声明包,这意味着您还可以在包的顶级声明变量、函数和命名空间,甚至还可以在包的顶级包括可执行语句。如果在包的顶级声明变量、函数或命名空间,则在顶级只能使用 public 和 internal 属性,并且每个文件中只能有一个包级声明使用 public 属性(无论该声明是类声明、变量声明、函数声明还是命名空间声明)。


4 导入包:格式 import   sample.*  或  import sample.Samplecode  ,包的导入越具体越好,如果只使用一个类最好不要导入整个包可以防止命名的冲突
还必须将定义包或类的源代码放在类路径 内部。类路径是用户定义的本地目录路径列表,它决定了编译器将在何处搜索导入的包和类。类路径有时称为"生成路径"或"源路径"。
虽然使用完全限定的名称可以避免命名的冲突但代码的可读性不好,所以最好是使用简短的方式

5 在创建包时,包中的所有成员都是默认为internal,即以意味着包成员仅对其所在包的其它成员可见,如果希望某个类对包的外部代码可用,就必须用public声明类,例如
// SampleCode.as 文件
package samples
{
    public class SampleCode {}
}
// CodeFormatter.as 文件
package samples
{
    class CodeFormatter {}
}
在外部文件中
import samples.SampleCode;
import samples.CodeFormatter;
var mySample:SampleCode = new SampleCode(); // 正确,public 类
var myFormatter:CodeFormatter = new CodeFormatter(); // 错误
包不可以有命名空间

6 通过命名空间可以控制所创建的属性和方法的可见性。请将 public、private、protected 和 internal 访问控制说明符视为内置的命名空间。

7 属性和方法的名称总是包含两个部分:表示符和命名空间,标识符通常被视为名称,默认的命名空间是internal,只在同一包中的调用可见

8 命名空间没有理解

9 声明变量并赋值  var i:int = 20; 不仅基元素可以复杂的元素也可以例 var numArray:Array = ["zero", "one", "two"];
 
10 数据类型是用来定义一组值,例如,Boolean 数据类型所定义的一组值中仅包含两个值:true 和 false。

11 基元值"是一个属于下列数据类型之一的值:Boolean、int、Number、String 和 uint。基元值的处理速度通常比复杂值的处理速度快,因为 ActionScript 按照一种尽可能优化内存和提高速度的特殊方式来存储基元值。

12 Flash Player 将这些基元类型视为特例 ─ 它们的行为与对象相似,但是不需要创建对象所涉及的正常开销。这意味着下面的两行代码是等效的:

   var someInt:int = 3;
   var someInt:int = new int(3);
   可以使用字面值创造对象,可以使用字面值或 Array 类的构造函数来创建数组,如下所示:

   var someArray:Array = [1, 2, 3]; // 字面值
   var someArray:Array = new Array(1,2,3); // Array 构造函数

13 类型检查:ActionScript 3.0 是动态类型的语言,它在运行时执行类型检查,同时也支持在名为"严格模式"的特殊编译器模式下在编译时执行类型检查。在严格模式下,类型检查既发生在编译时也发生在运行时,但是在标准模式下,类型检查仅发生在运行时。
             

14 子类可以上传基类,子类中则包含其基类中没有的属性或方法,例如
   class ClassBase
{
}
class ClassExtender extends ClassBase
{
    var someString:String;
}

var myClass:ClassBase = new ClassExtender();
myClass.someString = "hello";
// 在 ActionScript 3.0 标准模式下不出现错误


15 is运算符 它可用来测试变量或表达式是否为给定数据类型的成员。is 运算符检查继承层次结构

16 as运算符 也可用来检查表达式是否为给定数据类型的成员。但是,与 is 运算符不同的是,as 运算符不返回布尔值,而是返回表达式的值(代替 true)或 null(代替 false)。
右侧必须是数据类型

17 "动态"类定义在运行时可通过添加/更改属性和方法来改变的对象。 非动态类是密封的不能动态的向其添加属性和方法
使用 dynamic 属性来创建动态类,具体添加的方式看手册在数据类型/动态类,就是实例名. 属性名=值

18 void 数据类型  void 数据类型仅包含一个值:undefined。

19 Object 数据类型 Object 数据类型

20 类型转换

var myBoolean:Boolean = true;
var myINT:int = int(myBoolean);//这是显示转换
trace(myINT); // 1

21 数组转换为字符串

var myArray:Array = ["primary", "secondary", "tertiary"];
trace(String(myArray)); // primary,secondary,tertiary

22 语法 字面值

// 使用 new 语句。
var myStrings:Array = new Array(["alpha", "beta", "gamma"]);
var myNums:Array = new Array([1,2,3,5,8]);

// 直接赋予字面值。
var myStrings:Array = ["alpha", "beta", "gamma"];
var myNums:Array = [1,2,3,5,8];

// 使用 new 语句。
var myObject:Object = new Object({propA:1, propB:2, propC:3});

// 直接赋予字面值。
var myObject:Object = {propA:1, propB:2, propC:3};

23 循环
for..in
循环用于循环访问对象属性或数组元素。
var myObj:Object = {x:20, y:30};
for (var i:String in myObj)
{
   
trace(i + ": " + myObj[i]);
}
// 输出:
// x: 20
// y: 30
for each...in    与 for..in 循环不同的是, for each..in 循环中的迭代变量包含属性所保存的值,而不包含属性的名称:
var myObj:Object = {x:20, y:30};
for each (var num in myObj)
{
   
trace(num);
}
// 输出:
// 20
// 30

您可以循环访问 XML 或 XMLList 对象,如下面的示例所示:

var myXML:XML = <users>
    <fname>Jane</fname>
    <fname>Susan</fname>
    <fname>John</fname>
</users>;
for each (var item in myXML.fname)
{
    trace(item);
}
/* 输出
Jane
Susan
John
*/

23  函数 :函数的定义分为函数表达式和函数语句

        数语句与函数表达式之间有两个细微的区别,在选择要使用的方法时,应考虑这两个区别。第一个区别体现在内存管理和垃圾回收方面,因为函数表达式不像对象那样独立存在。换言之,当您将某个函数表达式分配给另一个对象(如数组元素或对象属性)时,就会在代码中创建对该函数表达式的唯一引用。如果该函数表达式所附加到的数组或对象脱离作用域或由于其它原因不再可用,您将无法再访问该函数表达式。如果删除该数组或对象,该函数表达式所使用的内存将符合垃圾回收条件,这意味着内存符合回收条件并且可重新用于其它用途。

        函数语句与函数表达式之间的第二个区别是,函数语句存在于定义它们的整个作用域(包括出现在该函数语句前面的语句)内。与之相反,函数表达式只是为后续的语句定义的。

在严格模式下,如果您选择指定返回类型,则必须返回相应类型的值。例如,下面的代码在严格模式下会生成错误,因为它们不返回有效值:
function doubleNum(baseNum:int):int
{  
    trace("after return");
}
24 函数参数:按值传递意味着将参数的值复制到局部变量中以便在函数内使用。按引用传递意味着将只传递对参数的引用,而不传递实际值。这种方式的传递不会创建实际参数的任何副本,而是会创建一个对变量的引用并将它作为参数传递,并且会将它赋给局部变量以便在函数内部使用。
在 ActionScript 3.0 中,所有的参数(即不属于基元数据类型的对象)均按引用传递,因为所有的值都存储为对象。这意味着对函数内部的参数的更改将会影响到函数外部的对象属性。但是,函数内部的 xValue 和 yValue 将指向内存中的新位置,这些位置不同于函数外部同名的变量所在的位置。

如果某个参数存在默认值,则会有效地使该参数成为"可选参数"。没有默认值的参数被视为"必需的参数"。
arguments.callee 属性通常用在匿名函数中以创建递归。
var factorial:Function = function (x:uint)
{
    if(x == 0)
    {
        return 1;
    }
    else
    {
        return (x * arguments.callee(x - 1));
    }
}
trace(factorial(5)); // 120

25 arguments 对象
arguments 对象是一个数组,其中包括传递给函数的所有参数。
arguments.length 属性报告传递给函数的参数数量。
arguments.callee 属性提供对函数本身的引用,该引用可用于递归调用函数表达式。

26 ...(rest)参数:使用 ...(rest) 参数之前,应确保不需要使用 arguments.callee。

function traceArgArray(x: int, ... args)
{
    for (var i:uint = 0; i < args.length; i++)
    {
        trace(args[i]);
    }
}

traceArgArray(1, 2, 3);

// 输出:
// 2
// 3

27 函数作为对象:包括length属性和定义自己的属性
与argument的区别
function traceLength(x:uint, y:uint):void
{
    trace("arguments received: " + arguments.length);
    trace("arguments expected: " + traceLength.length);
}
traceLength(3, 5, 7, 11);
/* 输出:
收到的参数数量:4
需要的参数数量:2 */
作为对象
someFunction.counter = 0;
function someFunction():void
{
    someFunction.counter++;
}
someFunction();
someFunction();
trace(someFunction.counter); // 2

28 函数闭包:"函数闭包"是一个对象,其中包含函数的快照及其"词汇环境"。函数闭包保留定义它们的作用域。

三as中面向对象的编程

暂时没有看













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值