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

 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() 方法附加的 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分别为画框活动的开始和结尾
}
运行效果:

输出面板内容为:
_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的应用。
影片剪辑在场景中一般会有以下四个位置属性:
xMinxMaxyMinyMax。这四个属性可以用一个方法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、xMaxyMinyMax四个属性存放到数组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*/
}
运行后的效果为:


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 名称 它的深度是***
    }
}
运行后的结果:


10)getNextHighestDepth的应用
下列示例使用 getNextHighestDepth() 方法作为 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() 语句将 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不能忘,忘了之后就不起作用并全出现问题。

转载于:https://www.cnblogs.com/cooolbin/archive/2007/11/30/978980.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值