as3教材as30按钮加载播放声音XML等Word文档下载推荐.docx
- 文档编号:16471086
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:60
- 大小:40.10KB
as3教材as30按钮加载播放声音XML等Word文档下载推荐.docx
《as3教材as30按钮加载播放声音XML等Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《as3教材as30按钮加载播放声音XML等Word文档下载推荐.docx(60页珍藏版)》请在冰豆网上搜索。
for(vari=0;
i<
10;
i++){
varmascot:
mascot.x=50*i+50
mascot.y=300
mascot.scaleX=.5
mascot.scaleY=.5
addChild(mascot)
}
测试上面两段代码,你可以看到,第一个对象Mascot在上面,坐标是(275,100),下面的Mascots生成了10个副本,横坐标从50到500依次展开,纵坐标是300,缩放率为50%.
按钮的制作.txt
#
2.1.2按钮的制作
下面介绍制作按钮的三种方法
第一种方法:
(把影片剪辑制作成按钮)
把影片剪辑制作成可点击的按钮,首先,你需要利用前面的知识把该影片剪辑添加到舞台上,然后在注册一个可接受鼠标事件的侦听器即可。
下面的代码将库中类名为Mascot的影片剪辑放在舞台的(100,150)处
varmyMovieClip:
myMovieClip.x=100
myMovieClip.y=150
addChild(myMovieClip)
下面来注册这个侦听器,你需要用到addEventListener()侦听函数,包括响应侦听事件的类型,该类型为常量,例如MovieEvent.CLICK将要响应一个鼠标点击事件,另外还需要包含一个处理响应事件的函数
myMovieClip.addEventListener(MouseEvent.CLICK,clickMascot)
functionclickMascot(event:
MouseEvent)
{
trace("
你点击了mascot"
)
}
测试代码时,这个clickMascot函数就会向输出窗口发送一个事件。
但是,在大多数情况下,我们需要这个影片剪辑看起来更像按钮,这是,就用到了buttonMode属性。
把它设置为true后,当你的鼠标划过这个影片剪辑的时,鼠标的箭头形状就会变成手型了。
myMovieClip.buttonMode=true
第二种方法:
(将按钮添加到舞台)
当然,你还可以创建一个按钮实例,就像我们对影片剪辑的操作一样,在这里,把库中的按钮链接类名命名为LibraryButton
varmyButton:
LibraryButton=newLibraryButton()
myButton.x=450
myButton.y=100
addChild(myButton)
这个按钮的形式与前面影片剪辑最大区别就是,双击按钮,可以看到,在时间轴上按钮有4个不同的帧,第一帧为鼠标划过之前显示的状态;
第二帧为鼠标经过时显示的状态;
第三帧为鼠标按下还未释放时显示的状态;
最后一帧为按钮的点击区域,该区域在任何时候都是不可见的。
下面,你还可以为这个按钮添加上侦听,代码如下:
myButton.addEventListener(MouseEvent.CLICK,clickLibraryButton)
functioncliclLibraryButton(event:
trace(你点击了LibraryButton!
第三种方法:
用SimpleButton类型创建,这时,你需要有4个大小一样的影片剪辑,链接类名为ButtonUp,ButtonOver,ButtonDown,ButtonHit,然后用SimpleButton构造方法,把这四个影片剪辑传递给SimpleButton的实例,代码如下:
varmySimpleButton:
SimpleButton=newSimpleButton(newButtonUp(),newButtonOver(),newButtonDown(),newButtonHit())
mySimpleButton.x=450
mySimpleButton.y=250
addChild(mySimpleButton)
另外,还可以添加一个侦听函数
mySimpleButton.addEventListener(MouseEvent.CLICK,clickSimpleButton)
functionclickSimpleButton(event:
trace(你点击了SimpleButton!
绘制文本和超链接文本.txt
2.1.4绘制文本和超链接文本
//在舞台上生成一个文本
varmyText:
TextField=newTextField()
myText.text="
ClickitOut"
addChild(myText)
//设置文本域坐标的位置
myText.x=50
myText.y=50
//设置文本域的宽高
myText.width=200
myText.height=30
//设置文本域的边框
myText.border=true
//设置文本域不可选状态
myText.selectable=false
//创建文本格式对象设置文本内的字体,大小以及样式等,你还可以用一行代码来创建文本格式varmyFormat:
TextFormat=newTextFormat("
Arial"
24,0x000000,true)
varmyFormat:
TextFormat=newTextFormat()
myFormat.font="
myFormat.size=24
myFormat.bold=true
//可以用setTextFormat和defaultTextStyle两种方法来应用设置好的文本。
//myText.defaultTextFormat=myFormat
myText.setTextFormat(myFormat)
现在,你可以把上面的代码复制到你的fla文件的主时间轴上进行测试就可以了。
另外,我们在看一下创建文本格式的两种用法的区别,对于上面的代码,我们可以把它分为两部分,上面部分为文本赋值代码,下面部分为格式设置代码,对于此种情况,要让格式应用与文本的话,必须用setTextFormat方法才有效;
如果如果格式设置代码在前,文本赋值代码在后,那么要用defaultTextFormat属性才行。
另外还要注意setTextFormat为方法,defaultTextFormat为属性。
创建超链接文本
其中最简单的方法就是用htmlText属性,在里面添加HTML代码,例如
varmyWebLink:
myWebLink.htmlText="
点击后面链接访问我的博客<
AHREF='
'
>
Flash脚本学习<
/A>
"
addChild(myWebLink)
测试上面代码,我们发现链接能够正常使用了,我们想以下,如果让链接加上下划线,改变字体的颜色应该怎么处理呢?
我们来看下面的代码:
varmyStyleSheet:
StyleSheet=newStyleSheet()
//注意颜色值的格式为#FFFFFF
myStyleSheet.setStyle("
A"
{textDecoration:
underline"
color:
#0000ff"
})
myWebLink.width=300
myWebLink.styleSheet=myStyleSheet
另外,我们还可以不用链接到网页窗口,还可以用侦听的方式,例如:
myLink.htmlText="
Click<
event:
testing'
here<
addEventListener(TextEvent.LINK,textLinkClick)
functiontextLinkClick(event:
TextEvent)
{
trace(event.text)
创建sprite组.txt
2.1.5创建sprite组
这节,我们来看一下sprite作为容器的功能。
首先,先创建一个sprite容器,在容器内绘制一个200×
200的矩形,这个矩形有2像素的边框,灰色填充。
varsprite1:
Sprite=newSprite()
sprite1.graphics.lineStyle(2,0x000000)
sprite1.graphics.beginFill(0xcccccc)
sprite1.graphics.drawRect(0,0,200,200)
addChild(sprite1)
现在,我们再把这个sprite容器移动到舞台坐标为(50,50)处
sprite1.x=50
sprite1.y=50
然后,我们再来创建第二个sprite容器,把它放置在舞台的(300,50)处,在该容器内也绘制一200×
200的矩形,2像素边框,灰色填充。
varsprite2:
sprite2.graphics.lineStyle(2,0x000000)
sprite2.graphics.beginFill(0xcccccc)
sprite2.graphics.drawRect(0,0,200,200)
sprite2.x=300
sprite2.y=50
addChild(sprite2)
最后,我们来创建第三个sprite容器,它包含一个圆形,我们把它添加到sprite1容器内,并给它一个黑色填充,代码如下:
varsprite3:
sprite3.graphics.lineStyle(2,0x000000)
sprite3.graphics.beginFill(0x333333)
sprite3.graphics.drawCircle(0,0,25)
sprite3.x=100
sprite3.y=100
sprite1.addChild(sprite3)
好了,把上面三段代码添加到fla文件主时间轴上测试一下。
我们看到,在舞台上出现了刚才绘制的这三个图形。
也发现,我们刚才设置了圆形的坐标为(100,100),但它并没有出现在舞台坐标的(100,100)处,这是什么原因呢?
原来,我们把sprite3添加到sprite1后,sprite3的坐标位置就是相对于sprite1的注册点的位置了。
也就是说,子对象的坐标点是以其父容器为参照对象的。
在上面的这个示例中,,sprite3的坐标点(100,100)就是相对于它的这个父容器sprite2注册点的相对位置。
下面,我们在sprite1和sprite2中添加侦听函数,当你点击它们之中哪一个,sprite3就设置为哪个容器的子对象。
也就是说,你可以用鼠标点击来控制这个圆形在两个sprite容器间来回跳转。
sprite1.addEventListener(MouseEvent.CLICK,clickSprite)
sprite2.addEventListener(MouseEvent.CLICK,clickSprite)
functionclickSprite(event:
MouseEvent):
void
event.currentTarget.addChild(sprite3)
//event.target.addChild(sprite3);
下面内容为个人理解所得:
***
如果想让鼠标移到sprite1和sprite2上时出现小手的形状,就用到前面学到的buttonMode的属性了,添加这句代码就可以实现:
sprite1.buttonMode=true
sprite2.buttonMode=true
target与currentTarget的区别
先测试一下原来的代码,无论你点击矩形还是圆形都没有错误提示。
现在我们把clickSprite函数内的第一句注释掉,把第二句打开,然后再测试一下影片,鼠标点击矩形时不会出现问题,当鼠标点击到圆形上时就出现错误的提示,内容为:
ArgumentError:
Error#2024:
不能将对象添加为其自身的子对象。
atflash.display:
:
DisplayObjectContainer/addChild()
atCreatingSpriteGroups_fla:
MainTimeline/clickSprite()
这也就是说,在CreatingSpriteGroups文件主时间轴的clickSprite函数内出现了错误,内容是不能将对象添加为其自身的子对象。
为什么会出现这种错误呢?
翻开黑羽大哥的书找到了答案,^_^。
target表示发生事件的显示对象,而非容器;
而currentTarget为当前侦听事件的节点,往往是容器。
只有当添加事件侦听的显示对象和发生事件的显示对象为同一个时,currentTarget才会于target相等。
此时,currentTarget才可能是非容器显示对象。
那么,上面的代码,我们就可以这样来理解,当鼠标点击到圆形上时,event.target就指圆形这个显示对象,而event.currentTarget就指圆形这个显示对象的容器。
显然,只有容器里面才能够存放显示对象,用target的话系统就会报错。
**5--设置层深.txt
2.1.6设置层深
本节只要讲了用setChildIndex()方法来设置显示对象的层深。
setChildIndex方法允许你向上或向下移动显示对象在显示列表内的位置。
你可以把显示列表考虑成一个数组,它的索引位置是从第0层开始的。
如果你创建了3个显示对象,那么他们的位置就是第0,1,2层。
第二层的对象在外面,第0层的在最里面。
如果你想把某一个影片剪辑移动到所有显示对象的最里层,可以用
setChildIndex(myMovieClip,0)
执行这条语句之后,其余的对象将会自动往上提升一层,及他们的索引位置都加上了1,原来第0层的元素移到了第1层,第1层的元素移到了第2层……
如果想把某一显示对象移到所有对象的上面,这时就要用到numChildren属性,它的含义就是该容器内显示对象的数目。
比如现在某一容器内有三个显示对象,这个numChildren的值就是3,层次列表分别是第0,1,2层。
那么,最外层的层深就是第numChildren-1层。
setChildrenIndex(myMovieClip,numChildren-1)
为了更好的理解设置层深的问题,书中作者给我们提供可一个实例settingSpriteDepth.fla,用代码生成圆的三个副本,并把它交错叠放在舞台上,你可以点击其中的任何一个圆,让它显示在最外面(设置层深为最高)
下面为示例源代码:
简单介绍一下,首先在舞台上画一圆形,转化为影片剪辑,类名为Circle,主时间轴内代码如下:
varcircle1:
Circle=newCircle();
varcircle2:
varcircle3:
circle1.x=250;
circle1.y=175;
circle2.x=300;
circle2.y=175;
circle3.x=275;
circle3.y=225;
addChild(circle1);
addChild(circle2);
addChild(circle3);
circle1.addEventListener(MouseEvent.CLICK,clickCircle);
circle2.addEventListener(MouseEvent.CLICK,clickCircle);
circle3.addEventListener(MouseEvent.CLICK,clickCircle);
functionclickCircle(event:
setChildIndex(MovieClip(event.currentTarget),numChildren-1);
个人理解:
看一下clickCircle函数里面的代码,在这里event.currentTarget指的是MovieClip类的显示对象,而不是显示对象容器。
所以,这里的currentTarget也可以用target代替。
6--鼠标输入.txt
2.2.1鼠标输入
前面已经了解到,我们可以把一个影片剪辑制作成按钮来响应鼠标事件,这就是鼠标输入的一种。
除此之外,鼠标还可以做更多的事情,下面我们就用一个小实例来说明一下。
我们先用代码在舞台上绘制一个圆形和一个文本,当鼠标在舞台上划过时,在文本内可实时的显示出光标在舞台上的坐标,另外,当鼠标划过圆形时,该图形变形100%的不透明,划出时变成50%的透明度。
现在,我们先来分析一下上面的题目,在舞台上绘制圆形和文本,这时我们在前面学过的东西,在这里正好复习一下。
另外,当鼠标滑过,划出时怎么控制?
怎么得到实时看到光标在舞台上的坐标?
这时,我们就用到了鼠标的另外两个事件划过为MouseEvent.ROLL_OVER,划出为MouseEvent.ROLL_OUT,取得鼠标位置的坐标就用到了mouseX,mouseY属性,有关透明度的就是alpha属性了。
在这里,如果想要实时得到光标位置,还需要用到的就是帧频事件Event.ENTER_RAME.
//先用前面学到的知识来创建一个文本,绘制一个黑色圆
varmouseLocText:
addChild(mouseLocText)
varmySprite:
mySprite.graphics.lineStyle(2,0x0000ff)
mySprite.graphics.beginFill(0x000000)
mySprite.graphics.endFill()
addChild(mySprite)
//添加实时显示鼠标位置的侦听函数
addEventListener(Event.ENTER_FRAME,showMouseLoc)
functionshowMouseLoc(event:
Event)
mouseLocText.text="
X="
+mouseX+"
Y="
+mouseY
当鼠标划入时,该显示对象的实例变成100%的不透明,即alpha=1;
当鼠标划出时,该对象变成50%的透明度,即alpha=0.5.这时,我们需要用到鼠标的划过MouseEvent.ROLL_OVER,划出MouseEvent.ROLL_OUT事件,代码如下:
mySprite.addEventListener(MouseEvent.ROLL_OVER,rolloverSprite)
fun
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- as3 教材 as30 按钮 加载 播放 声音 XML