【ActionScript】ActionScript3.0对舞台组件的增删改查

以一个例子来说明ActionScript3.0对舞台组件的增删改查

如下图:


在Flash运行的时候,通过脚本,斜向下生成text0-text9十个文本节点。

提供两个功能,

1、在右上角,用户输入要删除的节点,点击“删除”之后,而删除相应的文本节点。

2、在下方,用户输入要移动的节点,然后输入合法的X与Y,则可以把节点移动到相应的地方。

一、基本布局

1、首先新建一个ActionScript3.0的Flash文件。之后如同《【ActionScript】ActionScript3.0的Helloworld》(点击打开链接)一样,使用Ctrl+F7打开组件面板,之后,使用Flash提供的组件,布置出如下图的布局。

【ActionScript】ActionScript3.0对舞台组件的增删改查_第1张图片

各个组件设置如同“移动”、“删除”等如图所示的text。把组件拖放到如图所示的位置。命名好如图所示的实例名字。其中text为“输入要移动的节点:text”、“输入要删除的节点:text”这两个Label不用设置实例名称,因为这两个Label是静态的,不打算通过脚本控制。

为了好看,Label组件autoSize属性设置为Center。

关键对TextInput输入框的属性设置,Edit1,Edit2这两个输入框,最大字符maxChars为1,输入的正则表达式restrict设置为[0-9],意为仅允许输入一个数字,两个配合起来就是只允许输入1到9。Edit3与Edit4的最大字符maxChars为3,输入的正则表达式restrict设置为[0-9]+,意为仅允许输入数字,两个配合起来就是只允许输入1-3为数字。这样就可以防止用户输入奇奇怪怪的东西了。

正则表达式是通用的,在《【JavaScript】利用正则表达式检查输入框输入的是否为网址》(点击打开链接)已经说过了。

二、脚本编程

之后就可以通过脚本编程了,在时间轴对第1帧右键,打开动作面板,输入如下脚本:

import flash.text.TextField;

var textFieldArr=new Array(10);//创建一个专门存放textField的数组
for(var i:int=0;i<10;i++){//循环生成10个TextField
	textFieldArr[i]=new TextField();
	textFieldArr[i].name="text"+i;//设置TextField的实例名称,内文本,X与Y等
	textFieldArr[i].text="text"+i;
	textFieldArr[i].x=20*i;
	textFieldArr[i].y=20*i;
	addChild(textFieldArr[i]);//添加到舞台。
}

//Button1的点击事件
Button1.addEventListener("click",function(){
	var Node=getChildByName("text"+Edit1.text);//获取用户输入的文本,并查找这个节点
	if(Node){//如果找到的话,才删除
    	removeChild(Node);//如果找不到,你还是要Flash删除,会报错。这个函数建立在存在这个节点之上
	}
});

//Button2的点击事件
Button2.addEventListener("click",function(){
	var Node=getChildByName("text"+Edit2.text);
	if(Node){//同样是找这个节点,判断是否存在这个节点
		var moveFlag=true;
		var errMsg="";
		if(Number(Edit3.text)>500){//还要先判断用户输入的坐标是否过大,因为我们的舞台大小仅为550x400
			errMsg+="x不得大于500!";
			moveFlag=false;
		}
		if(Number(Edit4.text)>300){
			errMsg+="y不得大于300!";
			moveFlag=false;
		}
		if(Number(Edit3.text)<1){
			errMsg+="x不得少于1!";
			moveFlag=false;
		}
		if(Number(Edit4.text)<1){
			errMsg+="y不得少于1!";
			moveFlag=false;
		}
		if(moveFlag){//如果输入合法,则移动节点,实质就是修改其X与Y
    		Node.x=Edit3.text;
			Node.y=Edit4.text;
		}
		else{//否则,在Label1输出错误信息
			Label1.text=errMsg;
		}
	}
});
可以看到,ActionScript3.0对舞台组件的增删改查的核心语句是addChild、removeChild、getChildByName,与《【JavaScript】网页节点的增删改查》( 点击打开链接)一样,能查就能改。

你可能感兴趣的:(节点,增删改查,textfield,ActionScript3.0,舞台)