AS3中的如何动态加载影片剪辑

原创 2007年09月19日 10:21:00
使用时间线,你可以很直观的制作一些动画,而利用一些脚本,就可以控制舞台上的影片剪辑。那更为灵活的是什么呢?一个动态的影片剪辑既不是使用时间线,也不是使用现有舞台上的。
这些影片剪辑单独的存在库中,这篇文章将告诉你如何的动态的调用他们。
例如:点击以下蓝色的矩形,你会看到一个圆在你点击的区域逐渐的出现和消失。这个圆只有在你的鼠标点击的情况下才能添加到舞台上并运动的。这篇文章将会告诉你如何绘制和保存到库中。

开始

首先,你需要创建一个能够动态载入的影片剪辑。在这里,只是简单的创建了一个实心的蓝色圆,在库中,类名称为BlueCircle,如果你不知道如何来做,以下的介绍将会帮助你解决。
如果你已经知道了如何来创建一个圆,并以BlueCircle的类名保存到库中,请跳到下一页直接看代码。

创建一个BlueCircle影片

以下的介绍将会解释如何创建一个影片并指定该蓝色圆为动态载入。
1、首先,在Flash CS3中创建一个文档,在属性面板中,设置文档的宽高为300和200像素。

2、使用圆形工具在舞台上画一个圆,蓝色填充。

3、在圆形被选择的前提下,按F8或者点击<修改>-<转化为元件>。转化为元件的窗口就会出现。在名称一栏中输入circle,类型选择影片剪辑。

先不要急着点OK。来做一下更多的修改。
4、从转换为元件的窗口中,找到链接的标示,如果你没有看到,点一下<高级>按钮来显示他。选择<为ActionScript导出>.,替换掉在Class一栏中所显示的内容为BlueCircle。


基本类一栏将会自动的显示出来。但是如果没有显示,你可以输入上图那样的flash.display.MovieClip。
5、点击OK关闭该窗口,在库中你会看到你新创建的新元件。

如果你没有看到库,按一下Ctrl+L来显示他。
6、到这里,你的圆形影片剪辑已经保存到了库中,而你的舞台上有一个它的复制品,删除他,这样舞台上就什么都没有了。
添加代码

在时间线上右击,选择脚本。将以下的代码复制到脚本窗口中:
function Main() {
// 为舞台添加鼠标事件的监听
stage.addEventListener(MouseEvent.CLICK, AddCircle);
}
Main();
function AddCircle(e:MouseEvent):void
{ // 在舞台上添加一个圆
var newCircle:BlueCircle = new BlueCircle();
this.addChild(newCircle);
// 设置圆的x,y的位置
newCircle.x = mouseX;
newCircle.y = mouseY;
// 设置圆的缩放比例和透明度。
newCircle.scaleX = 0;
newCircle.scaleY = 0;
newCircle.alpha = 0;
// 添加Enter_Frame事件的监听
newCircle.addEventListener(Event.ENTER_FRAME, ZoomCircle);
}
function ZoomCircle(e:Event):void
{ // 获得点击得圆
var circleMC:MovieClip = MovieClip(e.target);
// 增加缩放。
circleMC.scaleX += .05;
circleMC.scaleY += .05;
//到达一定比例后,透明度减弱
if (circleMC.scaleX < 2)
{ circleMC.alpha += .03;
} else { circleMC.alpha -= .03;
// 圆几乎消失后,删除事件
if (circleMC.alpha < .1)
{ circleMC.removeEventListener(Event.ENTER_FRAME, ZoomCircle);
}
}
}

ctrl+Enter运行该动画,如果你点击影片的任何位置,你会看到你在第一章中看到的效果。
分析代码
现在你已经有了动画,让我们来看一下代码的细节,你可以对如何制作一个动态的影片剪辑有一个更好的想法。
让我们先走Main函数开始
function Main() {
// 为舞台添加鼠标事件的监听
stage.addEventListener(MouseEvent.CLICK, AddCircle);
}
Main();

Main函数在动画首次运行时被调用。函数中非常重要的一行(只有一行)是我为鼠标事件添加了事件的监听:
stage.addEventListener(MouseEvent.CLICK, AddCircle);

