attachAudio() | 从麦克风硬件中捕获并播放本地音频 |
attachMovie() | 附加库中的SWF文件 |
creatEmptyMovieClip() | 创建一个空的影片剪辑 |
createTextField() | 创建一个空的文体字段 |
duplicateMovieClip() | 复制指定的影片剪辑 |
getBounds() | 返回SWF文件在指定坐标空间中的最小和最大的x、y坐标 |
getBytesLoaded() | 返回为指定影片剪辑加载的字节数 |
getBytesTotal() | 以字节为单位返回影片剪辑的大小 |
getDepth() | 返回影片剪辑的深度 |
getInstanceAtDepth() | 指定某特定深度是否已被影片剪辑所占用 |
getNextHighestDepth() | 指定一个深度值,用户可以将该值传递给其他方法,以确保Flash将该影片剪辑呈现当前影片剪辑所有其他对象面前 |
getSWFVersion() | 返回一个整数,该整数指示所发布的影片剪辑的FlashPlayer版本 |
getTextSnapshot() | 返回指定影片剪辑TextSnapshot对象 |
getURL() | 从一个URL获取文档 |
globalToLocal() | 将点对象的坐标从场景坐标转换为指定影片剪辑的本地坐标 |
gotoAndPlay() | 将播放头转到影片剪辑中的特定帧并播放SWF文件 |
gotoAndStop() | 将播放头转到影片剪辑中的特定帧并停止SWF文件 |
hitTest() | 如果指定影片剪辑的边框与目标影片剪辑的边框交叉,则返回true |
loadMovie() | 将指定的SWF文件加载到影片剪辑中 |
loadVariables() | 将来自URL或其他位置的变量加载到影片剪辑中 |
localToGlovbal() | 将点对象的坐标从影片剪辑的本地坐标转换为全局场景坐标 |
nextFrame() | 将播放头转到影片剪辑的下一帧 |
play() | 播放指定的影片剪辑 |
prevFrame() | 瘵播放头转到影片剪辑的上一帧 |
removeMovieClip() | 如果影片剪辑是用CreateEmptyMovieClip(),duplicateMovieClip()或attachMovie()创建的,则将其从时间轴中删除 |
setMask() | 将影片剪辑指定为另一个影片剪辑的遮罩 |
startDrag() | 将影片剪辑指定为可拖动的并开始拖动该影片剪辑 |
stop() | 停止当前播放的SWF文件 |
stopDrag() | 停止拖动任何正在被拖动的影片剪辑 |
swapDepths() | 交换两个SWF文件的深度级别 |
unloadMovie() | 删除用loadMovie()加载的SWF文件 |
以上表格列举的是:与控制影片剪辑相关的
方法及其功能
1)attachAudio()的应用,请把以下程序写在时间轴的第一帧。
var active_mic:Microphone = Microphone.get();
this.createEmptyMovieClip("audio_mc", this.getNextHighestDepth());
audio_mc.attachAudio(active_mic);
这是一段很经典及很有实用性的程序,其功能是:可以直接接收来自于邮寄麦克风的声音,并直接输出,这样一来,本程序充当了音频输入、输出开关,用来做课件,辅助教师声音的扩大有积极的作用,这样就不必要使用胸麦了,当然也省了接收器。
2)attachMovie的应用
this.createEmptyMovieClip("audio_mc", this.getNextHighestDepth());
audio_mc.attachAudio(active_mic);
这是一段很经典及很有实用性的程序,其功能是:可以直接接收来自于邮寄麦克风的声音,并直接输出,这样一来,本程序充当了音频输入、输出开关,用来做课件,辅助教师声音的扩大有积极的作用,这样就不必要使用胸麦了,当然也省了接收器。
2)attachMovie的应用
mc.attachMovie(id:String, name:String, depth:Number, [initObject:Object])
从库中取得一个元件并将其附加到影片剪辑中。
使用
MovieClip.removeMovieClip()
或
MovieClip.unloadMovie()
删除通过
attachMovie
()
方法附加的 SWF 文件。
参数解析:
id
:String
- 库中要附加到舞台上某影片剪辑的影片剪辑元件的链接名称。这是在"链接属性"对话框中的"标识符"字段中输入的名称。
name
:String
- 附加到该影片剪辑的影片剪辑实例的唯一名称。
depth
:Number
- 一个整数,指定 SWF 文件所放位置的深度级别。
initObject
:Object
[可选] - (Flash Player 6 和更高版本支持)包含要用来填充新附加的影片剪辑的属性的对象(如大小、位置等)。此参数使动态创建的影片剪辑能够接收剪辑参数。如果
initObject
不是对象,则忽略它。
initObject
的所有属性都已复制到新实例中。使用
initObject
指定的属性对于构造函数是可用的。
示例
下面的示例将链接标识符为
circle
的元件附加到位于 SWF 文件舞台上的影片剪辑实例中。
this.
attachMovie("circle", "circle_mc", this.getNextHighestDepth());
其中,circle是一个元件,这是它的链接名称。而circle_mc则是场景中的一个影片剪辑,它的名称是circle_mc,这样全部的代码应写为(写在circle_mc上)
其中,circle是一个元件,这是它的链接名称。而circle_mc则是场景中的一个影片剪辑,它的名称是circle_mc,这样全部的代码应写为(写在circle_mc上)
onClipEvent(mouseDown){
this.attachMovie("circle", "circle_mc", this.getNextHighestDepth());
}
3)creatEmptyMovieClip的应用,用来创建一个空的影片剪辑
}
3)creatEmptyMovieClip的应用,用来创建一个空的影片剪辑
4)createTextField的应用参见实例10
5)duplicateMovieClip的应用。
先看下面的一段代码:
var container:MovieClip = setUpContainer();
//把自定义的setUpContainer()类用于实际,建立一个影片剪辑container
var ln:Number = 10;
var ln:Number = 10;
//用于循环的计数器
var spacer:Number = 1;
var spacer:Number = 1;
//用于间隔各复制影片剪辑的位置
var duplicate:MovieClip;
var duplicate:MovieClip;
//用以接收每一次复制成功的影片剪辑
for(var i:Number = 1; i < ln; i++) {
var newY:Number = i * (container._height + spacer);
duplicate = container.duplicateMovieClip("clip-" + i, i, {_y:newY});
for(var i:Number = 1; i < ln; i++) {
var newY:Number = i * (container._height + spacer);
duplicate = container.duplicateMovieClip("clip-" + i, i, {_y:newY});
//通过循环复制十个相同的影片剪辑,但位置X相同,Y却不同
trace(duplicate); // _level0.clip-[number]
trace(duplicate); // _level0.clip-[number]
//输出信息
}
}
//建立一个自定义函数setUpContainer,目的便是用来做一个长方形的影片剪辑
function setUpContainer():MovieClip {
//为新建立的影片剪辑类函数命名
var mc:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var mc:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//新建影片剪辑mc
var w:Number = 100;
var h:Number = 20;
//W和H用来定位mc的内容
var w:Number = 100;
var h:Number = 20;
//W和H用来定位mc的内容
mc.beginFill(0x333333);
mc.lineTo(w, 0);
mc.lineTo(w, h);
mc.lineTo(0, h);
mc.lineTo(0, 0);
mc.endFill();
return mc;
mc.lineTo(w, 0);
mc.lineTo(w, h);
mc.lineTo(0, h);
mc.lineTo(0, 0);
mc.endFill();
return mc;
//beginFill、endFill分别为画框活动的开始和结尾
}
}
运行效果:
输出面板内容为:
_level0.clip-1
_level0.clip-2
_level0.clip-3
_level0.clip-4
_level0.clip-5
_level0.clip-6
_level0.clip-7
_level0.clip-8
_level0.clip-9
_level0.clip-2
_level0.clip-3
_level0.clip-4
_level0.clip-5
_level0.clip-6
_level0.clip-7
_level0.clip-8
_level0.clip-9
_level0.clip-10
6)getBounds的应用。
影片剪辑在场景中一般会有以下四个位置属性:
xMin
、xMax
、yMin
和 yMax
。这四个属性可以用一个方法getBounds来探测,如果想输出则需要将其存放在一个数组当中
下面的示例创建一个名为
square_mc
的影片剪辑。代码为该影片剪辑绘制一个正方形,并使用 MovieClip.getBounds()
在"输出"面板中显示实例的坐标值。
this.createEmptyMovieClip("square_mc", 1);
square_mc._x = 10;
square_mc._y = 10;
square_mc.beginFill(0xFF0000);
square_mc.moveTo(0, 0);
square_mc.lineTo(100, 0);
square_mc.lineTo(100, 100);
square_mc.lineTo(0, 100);
square_mc.lineTo(0, 0);
square_mc.endFill();
var bounds_obj:Object = square_mc.getBounds(this);
square_mc._x = 10;
square_mc._y = 10;
square_mc.beginFill(0xFF0000);
square_mc.moveTo(0, 0);
square_mc.lineTo(100, 0);
square_mc.lineTo(100, 100);
square_mc.lineTo(0, 100);
square_mc.lineTo(0, 0);
square_mc.endFill();
var bounds_obj:Object = square_mc.getBounds(this);
//把xMin、
for (var i in bounds_obj) {
xMax
、yMin
和 yMax四个属性存放到数组bounds_obj中
for (var i in bounds_obj) {
//分别取bounds_obj的四个值当中的一个
trace(i+" --> "+bounds_obj[i]);
trace(i+" --> "+bounds_obj[i]);
/*输出bounds_obj各项的值(如i=1时会输出yMax,依次类推,分别为:yMin、xMax、xMin。而bounds_obj[1]代表的是最y的最大值110,之后依次是:10、110、10*/
}
运行后的效果为:
7)getBytesLoaded的应用
返回已加载(流处理)的影片剪辑的字节数。您可以将此值与
MovieClip.getBytesTotal()
返回的值进行比较以确定已加载影片剪辑的百分比。(这本身就是一项重要应用)
8)getBytesTotal的应用以字节为单位返回影片剪辑的大小。
9)getDepth的应用
在场景中的第一帧输入以下代码,作用是测试场景中所有元件,如果该元件是影片剪辑(别的不测试)则输出它的名称及它所处的深度。
for (var i in this) {
//this代表在这一场景当中,i代表场景中的某一个元件,有可能是影片剪辑
if (typeof (this[i]) == "movieclip") {
//typeof是用来测试数据类型的,即:如果场景中的这个元件是影片剪辑
trace("movie clip '"+this[i]._name+"' is at depth "+this[i].getDepth());
//输出movie clip 名称 它的深度是***
}
}
//this代表在这一场景当中,i代表场景中的某一个元件,有可能是影片剪辑
if (typeof (this[i]) == "movieclip") {
//typeof是用来测试数据类型的,即:如果场景中的这个元件是影片剪辑
trace("movie clip '"+this[i]._name+"' is at depth "+this[i].getDepth());
//输出movie clip 名称 它的深度是***
}
}
运行后的结果:
10)getNextHighestDepth的应用。
下列示例使用
getNextHighestDepth
()
方法作为 createEmptyMovieClip()
方法的 depth
参数绘制三个影片剪辑实例,并使用每个影片剪辑的深度作为各自的标签:
场景第一帧的代码如下:
//利用循环方式绘制出三个影片剪辑
for (i = 0; i < 3; i++) {
drawClip(i);
}
for (i = 0; i < 3; i++) {
drawClip(i);
}
function drawClip(n:Number):Void {
//void 运算符计算表达式,然后放弃其值,返回 undefined,在这里指每一次使用完n值时将其放弃
this.createEmptyMovieClip("triangle" + n, this.getNextHighestDepth());
//新建一个影片剪辑triangle+n,深度为最上层。
var mc:MovieClip = eval("triangle" + n);
//把该影片剪辑赋值给mc
//以下用来绘制该影片剪辑
mc.beginFill(0x00aaFF, 100);
mc.lineStyle(4, 0xFF0000, 100);
mc.moveTo(0, 0);
mc.lineTo(100, 100);
mc.lineTo(0, 100);
mc.lineTo(0, 0);
mc._x = n * 30;
mc._y = n * 50
mc.createTextField("label", this.getNextHighestDepth(), 20, 50, 200, 200)
//为mc影片剪辑创建一个用以显示信息的文本字段label,并设置它的深度及显示的大小范围
mc.label.text = mc.getDepth();
//为刚创建的label文本区赋深度值,这样该深度值就可以在影片剪辑上显示出来
}
//void 运算符计算表达式,然后放弃其值,返回 undefined,在这里指每一次使用完n值时将其放弃
this.createEmptyMovieClip("triangle" + n, this.getNextHighestDepth());
//新建一个影片剪辑triangle+n,深度为最上层。
var mc:MovieClip = eval("triangle" + n);
//把该影片剪辑赋值给mc
//以下用来绘制该影片剪辑
mc.beginFill(0x00aaFF, 100);
mc.lineStyle(4, 0xFF0000, 100);
mc.moveTo(0, 0);
mc.lineTo(100, 100);
mc.lineTo(0, 100);
mc.lineTo(0, 0);
mc._x = n * 30;
mc._y = n * 50
mc.createTextField("label", this.getNextHighestDepth(), 20, 50, 200, 200)
//为mc影片剪辑创建一个用以显示信息的文本字段label,并设置它的深度及显示的大小范围
mc.label.text = mc.getDepth();
//为刚创建的label文本区赋深度值,这样该深度值就可以在影片剪辑上显示出来
}
运行后结果如下:
11)getURL的应用
假设场景中有一个影片剪辑为mc,现在要实现的代码为:
_root.mc.getURL("http://www.baidu.com","_blank");
则功能为:当运行时只要场景中存在mc,则就会弹出百度的首页来。
12)gotoAndPlay() gotoAndStop() stop() play() nextFrame() prevFrame() 的应用易掌握,在这里不赘述。
13)loadMovie()的应用
使用方式一:以下示例从同一目录加载 SWF 文件 circle.swf,并替换舞台上已存在的名为
mySquare
的影片剪辑:
loadMovie("circle.swf", mySquare);
使用方式二:下面的示例从同一目录加载 SWF 文件 circle.swf,但替换主影片剪辑而不是
mySquare
影片剪辑:
loadMovie("circle.swf", this);
注:这时circle.swf文件的加载位置将会是对齐左角,也就是(0,0)。
使用方式三:下面的
loadMovie("sub.swf", logo_mc);
loadMovie
()
语句将 SWF 文件 sub.swf 从同一目录加载到使用 createEmptyMovieClip()
创建的名为 logo_mc
的新影片剪辑中:this.createEmptyMovieClip("logo_mc", 999);loadMovie("sub.swf", logo_mc);
使用方式四:您可以添加以下代码,以从加载 sub.swf 的 SWF 文件所在的同一目录加载名为 image1.jpg 的 JPEG 图像。当您单击名为
myBtn_btn.onRelease = function(){
loadMovie("image1.jpg", logo_mc);
};
注:图片会占据影片剪辑logo_mc的位置,如果该图片很大,那么场景的大小会限制图片的显示范围,但logo_mc影片剪辑并无法限制图片的显示范围。
myBtn_btn
的按钮时,将加载该 JPEG。此代码将 JPEG 加载到 logo_mc
中。因此,它将 sub.swf 替换为 JPEG 图像。myBtn_btn.onRelease = function(){
loadMovie("image1.jpg", logo_mc);
};
注:图片会占据影片剪辑logo_mc的位置,如果该图片很大,那么场景的大小会限制图片的显示范围,但logo_mc影片剪辑并无法限制图片的显示范围。
14)startDrag()及stopDrag()的应用
假设场景中有一个影片剪辑mm,想拖在按下左键拖动时让该影片剪辑随之而移动,当释放左键时影片剪辑停止拖动,代码如下:(写在第一帧)
mm.onPress = function () {
startDrag(this);
}
startDrag(this);
}
mm.onRelease = function() {
stopDrag();
}
注:startDrag(this)内的this不能忘,忘了之后就不起作用并全出现问题。
stopDrag();
}
注:startDrag(this)内的this不能忘,忘了之后就不起作用并全出现问题。