您的位置:首页 > 其它

与影片剪辑相关的 事件 属性 方法(二)

2007-11-30 23:15 281 查看
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的应用
mc.attachMovie(id:String, name:String, depth:Number, [initObject:Object])
从库中取得一个元件并将其附加到影片剪辑中。
使用
MovieClip.removeMovieClip()
MovieClip.unloadMovie()
删除通过
attachMovie
()[/code] 方法附加的 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上)
onClipEvent(mouseDown){
this.attachMovie("circle", "circle_mc", this.getNextHighestDepth());

}

3)creatEmptyMovieClip的应用,用来创建一个空的影片剪辑
4)createTextField的应用参见实例10
5)duplicateMovieClip的应用
先看下面的一段代码:
var container:MovieClip = setUpContainer();
//把自定义的setUpContainer()类用于实际,建立一个影片剪辑container

var ln:Number = 10;
//用于循环的计数器

var spacer:Number = 1;
//用于间隔各复制影片剪辑的位置

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});
//通过循环复制十个相同的影片剪辑,但位置X相同,Y却不同

trace(duplicate); // _level0.clip-[number]
//输出信息

}

//建立一个自定义函数setUpContainer,目的便是用来做一个长方形的影片剪辑

function setUpContainer():MovieClip {
//为新建立的影片剪辑类函数命名

var mc:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//新建影片剪辑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;
//beginFill、endFill分别为画框活动的开始和结尾

}
运行效果:



[b]输出面板内容为:

_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-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);
//把xMin、
xMax
yMin
yMax四个属性存放到数组bounds_obj中


for (var i in bounds_obj) {
//分别取bounds_obj的四个值当中的一个

trace(i+" --> "+bounds_obj[i]);
/*输出bounds_obj各项的值(如i=1时会输出yMax,依次类推,分别为:yMin、xMax、xMin。而bounds_obj[1]代表的是最y的最大值110,之后依次是:10、110、10*/
}
运行后的效果为:



[b]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 名称 它的深度是***

}

}
运行后的结果:



[b]10)getNextHighestDepth的应用

下列示例使用
getNextHighestDepth
()[/code] 方法作为
createEmptyMovieClip()
方法的
depth
参数绘制三个影片剪辑实例,并使用每个影片剪辑的深度作为各自的标签:
场景第一帧的代码如下:

//利用循环方式绘制出三个影片剪辑

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文本区赋深度值,这样该深度值就可以在影片剪辑上显示出来

}

运行后结果如下:



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
()[/code] 语句将 SWF 文件 sub.swf 从同一目录加载到使用
createEmptyMovieClip()
创建的名为
logo_mc
的新影片剪辑中:this.createEmptyMovieClip("logo_mc", 999);

loadMovie("sub.swf", logo_mc);

使用方式:您可以添加以下代码,以从加载 sub.swf 的 SWF 文件所在的同一目录加载名为 image1.jpg 的 JPEG 图像。当您单击名为
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);

}
mm.onRelease = function() {

stopDrag();

}

注:startDrag(this)内的this不能忘,忘了之后就不起作用并全出现问题。

[/b]
[/b]
[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: