论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

新手学习Flash as3.0(一)之Array函数

文章类别:Flash AS | 发表日期:2009-8-2 17:40:08

新手学习Flash as3.0(一)之Array函数


以下是我对新手在学习Flash as3.0之Array函数中遇到的相关问题及解答的一些整理,
希望对大家进一步学习Flash as3.0有所提高。
这是一系列的as基础学习教程...

Array
Object
    |
    +-Array

public dynamic class Array
extends Object
Array 类使您可以访问和处理索引数组。索引数组是一个对象,其属性由表示该属性在数组中位置的数字来标识。此数字称为索引。所有索引数组都从零开始,这意味着数组中的第一个元素为 [0],第二个元素为 [1],依此类推。若要创建一个 Array 对象,请使用构造函数 new Array()。若要访问数组中的元素,请使用数组访问运算符 ([])。

您可以在数组元素中存储各种各样的数据类型,包括数字、字符串、对象,甚至是其它数组。您可以创建一个多维 数组,方法是创建一个索引数组,然后给它的每个元素分配不同的索引数组。这样的数组被视为是多维的,原因是它可用于表示表中的数据。

数组是松散的排列,意味着可能在索引位置 0 和索引位置 5 是同一个元素(数), 但是在那二者数值之间和索引位置中是无关的。 在这种情况下,元素在索引位置 1 直到 索引位置4 也是不明确的, 哪些是缺少元素, 数值和索引位置也是不明确的.

数组分配是按引用而不是按值进行的:当您将一个数组变量分配给另一个数组变量时,这两个变量都引用同一数组:
复制内容到剪贴板
代码:

var oneArray:Array = new Array("a", "b", "c");//初值化
var twoArray:Array = oneArray; // 转递数组.
twoArray[0] = "z";             //赋值twoArray[0].
trace(oneArray);               // 输出: z,b,c.
Array 类不应该用于创建关联数组,关联数组是不同的数据结构,它们包含命名元素而不是编号元素。您应该使用 Object 类创建关联数组(也称为 哈希)。虽然 ActionScript 允许您使用 Array 类创建关联数组,但您不能使用 Array 类的任何方法或属性。关键是,关联数组是 Object 类的实例,而每个键/值对由属性及属性的值表示。要将关联数组声明为 Object 数据类型还有另一个原因:您可以使用对象文本来填充关联数组(但只能在您声明它时)。

构造函数摘要

长度 : uint

方法摘要

1. Array(numElements:int = 0)
创建一个长度为 0 或更大的新数组,或者创建由一列指定的元素(这些元素可能具有不同的数据类型)填充的数组。

使用 Array() 创建下列各项之一:

空数组
具有特定长度,但其元素未定义值的数组
其元素具有特定值的数组
使用此函数类似于使用 Array 构造函数创建数组。

您可以传递一个数字 (numElements) 或者传递包含一个或多个不同类型的一列元素 (element0, element1, ... elementN)。

能够接受一种以上数据类型的参数以 Object 类型在签名中列出。

参数:
numElements:int(默认:0) [可选] - 一个指定数组中元素数量的正整数。您可以指定 numElements,也可以指定元素列表,但不能同时指定两者。

实例一:
创建一个长度为0的空数组
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_Array extends Sprite {
        public function Array_Array() {
            var myArr:Array = new Array();
            trace(myArr.length); // 0
        }
    }
}
实例二:
创建一个长度为5的数组,0索引为字符串"one",并添加新元素--字符串"six"[需调用数组函数push()]
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_Array_2 extends Sprite {
        public function Array_Array_2() {
            var myArr:Array = new Array(5);
            trace(myArr.length); // 5
            myArr[0] = "one";
            myArr.push("six");
            trace(myArr);         // one,,,,,six
            trace(myArr.length); // 6
        }
    }
}
2. Array(... values)
创建一列新数组,并直接赋值.
语法:public function Array(numElements:int = 0)

参数:
... values --从0索引直接赋值到更多索引
实列:

创建一个长度为3的新数组,并赋值--字符串"one","two","three"
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_Array_3 extends Sprite {
        public function Array_Array_3() {
            var myArr:Array = new Array("one", "two", "three");
            trace(myArr.length); // 3
            trace(myArr);          // one,two,three
        }
    }
}
3. concat()
将参数中指定的元素与数组中的元素连接,并创建新的数组
Flash as3.0语法: function concat(... args):Array

参数:
... args :可以是存储各种各样的数据类型,包括数字、字符串、对象,如果赋值为空,将复制原数组并创建新数组.

