一、关联数组
用名称元素作为索引的数组 称为 关联数组。
通常的各种类都可以看做是关联数组。
例如:
var mc = new Sprite();
对于mc 的属性我们可以这样来访问
mc.x = 20;
mc.y = 50;
也可以用数组的形式来访问
mc["x"] = 20;
mc["y"] = 50;
使用 for in 语句可以对 对象中的定义属性进行输出。例如,场景中有一个rect 元件,下面的代码中只输出了算定义的属性。
rect.x = 100;
rect["y"] = 0;
rect.xx = 50;
rect["yy"] = 100;
for( var s:String in rect){
trace( s + ":" + rect[s]);
}
输出
xx: 50
yy:100
二、关于“可视化对象列表”
可视化对象列表 有三种形式:stage(舞台)、可视化对象容器、可视化对象。
我们不必太拘泥于这个名词,可以将这个列表看做是可视化对象内置的一种机制,当在可视化对象中添加新的子对象实例时,列表中就会自动的加入相关子类的信息,并进行刷新。
向列表中添加或删除对象使用下面的函数:
addChild() addChildAt()
removeChild() removeChildAt()
默认情况下,新添加的总是在最上层,向指定的某层添加对象以后,该层原有内容向上层移动,相当于“插入”到指定层中去。若反复添加的是同一个对象,则该层中仅保留最后的一次,前面添加的会被删除掉。
删除某一层的对象后,上层的对象会自动向下移动一层。
最高层深等于 numChildren -1 , numChildren 是总的层数。
全部删除用 removeAllChildren() 方法,方法位于 asc.util.DisplayObjectUtilities ,属于一个静态方法,调用方式为
DisplayObjectUtilities.removeAllChildren( this );
设置或改变 对象所处的层深用: setChildIndex( ) getChildIndex( ) getChildAt( )
下面的代码用来将最底层(零层)的对象“搬”到最高层(numChildren -1 )中去,底层“搬”空以后,上面的层依次下降一层,而不是直接的让底层与最上层进行交换。
setChildIndex( getChildAt(0), numChildren - 1 );
提示:如需将创建可视化对象的类 链接为 flash9 的文档类时,自定义类的基类至少是 MovieClip ,如为 Sprite 则会报错。
三、简单按钮
利用简单按钮中的四个状态,可以指定在具体某个状态下需要显示的内容(包括动态的内容)。
简单按钮的四种状态
upState 代表按钮默认 状态的对象,当鼠标不在按钮上,按钮就处于这个状态。
overState 当鼠标移动到按钮上时按钮的状态,鼠标离开时按钮又回到 状态。
downState 当鼠标按下左键时所处的状态
hitTestState 这个状态定义按钮的界限,只是用来跟踪鼠标的目的。
下面类文件演示了简单按钮的创建和设置方法。
package {
import flash.display.*;
import flash.events.*;
public class SimpleButtonDemo extends MovieClip {
public function SimpleButtonDemo( ) {
// Create a simple button and configure its location
var button:SimpleButton = new SimpleButton( );
button.x = 20;
button.y = 20;
// Create the different states of the button, using the
// helper method to create different colors circles
button.upState = createCircle( 0x00FF00, 15 );
button.overState = createCircle( 0xFFFFFF, 16 );
button.downState = createCircle( 0xCCCCCC, 15 );
// button.hitTestState = button.upState;
// Add an event listener for the click event to be notified
// when the user clicks the mouse on the button
button.addEventListener( MouseEvent.CLICK, handleClick );
// Finally, add the button to the display list
addChild( button );
}
// Helper function to create a circle shape with a given color
// and radius
private function createCircle( color:uint, radius:Number ):Shape {
var circle:Shape = new Shape( );
circle.graphics.lineStyle( 1, 0x000000 );
circle.graphics.beginFill( color );
circle.graphics.drawCircle( 0, 0, radius );
circle.graphics.endFill( );
return circle;
}
// Event handler invoked whenever the user presses the button
private function handleClick( event:MouseEvent ):void {
trace( "Mouse clicked on the button" );
}
}
}
因为按钮功能是经常需要用的,所以flash 提供了一个简化版的按钮类,这样可以省去逐个事件进行侦听的过程,直接将每个事件中需要显示的内容进行指定即可。