关闭

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

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

开始

首先,你需要创建一个能够动态载入的影片剪辑。在这里,只是简单的创建了一个实心的蓝色圆,在库中,类名称为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函数。

 
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:812672次
    • 积分:11707
    • 等级:
    • 排名:第1273名
    • 原创:303篇
    • 转载:137篇
    • 译文:53篇
    • 评论:220条
    最新评论