在库里面导入NumericStepper组件
舞台上有一个label组件,实例名称:newLabel
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);
} |
更多
在库里面导入RadioButton组件
舞台上面两个label组件,实例名称分别为label1和label2
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;
}
}*/ |
更多
在库里面导入ProgressBar组件
舞台上有一个label组件,实例名称:stageLabel
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="加载失败";
} |
更多
- 2010年4月8日
- 111 views
- AS3组件
在库里面导入TextArea组件
当前目录存放一个名称为“TextAreaText”的文本文件。
txt文件里面的内容:
============================
a1=随便写1
&a2=随便写2
&a3=随便写3
============================
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自定义事件的方法,希望对还不是了解自定义事件的童鞋有所帮助。
下面这个例子有四个类文件,一个是男孩类、一个是女孩类、一个是自定义事件类、一个是文档类。我们的目标是,男孩发出不同的事件,女孩做出不同的反映。
以下类文件和主文档放在同一目录下。
1、自定义事件类:
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、男孩类:
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、女孩类:
1
2
3
4
5
6
7
8
| package {
public class Girl {
public function replay(info):void {
trace(info);
}
//声明公开方法,做出反应
}
} |
4、文档类:
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);
更多
在库里面导入TileList组件和Slider组件
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 = "alt";//在包含各拼贴的标签的各项中获取或设置一个字段
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;
} |
更多
最新评论