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中怎样把库中的元件加载舞台

AS3中要加载一个显式对象(我们在舞台上看得见的东西),必须要载入一个类,然后要声明这个类的一个实例,再用new关键字创建它,最后用addChild()将它加载到舞台。我们将舞台着是一个展台,将库看着...
  • yuwenliang
  • yuwenliang
  • 2011年03月02日 11:35
  • 3510

As3.0 中影片剪辑调用

在falsh中可能遇到要用到某个影片剪辑不在舞台上,而是在一个在舞台上的影片剪辑里面。就是说该影片剪辑和舞台的关系是层关系! 以影片剪辑fan为例,它在另一个影片剪辑fanout里面:   (this...
  • alpha_xiao
  • alpha_xiao
  • 2015年08月17日 10:32
  • 937

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

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

Actionscript3.0-影片剪辑MC自我复制

作为一个刚刚踏入社会,学的又是多媒体技术,更加坑爹的是竟然选择了如今不是特别被人看好的Actionscript开发,也就是所谓的flash程序猿,好吧,我也只能算是半个程序猿,下面跟大家分享下前阵子遇...
  • a5613909
  • a5613909
  • 2013年11月27日 10:12
  • 668

flash全屏方法以及保持某个影片剪辑尺寸不变

flash9支持真正的全屏了,因此可以不用js去控制全屏了。 另外全屏的时候,有时候希望某个影片剪辑尺寸不变,我的as代码如下: function fullscreen()...{    Stage....
  • woowindice
  • woowindice
  • 2007年04月16日 16:25
  • 3095

怎么在FLASH的场景中控制影片剪辑的播放和停止

怎么在FLASH的场景中控制影片剪辑的播放和停止 悬赏分:5 - 提问时间2008-4-9 13:27 问题为何被关闭 主要是想问FLASH中的影片剪辑的停止我做了多个影片然后又做了一些按钮,每个按钮...
  • hbqjzx
  • hbqjzx
  • 2010年03月29日 15:04
  • 11329

影片剪辑实例名的几点注意

 如果一个影片剪辑实例,在开始的时候没有命名实例名称,而以后的某一帧命名了实例名称。那么影片剪辑将会从第一帧到影片结束一直使用系统默认的实例名称,形如:instanceXX,XX是不重复的。如果一个影...
  • WiZiM
  • WiZiM
  • 2006年08月05日 13:19
  • 2377

FLASH中影片剪辑和图形元件的区别与特点

区别:(1)影片剪辑的播放完全独立于时间轴。即使主场景中只有一个帧,也不会影响影片影片剪辑的播放。但是图形元件就不同了——如果主场景中只有一个帧,那么其中的图形元件也只能永远显示一个帧。(2)影片剪辑...
  • an129
  • an129
  • 2010年05月09日 21:10
  • 2256

flex 调用 flash影片剪辑

http://blog.sina.com.cn/s/blog_6264e7aa01011kiv.html
  • cdnight
  • cdnight
  • 2014年02月13日 08:25
  • 1418

FLASH CS 中图片变为透明,和舞台颜色一致的方法

把图片转换成影片剪辑,然后,在属性,显示里面设置 效果
  • smzquan86
  • smzquan86
  • 2011年10月09日 11:30
  • 1084
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: AS3中的如何动态加载影片剪辑
举报原因:
原因补充:

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