返回:数组

实例:
创建numbers数组,并赋值--1,2,3
创建letters数姐,并赋值--a,b,c
创建numbersAndLetters,并从Letters数组复制所有元素到numbers数组
创建lettersAndNumbers,并从numbers数组复制所有元素到Letters数组
复制内容到剪贴板
代码:

var numbers:Array = new Array(1, 2, 3);
var letters:Array = new Array("a", "b", "c");
var numbersAndLetters:Array = numbers.concat(letters);
var lettersAndNumbers:Array = letters.concat(numbers);
trace(numbers);       // 1,2,3
trace(letters);       // a,b,c
trace(numbersAndLetters); // 1,2,3,a,b,c
trace(lettersAndNumbers); // a,b,c,1,2,3
4.every() 方法[as3.0新增]

检测是否数组所有元素都满足 callback 函数方法指定的条件。
Flash as3.0语法:function every(callback:Function, thisObject:* = null):Boolean


参数:
callback:Function --检测函数
thisObject:* (default = null) --判断条件

返回:布尔值

实例:

创建数组arr1和数组arr2并调检测用函数isNumeric
复制内容到剪贴板
代码:

isNumeric函数--检测是否全部为Number
    import flash.display.Sprite;
    public class Array_every extends Sprite {
        public function Array_every() {
            var arr1:Array = new Array(1, 2, 4);
            var res1:Boolean = arr1.every(isNumeric);
            trace("isNumeric:", res1); // true

            var arr2:Array = new Array(1, 2, "ham");
            var res2:Boolean = arr2.every(isNumeric);
            trace("isNumeric:", res2); // false
        }
        private function isNumeric(element:*, index:int, arr:Array):Boolean {
            return (element is Number);
        }
    }
}
4.filter 方法[as3.0新增]
Flash as3.0语法:filter(callback:Function, thisObject:* = null):Array
根据 callback 方法指定的条件过滤数组,返回由符合条件的元素组成的新数组

参数:
callback:Function--检测函数
function callback(item:*, index:int, array:Array):void;
thisObject:* = null--判定条件

返回:数组

实例:

创建employees数组,并调用push函数添加元素(二维),使用

创建managers
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_filter extends Sprite {
        public function Array_filter() {
            var employees:Array = new Array();//创建employees数组
            employees.push({name:"Employee 1", manager:false});//调用push函数添加二维元素
            employees.push({name:"Employee 2", manager:true});
            employees.push({name:"Employee 3", manager:false});
            trace("Employees:");
            employees.forEach(traceEmployee);//调用执行函数traceEmployee(?forEach是啥?看下面)
           
            var managers:Array = employees.filter(isManager);//调用挑选函数isManager
            trace("Managers:");
            managers.forEach(traceEmployee);//调用执行函数traceEmployee
        }
        private function isManager(element:*, index:int, arr:Array):Boolean {
            return (element.manager == true);//返回判断布尔值
        }
        private function traceEmployee(element:*, index:int, arr:Array):void {
            trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));//判断manager是否为true,如果是输出空格
        }
    }
}
5. forEach方法[as3.0新增]
Flash as3.0语法: forEach(callback:Function, thisObject:* = null):void
数组的每一个元素执行 callback 方法,不返回任何值
第二个参数 thisObject 是第一个参数 callback 的执行范围,即方法内部的 this ,一般不需指定callback 的参数也都是一样的

参数:
callback:Function--执行函数
function callback(item:*, index:int, array:Array):void;
thisObject:* = null--执行范围

实例一:

创建employees数组,并调用push函数添加元素[二维]
并执行函数traceEmployee
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_forEach extends Sprite {
        public function Array_forEach() {
            var employees:Array = new Array();//创建数组
            employees.push({name:"Employee 1", manager:false});//调用push添加二维元素
            employees.push({name:"Employee 2", manager:true});
            employees.push({name:"Employee 3", manager:false});
            trace(employees);//输出数组
            employees.forEach(traceEmployee);//调用执行函数traceEmployee
        }
        private function traceEmployee(element:*, index:int, arr:Array):void {
            trace(element.name + " (" + element.manager + ")");//输出:name (manager)
        }
    }
}
实例二:
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_forEach_2 extends Sprite {
        public function Array_forEach_2() {
            var employeeXML:XML = <employees>
                    <employee name="Steven" manager="false" />
                    <employee name="Bruce" manager="true" />
                    <employee name="Rob" manager="false" />
                </employees>;
            var employeesList:XMLList = employeeXML.employee;//读取节点
            var employeesArray:Array = new Array();//创建employeesArray数组
            for each (var tempXML:XML in employeesList) {
                employeesArray.push(tempXML);//调用push函数添加元素
            }
            employeesArray.sortOn("@name");//?sorton是啥,看下文
            employeesArray.forEach(traceEmployee);//调用执行函数traceEmployee
        }
        private function traceEmployee(element:*, index:Number, arr:Array):void {
            trace(element.@name + ((element.@manager == "true") ? " (manager)" : ""));//判断manager是否为true,为真输出name(manager)为否输出name
        }
    }
}
6.indexOf 方法 [as3.0新增]
Flash as3.0语法:indexOf(searchElement:*, fromIndex:int = 0):int
查找数组元素,若存在返回元素索引位置,若不存在返回-1

