嗨,新朋友,很高兴认识你,欢迎来到我的博客。

在库里面导入NumericStepper组件

在库里面导入NumericStepper组件
舞台上有一个label组件,实例名称:newLabel

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import fl.controls.NumericStepper;
 
var style:TextFormat=new TextFormat();//字符样式
style.color=0x0000FF;
style.font="宋体";
 
var newNumericStepper:NumericStepper=new NumericStepper();
addChild(newNumericStepper);
with (newNumericStepper) {
	x=100;
	y=100;
	maximum=30;//最大值
	minimum=12;//最小值
	stepSize=1;//每按一下按钮,增加或减少的数值
	value=12;//初始值或当前值
}
 
newNumericStepper.addEventListener(Event.CHANGE,changefun);
function changefun(e:Event) {
	style.size=newNumericStepper.value;
	newLabel.setStyle("textFormat",style);
}

AS3组件之RadioButton单选按钮

在库里面导入RadioButton组件
舞台上面两个label组件,实例名称分别为label1和label2

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import fl.controls.RadioButton;
import fl.controls.RadioButtonGroup;//单选按钮的分组
import fl.controls.ButtonLabelPlacement;//字在按钮图标的左边还是右边或上下
 
var rbg1:RadioButtonGroup=new RadioButtonGroup("group1");
var rbg2:RadioButtonGroup=new RadioButtonGroup("group2");
 
var btn1:RadioButton=new RadioButton();
var btn2:RadioButton=new RadioButton();
var btn3:RadioButton=new RadioButton();
var btn4:RadioButton=new RadioButton();
var btn5:RadioButton=new RadioButton();
var btn6:RadioButton=new RadioButton();
 
for (var i:int=1; i<=3; i++) {
	addChild(this["btn"+i]);
	with (this["btn"+i]) {
		x+=50+100*i;
		y=100;
		label="选项"+i;
 
		//两种办法分组:
		group=rbg1;//第一种(推荐):按钮的分组,此 RadioButton 所属的RadioButtonGroup对象
		//groupName="分组1";//第二种:直接写,这样就不用上面导入RadioButtonGroup了
 
		value="按的是选项"+i;//单选按钮所代表的值
		labelPlacement=ButtonLabelPlacement.RIGHT;//字在按钮图标的左边还是右边或上下
	}
}
for (var j:int=4; j<=6; j++) {
	addChild(this["btn"+j]);
	with (this["btn"+j]) {
		x+=20+100*(j-3);
		y=300;
		label="选项"+j;
		group=rbg2;
		value="按的是选项"+j;
		labelPlacement=ButtonLabelPlacement.LEFT;
	}
}
 
//第一种判断办法
btn1.addEventListener(MouseEvent.CLICK,clickFun1);
btn2.addEventListener(MouseEvent.CLICK,clickFun1);
btn3.addEventListener(MouseEvent.CLICK,clickFun1);
btn4.addEventListener(MouseEvent.CLICK,clickFun2);
btn5.addEventListener(MouseEvent.CLICK,clickFun2);
btn6.addEventListener(MouseEvent.CLICK,clickFun2);
 
function clickFun1(e:MouseEvent) {
	label1.text=e.target.value;
}
function clickFun2(e:MouseEvent) {
	label2.text=e.target.value;
}
 
//第二种判断办法
/*
btn1.addEventListener(Event.ENTER_FRAME,clickFun1);
btn2.addEventListener(Event.ENTER_FRAME,clickFun1);
btn3.addEventListener(Event.ENTER_FRAME,clickFun1);
btn4.addEventListener(Event.ENTER_FRAME,clickFun2);
btn5.addEventListener(Event.ENTER_FRAME,clickFun2);
btn6.addEventListener(Event.ENTER_FRAME,clickFun2);
 
function clickFun1(e:Event) {
if (e.target.selected) {
label1.text=e.target.value;
}
}
function clickFun2(e:Event) {
if (e.target.selected) {
label2.text=e.target.value;
}
}*/

AS3组件之ScrollPane滚动加载组件

在库里面导入ScrollPane组件

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import fl.containers.ScrollPane;
import fl.controls.ScrollPolicy;//滚动条
 
