stage.addEventListener(MouseEvent.CLICK,gotoLink);
function gotoLink(e:MouseEvent)
{
var url:String = "http://www.baidu.com";
var req:URLRequest = new URLRequest(url);
navigateToURL(req,"_blank");/*"_blank"表示在新建窗口内打开链接,仅swf内嵌入网页时,该代码才有效。如果只是单纯的发布为swf文件,"_blank"可以省略不写*/
}
上述代码可简写为:
stage.addEventListener(MouseEvent.CLICK,gotoLink);
function gotoLink(e:MouseEvent)
{
navigateToURL(new URLRequest("http://www.baidu.com"),"_blank");
}
【P28】10.加载外部图像
AS2时代加载图像或SWF文件都是由MovieClip来执行,但AS3内MovieClip类已经不能加载任何东西,取而代之的是Loader类。又因Loader类继承自显示对象DisplayObject,故可被加至显示对象容器里。
var ldroader=new Loader();
var req:URLRequest = new URLRequest("demo.jpg");//需要在fla文件所在目录内有一个名为demo.jpg的图像文件,否则会报错。
ldr.load(req);
addChild(ldr);
【P31】13.侦听外部加载的进度,并确认是否加载完成
AS3的Loader类有一个contentLoaderInfo属性,可传回正在加载对象的LoaderInfo对象。而LoaderInfo类会提供有关加载的SWF文件或图像文件的信息。简而言之,Loader只负责加载,而LoaderInfo则负责提供加载进度等相关的信息。
var ldroader=new Loader();
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoaderProgress);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderComplete);
var req:URLRequest = new URLRequest("E:/swf/1.swf");//请将路径修改为合适自己电脑情况的
ldr.load(req);
addChild(ldr);
var tf:TextField=new TextField();//新建一个动态文本,用于显示加载进度的
tf.x=40;
tf.y=380;
tf.width=200;
addChild(tf);
function onLoaderProgress(erogressEvent)
{
var _percentage:uint = e.bytesLoaded / e.bytesTotal * 100;
tf.text="载入百分比:"+_percentage+"%";
}
function onLoaderComplete(e:Event)
{
ldr.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,onLoaderProgress);
tf.text="加载完成!"
}
测试时,开启“视图 模拟下载”或者测试影片之后继续按一次快捷键Ctrl+Enter即可开启模拟下载的情况
【P32】14.控制外部加载的SWF文件
载入外部的SWF文件之后,可以控制其播放或调用其内部函数来执行,不过,上述操作都必须要在SWF文件完全加载成功后,才可以实现
打开“fla源文件”文件夹内的13_Loader_SWFAndGotoAndPlay.fla文件
var ldroader = new Loader();
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoaderProgress);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderComplete);
var req:URLRequest = new URLRequest("loadedAS3.swf");
ldr.load(req);
this.addChild(ldr);
function onLoaderProgress(erogressEvent):void {
var _percentage:int = e.bytesLoaded / e.bytesTotal * 100;
trace("载入百分比:"+_percentage);
}
function onLoaderComplete(e:Event):void {
var _contentMC:MovieClip = ldr.content as MovieClip;
_contentMC.gotoAndPlay(2);
}
注:Loader对象的content属性可以取得其容器内的显示对象,该属性回传的类是DisplayObject。由于被加载的loadedAS3.swf文件是使用AS3编写的,所以对象是MovieClip,一样需将类传回MovieClip才能进一步操作它【使用as可以将对象更改类型】
同理,如果被加载的是图像,那么content属性取得的会是Bitmap对象
【P33】15.侦听主时间轴的加载进度
每个显示对象实例都有loaderInfo属性,利用该属性可以取得相关的加载信息,当然包括主时间轴。打开“fla源文件”文件夹内的14_loadMainSWF.fla文件,代码如下:
stop();//先让时间轴暂停。
this.addEventListener(Event.ENTER_FRAME, onRootEnterFrame);//侦听ENTER_FRAME事件。
function onRootEnterFrame(e:Event):void {
var _bytesLoaded:int = this.loaderInfo.bytesLoaded;//已载入元位组。
var _bytesTotal:int = this.loaderInfo.bytesTotal;//总档案大小元位组。
var _percentage:int = (_bytesLoaded / _bytesTotal * 100);//二者相除并乘上一百, 即可得到百分比。
if (_percentage >= 100) {//如果载入的百分比大于等于100, 表示载入完毕。
this.removeEventListener(Event.ENTER_FRAME, onRootEnterFrame);//取消侦听。
this.play();//播放时间轴。
} else {
percent_txt.text = "LOADING" + _percentage +"%";
}
}作者: 网雨霏霏 时间: 2018-6-1 22:14