参数:
searchElement:*--查找关键字
fromIndex:int = 0--查找开始索引位置(默认:0)
返回:数值

实例:
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_indexOf extends Sprite {
        public function Array_indexOf() {
            var arr:Array = new Array(123,45,6789);//创建数组arr
            arr.push("123-45-6789");//添加数组元素(字符串)
            arr.push("987-65-4321");//添加数组元素(字符串)
           
            var index:int = arr.indexOf("123");//查寻字符串"123"
            trace(index); // -1
           
            var index2:int = arr.indexOf(123);//查寻123
            trace(index2); // 0
           
            var index2:int = arr.indexOf("123-45-6789");//查寻字符串"123-45-6789"
            trace(index2); // 0
        }
    }
}
7.join 方法
join(sep:*):String
将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串

参数:
sep:*--插入分隔符

返回:字符串

实例一:
复制内容到剪贴板
代码:

var myArr:Array = new Array("one", "two", "three");//不要告诉我看不懂...
var myStr:String = myArr.join(" and ");
trace(myArr); // one,two,three
trace(myStr); // one and two and three
实例二:
复制内容到剪贴板
代码:

var phoneString:String = "(888) 867-5309";
var specialChars:Array = new Array("(", ")", "-", " ");
var myStr:String = phoneString;
var ln:uint = specialChars.length;//定义数组specialChars长度
for(var i:uint; i < ln; i++) {
    myStr = myStr.split(specialChars[i]).join("");//分割字符串phoneString并重建数组,再调用join重组字符口串
}
var phoneNumber:Number = new Number(myStr);
trace(phoneString); // (888) 867-5309
trace(phoneNumber); // 8888675309
8. lastIndexOf 方法 [as3.0新增函数]

Flash as3.0语法:lastIndexOf(searchElement:*, fromIndex:int = 0x7fffffff):int
从最后一个索引位置向前查寻数组元素,若存在返回元素索引位置,若不存在返回-1

参数:
searchElement:*--查寻关键字
fromIndex:int = 0x7fffffff--索引开始位置(默认:0x7fffffff)

返回:数值

实例:
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_lastIndexOf extends Sprite {
        public function Array_lastIndexOf() {
            var arr:Array = new Array(123,45,6789,123,984,323,123,32);
           
            var index:int = arr.indexOf(123);
            trace(index); // 0
           
            var index2:int = arr.lastIndexOf(123);
            trace(index2); // 6
        }
    }
}
9.map() 方法 [as3.0新增函数]
Flash as3.0语法:map(callback:Function, thisObject:* = null):Array  
数组的每一个元素执行 callback 方法,返回新数组
参数:
callback:Function--执行函数
function callback(item:*, index:int, array:Array):void;

thisObject:* = null--执行范围

返回:数组

实例:
复制内容到剪贴板
代码:

package {
    import flash.display.Sprite;
    public class Array_map extends Sprite {
        public function Array_map() {
            var arr:Array = new Array("one", "two", "Three");
            trace(arr); // one,two,Three
            var upperArr:Array = arr.map(toUpper);//创建upperArr数组并调用执行toUpper函数
            trace(upperArr); // ONE,TWO,THREE
        }
        private function toUpper(element:*, index:int, arr:Array):String {
            return String(element).toUpperCase();//小写转大字
        }
    }
}
10.pop 方法
Flash as3.0语法:function pop():Object
删除数组中最后一个元素,并返回该元素的值。

返回:对象-- 指定的数组中最后一个元素的值。

实例:
复制内容到剪贴板
代码:

var letters:Array = new Array("a", "b", "c");
trace(letters); // a,b,c
var letter:String = letters.pop();
trace(letters); // a,b
trace(letter);     // c

 

 
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058