var newScrollPane:ScrollPane=new ScrollPane();
addChild(newScrollPane);
with (newScrollPane) {
	x=100;
	y=50;
	width=400;
	height=300;
	source=mc;//加载的路径
	scrollDrag=true;//当鼠标移到画面上时,是否允许移动图片,默认是false不允许
	horizontalLineScrollSize=5;//单击两边的左右移动按钮,横向滚动条一次移动多少像素
	horizontalPageScrollSize=10;//单击横向滚动条空白处时,滚动条移动多少像素
	horizontalScrollPolicy=ScrollPolicy.ON;//是否显示横向滚动条
	verticalLineScrollSize=5;//单击垂直方向,上下移动按钮,竖滚动条一次移动多少像素
	verticalPageScrollSize=10;//单击垂直滚动条空白处时,滚动条移动多少像素
	verticalScrollPolicy=ScrollPolicy.AUTO;//是否显示垂直滚动条
}

AS3组件之ProgressBar进度条

在库里面导入ProgressBar组件
舞台上有一个label组件,实例名称:stageLabel

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import fl.controls.ProgressBar;
import fl.controls.ProgressBarDirection;//进度条的方向,向左还是向右
 
var music:Sound=new Sound();
var url:String="http://i3.ce.cn/ent/main/news/201006/28/W020100628265736263956.wma";
var geturl:URLRequest=new URLRequest(url);
music.load(geturl);
 
var newProgressBar:ProgressBar=new ProgressBar();
addChild(newProgressBar);
with (newProgressBar) {
	width=200;
	height=5;
	x=(stage.stageWidth-newProgressBar.width)/2;//把newProgressBar换成this会有些问题
	y=(stage.stageHeight-newProgressBar.height)/2;
	source=music;//进度条引用的资源
	direction=ProgressBarDirection.RIGHT;//进度条从左向右填充
}
 
newProgressBar.addEventListener(ProgressEvent.PROGRESS,progressFun);
function progressFun(e:ProgressEvent) {
	stageLabel.text="已加载"+int(newProgressBar.percentComplete)+"%";
}
 
newProgressBar.addEventListener(Event.COMPLETE,completeFun);//已完成事件
function completeFun(e:Event) {
	music.play();
	newProgressBar.visible=false;
	stageLabel.visible=false;
}
 
music.addEventListener(IOErrorEvent.IO_ERROR,errorFun);//出错事件
function errorFun(e:IOErrorEvent) {
	stageLabel.text="加载失败";
}

AS3组件之TextArea文本框

在库里面导入TextArea组件
当前目录存放一个名称为“TextAreaText”的文本文件。
txt文件里面的内容:
============================
a1=随便写1

&a2=随便写2

&a3=随便写3
============================

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import fl.controls.TextArea;
import fl.controls.ScrollPolicy;//滚动条的方向
 
var newTextArea:TextArea=new TextArea();
addChild(newTextArea);
with (newTextArea) {
	width=400;
	height=300;
	x=(stage.stageWidth-newTextArea.width)/2;//这里把newTextArea换成this会有些问题
	y=(stage.stageHeight-newTextArea.height)/2;
	condenseWhite=false;//是否从包含HTML文本的TextArea组件中删除额外空白。空格和换行符都属于额外空白。true值指示删除多余的空白
	editable=false;//是否允许用户编辑,true允许
	horizontalScrollPolicy=ScrollPolicy.AUTO;//水平滚动条
	verticalScrollPolicy=ScrollPolicy.AUTO;//垂直滚动条
	maxChars=0;//显示最大字符数是多少,0是不限制,在这里一个汉字也只算一个字符
	//restrict="123abc";//如果允许用户编辑,则restrict是限制用户只能输入哪些字符
	//htmlText="
//以HTML代码显示
	wordWrap=true;//是否自动换行,true允许自动换行
}
 
var style:TextFormat=new TextFormat();//字符样式
style.color=0x3333CC;
style.font="宋体";
style.size=12;
newTextArea.setStyle("textFormat",style);
 
var outText:URLRequest=new URLRequest("TextAreaText.txt");
var inText:URLLoader=new URLLoader();
inText.load(outText);
inText.addEventListener(Event.COMPLETE,completeFun);
function completeFun(e:Event) {
	var partText:URLVariables=new URLVariables(inText.data);
	newTextArea.text=partText.a1+partText.a2;//文本框的内容
	//newTextArea.text=inText.data;//这是全部载入
}

AS3组件之TextInput文本输入框

在库里面导入TextInput组件

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
import fl.controls.TextInput;
 