为了监听事件,你首先需要指派一个对象扮演监听者。在这里,我指派了舞台为监听者。为了达到有效的监听,你也需要知道监听什么,在以上的代码中,我监听MouseEvent.CLICK事件。
一旦你发现你监听到了,你也许需要做什么。最简单的方法就是创建一个包含做什么的函数。这里,我调用AddCircl函数来处理你监听到的事件。
到现在,我告诉舞台去监听鼠标事件,如果它听到了点击(MouseEvent.CLICK)事件,便调用AddCircle函数。
好了,结束对事件监听的讨论,来说说所调用的AddCircl函数。先来看一下该函数的定义:
function AddCircle(e:MouseEvent):void { . . . . }

并不像其他的函数调用,一个函数被调用是依靠一个事件句柄需要适合某种特殊的特征。首先,他必须作为一个(唯一的一个)事件类型的参数。第二、他没有返回值,所以返回的类型必须是void。
AddCorcle是适合这两个标准的。他作为MouseEvent事件类型的参数。而MouseEvent是的基类就是Event类。函数也没有返回值,所以他的返回类型设置为void。
现在,来看一下整个AddCircle函数。
function AddCircle(e:MouseEvent):void
{ // 在舞台上添加一个圆
var newCircle:BlueCircle = new BlueCircle();
this.addChild(newCircle);
// 设置圆的x,y的位置
newCircle.x = mouseX;
newCircle.y = mouseY;
// 设置圆的缩放比例和透明度。
newCircle.scaleX = 0;
newCircle.scaleY = 0;
newCircle.alpha = 0;
// 添加Enter_Frame事件的监听
newCircle.addEventListener(Event.ENTER_FRAME, ZoomCircle);
}

第一部分处理的是添加BlueCircle并显示在舞台上。所有的这些都在我的"AS3.0中如何显示库中内容"的文章中有讲解。这里就不再赘述了。需要注意的是对新圆的引用是newCircle。也许要注意x-scale和y-scale的首字母大写。透明度设置为0。
这篇文章的最有意思的一行是添加了一个ENTER_FRAME事件监听newCircle影片剪辑。
newCircle.addEventListener(Event.ENTER_FRAME, ZoomCircle);

添加事件监听的格式想必你已经清楚了,过去AS2中的onEnterFrame和enterFrame现在换成了Event.ENTER_FRAME。该事件监听以你的帧频的速度来反复调用ZoomCircle函数。

 

as3访问控制影片剪辑每帧有相同名字的mc

var coinEffect :MovieClip;//效果动画 var tempMc :MovieClip; var coinType :int = 1;//1,2,3 c...

EF+MVC3+zTree动态加载

  • 2013年11月13日 17:36
  • 11.44MB
  • 下载

Ext 3.3.1 动态加载树结构 - jar3

  • 2011年05月18日 11:20
  • 4.22MB
  • 下载

不再当码农-Flash AS3.0多个影片剪辑实现同一功能循环问题

Flash AS3.0多个影片剪辑实现同一功能循环问题        作为编程小白的我,对编程实在是无力啊~所以代码写的也不够简练正规,这次讨教的方法必须来发一篇博客分享给大家,虽然你们可能都会哈哈...

将影片剪辑或声音动态添加到舞台

 要从库中检索影片剪辑或声音的副本,并将它作为影片的一部分播放,可以使用   MovieClip   对象的   attachMovie   方法或   Sound   对象的   attachSou...

python3 爬虫日记(三) 爬取堆糖动态加载网页

1.分析:进入堆糖网后我们在分类找到插画绘画进入这个分类后发现好多图片,下拉后发现会有不断的图片刷新出来,这就是堆糖采用了动态加载网页。 2.用开发者工具(F12)分析:按一下F12,找到n...

(1)Assetbundle基于Asp3.Net动态加载模型

最近项目模型量比较大,所以我考虑使用动态加载,然后就想到了Assetbundle吗,之前有用过,但是不怎么详细,所以这次项目遇到很多坑,遇到的问题记录一下方便自己和别人,有问题的地方–哈哈菜鸟请轻喷。...

动态加载DLL界面方法

  • 2017年11月27日 10:46
  • 52KB
  • 下载

vc 动态加载显示jpg、bmp图片

  • 2016年06月02日 16:36
  • 208KB
  • 下载

python3 网络爬虫(二)利用get请求获取网页的动态加载数据

环境:python3.4 win7 框架:scrapy 接着上一篇,这一次来说说如何获取网页上动态加载的数据: 作为初学者的我们,刚开始接触爬虫一般都只会爬取一些静...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: AS3中的如何动态加载影片剪辑
举报原因:
原因补充:

(最多只允许输入30个字)