var newTextInput:TextInput=new TextInput();
addChild(newTextInput);
with(newTextInput){
	move(200,150);
	displayAsPassword=true;//是否显示成密码*号的样子
	editable=true;//是否允许用户编辑,默认为true
	maxChars=0;//最多可以输入多少个字符,0为不限制
	//restrict="123abc"//限制只能输入哪些字符
	text="";//默认显示什么内容
}

As3.0 自定义事件类

通过男女关系很生动的讲解了as3自定义事件的方法,希望对还不是了解自定义事件的童鞋有所帮助。

下面这个例子有四个类文件,一个是男孩类、一个是女孩类、一个是自定义事件类、一个是文档类。我们的目标是,男孩发出不同的事件,女孩做出不同的反映。
以下类文件和主文档放在同一目录下。

1、自定义事件类:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package {
 
	import flash.events.Event;
 
	//导入事件类
 
	public class CustomEvent extends Event {
 
		//声明自定义事件扩展自事件类成为其子类
 
		public static  const SENDFLOWER:String="sendFlower";
 
		//声明静态常量作为事件类型1
 
		public static  const SENDCAR:String="sendCar";
 
		//声明静态常量作为事件类型2
 
		public var info:String;
 
		//声明变量储存事件信息,这也是我们用自定义事件的主要原因,可以用他来
 
		//携带额外的信息
 
		public function CustomEvent(type:String,inf) {
 
			super(type);
 
			//调用父类构造函数并设置传入的参数作为事件类型
 
			info=inf;
 
			//将传入的参数2存入info
 
		}
 
	}
 
}

2、男孩类:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package {
 
	import flash.events.EventDispatcher;
 
	//导入事件发送者类
 
	import flash.events.Event;
 
	//导入事件类
 
	public class Boy extends EventDispatcher {
 
		//声明男孩类扩展自事件发送者类,成为其子类
 
		public function sendFlower() {
 
			//声明公开送花方法;
 
			var info:String="玫瑰花";
 
			//声明局部变量设置发送信息
 
			var events=new CustomEvent(CustomEvent.SENDFLOWER,info);
 
			//声明一个新的自定义事件类的实例,并设置类型为第一种、
 
			//将发送信息存入事件
 
			this.dispatchEvent(events);
 
			//发送该事件
 
		}
		public function sendCar() {
 
			//声明公开送车方法;
 
			var info:String="百万跑车";
 
			//声明局部变量设置发送信息
 
			var events=new CustomEvent(CustomEvent.SENDCAR,info);
 
			//声明一个新的自定义事件类的实例,并设置类型为第二种、
 
			//将发送信息存入事件
 
			this.dispatchEvent(events);
 
			//发送该事件
		}
	}
}

3、女孩类:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
package {
public class Girl {
public function replay(info):void {
trace(info);
}
//声明公开方法,做出反应
}
}

4、文档类:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package {
 
	import flash.display.Sprite;
 
	//导入Sprite类
 
	public class Documents extends Sprite {
 
		//声明文档类扩展自sprite类
 
		private var _boy:Boy;
 
		//声明私有属性为男孩类型
 
		private var _girl:Girl;
 
		//声明私有属性为女孩类型
 
		public function Documents() {
 
			//构造函数
 
			_boy=new Boy;
 
			//创建男孩实例
 
			_girl=new Girl;
 
			//创建女孩实例
 
			_boy.addEventListener(CustomEvent.SENDFLOWER,_hand);
 
			//为男孩增加类型为CustomEvent.SENDFLOWER的事件监听
 
			_boy.addEventListener(CustomEvent.SENDCAR,_hand);
 
			//为男孩增加类型为CustomEvent.SENDCAR的事件监听
 
			_boy.sendCar();
 
			//调用男孩的送车的方法。你可以再试着调用男孩的sendFlower
 
			//方法试试,看结果有什么不同
 
		}
 
		private function _hand(E:CustomEvent):void {
 
			//声明事件处理器
 
			_girl.replay("我收到一位帅哥送我的:"+E.info);
 
			//调用女孩的replay方法。
		}
	}
}

希望各位不懂自定义事件的朋友看了之后会有所启发,总之,事件发送没反应大部分原因是发送者和接受者不在一个反应区域内。基本上如果是自定义类要发送事件,那么监听者也是他自己。如果是显示对象发送自定义事件,可以让他自己监听也可以让他的父级显示容器监听,但如果是后者则必须将冒泡参数设为true,在本例中就是修改自定义事件类文件中的
super(type);
这一行为super(type,true);

AS3组件之TileList对象列表和Slider组件与XML结合

在库里面导入TileList组件和Slider组件

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import fl.controls.Slider;
import fl.controls.TileList;
import fl.data.DataProvider;
import fl.events.SliderEvent;
var baseURL:String = "http://www.helpexamples.com/flash/images/";
var imagesXML:XML = <images>
        <img alt="Image 1" src="image1.jpg" />
        <img alt="Image 2" src="image2.jpg" />
        <img alt="Image 3" src="image3.jpg" />
    </images>;;
//DataProvider 类提供一些方法和属性,这些方法和属性允许您查询和修改任何基于列表的组件
//(例如,List、DataGrid、TileList 或 ComboBox 组件)中的数据。
var dp:DataProvider = new DataProvider(imagesXML);
var columnWidthSlider:Slider = new Slider();
columnWidthSlider.minimum = 50;//Slider 组件实例所允许的最小值
columnWidthSlider.maximum = 200;//Slider 组件实例所允许的最大值。
columnWidthSlider.liveDragging = true;//获取或设置一个布尔值,该值指示在用户移动滑块时是否持续调度 SliderEvent.CHANGE 事件
columnWidthSlider.snapInterval = 10;//获取或设置用户移动滑块时值增加或减小的量
columnWidthSlider.tickInterval = 10;//相对于组件最大值的刻度线间距
columnWidthSlider.width = columnWidthSlider.maximum - columnWidthSlider.minimum;
columnWidthSlider.move(10, 10);//将组件移动到其父项内的指定位置
columnWidthSlider.addEventListener(SliderEvent.CHANGE, changeHandler);
addChild(columnWidthSlider);
var myTileList:TileList = new TileList();
myTileList.dataProvider = dp;//获取或设置要查看的项目列表的数据模型
myTileList.labelField = &quot;alt&quot;;//在包含各拼贴的标签的各项中获取或设置一个字段
myTileList.sourceFunction = mySourceFunction;//获取或设置用于获得拼贴的源路径的函数。
myTileList.width = 530;
myTileList.rowCount = 1;//获取或设置在列表中至少部分可见的行的行数。
myTileList.move(10, 30);
addChild(myTileList);
function mySourceFunction(item:Object):String {
	return baseURL + item.src;
}
function changeHandler(event:SliderEvent):void {
	myTileList.columnWidth = event.value;//获取或设置应用于列表中列的宽度,以像素为单位
	myTileList.rowHeight = event.value;
	myTileList.rowCount = 1;
}

AS3组件之Button按钮

库里面要先导入Button组件

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import fl.controls.Button;
var newButton:Button=new Button();
addChild(newButton);
newButton.x=stage.stageWidth/2-newButton.width/2;
newButton.y=stage.stageHeight/2-newButton.height/2;
newButton.label=&quot;新标签&quot;;
newButton.emphasized=true;//按钮有边框
newButton.toggle=true;//按钮按下之后不再弹起,再按一下才会弹起
 
newButton.addEventListener(MouseEvent.CLICK,a);
function a(e:MouseEvent){
	trace(&quot;单击鼠标&quot;);
}
newButton.addEventListener(MouseEvent.DOUBLE_CLICK,b);
function b(e:MouseEvent){
	trace(&quot;双击鼠标&quot;);
}
newButton.doubleClickEnabled=true;

加载远程SWF时用到的loading条

代码如下:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var jz:URLRequest=new URLRequest(&quot;http://www.yidianxindong.com/temp/box.swf&quot;);
var jzdx:Loader=new Loader();//加载对象
jzdx.load(jz);
addChild(jzdx);
jzdx.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,a);//监听加载事件
jzdx.contentLoaderInfo.addEventListener(Event.COMPLETE,b);//监听加载完毕的事件
function a(e:ProgressEvent) {
	var infoKB:LoaderInfo=LoaderInfo(e.target);
	var totalKB=infoKB.bytesTotal;
	var loadKB=infoKB.bytesLoaded;
	var percent:int;
	percent=int((loadKB/totalKB)*100);
	trace(percent);
}
function b(e:Event) {
	jzdx.width=100;
	jzdx.height=100;
	trace(&quot;全部加载完毕&quot;);
}