首先我们来介绍下AS3些基础知识
在AS3中怎样把库中元件加载舞台
我们知道在AS2中我们可以通过attachMovie将库中mc加载到舞台上在使用这个命令前我们必须要做事情是在库中右击元件打开连接面板然后在标识符框中为元件取上个连接名这样才能用attachMovie来加载它现在我们在AS3中来做下在库中右击元件打开连接面板这时你会叫道:“为什么我标识符框是灰色不能用”不是你是灰色而是在AS3中都是灰色在AS3中是不能用 attachMovie来加载元件AS3据说是完全面向对象编程语言了这就必须要了解类对象等概念类就是类东西个名称比如动物类就包括了所有动物动物类下面所有人就是人类了又如所有电器可叫电器类电器类下面又可有电视机类等对象是某类个具体例子比如你就是人类中个具体人你就是人类个对象看到这里你说:“我晕”我说:“我更晕”介绍类对象这些概念看人不容易看懂说人更不容易说清在 AS3中要加载个显式对象(我们在舞台上看得见东西),必须要载入个类然后要声明这个类个例子再用关键字创建它最后用 addChild将它加载到舞台我们将舞台着是个展台将库看着是个仓库现在仓库中有台电视机要放到展台上该怎样做呢?首先需要个电视机类然后需要声明个例子:
var 电视机甲(例子名):电视机(类名)= 电视机();
addChild(电视机甲);
现在我们回到flash中来看看现在库中有个元件我们要将它加载到舞台上应该这样做:
在库中右击该元件打开连接面板我们会看到个叫类文本框在这里给这个类取个名字比如myl.确定这样我们就加载了个叫myl类了接下来在场景帧动作中输入:
var mymc:myl = myl;
addChild(mymc);
mymc.x = 100;
mymc.y = 100;
测试影片我们会看到库中这个元件已被加载到舞台(100100)坐标处了
AS3事件侦听机制
什么是事件呢?当某件事情发生时候就做些什么事这个某件事情就是事件比如:press,当鼠标按下时候这就是个事件在AS2中我们有两种方式来实现事件驱动种是将代码直接写在元件上(mc或按钮)比如在场景中有个叫mymc影片剪辑元件我们在其上点右键打开动作面板输入:
on(press){
干点坏事;
}
这样当我们在mymc元件上按下鼠标时就会去干点坏事第 2种思路方法是在帧动作上输入代码:
mymc.onPress = function{
干点坏事;
}
这样当我们在mymc元件上按下鼠标时同样会去干点坏事
接下来我们在AS3中来看看:在元件上点右键打开动作面板你会看到“无法将动作应用于当前所选内容”哦嗬搞不成在AS3中无法将代码写在元件上只能写在帧动作上而AS3事件侦听也有它自已格式不管你乐意不乐意你都必须这样做AS3在事件侦听格式是:
function 名称(事件对象:事件类型):void
{
// 此处是为响应事件而执行动作
}
触发事件对象.addEventListener(事件类型.事件名称, 名称);
必须先声明个将要执行代码放在其中然后触发事件对象用addEventListener去侦听事件如果事件发生则还用上面那个干坏事例子打开帧动作面板输入:
function 干坏事(event:MouseEvent):void {
干点坏事;
}
mymc.addEventListener(MouseEvent.CLICK,干坏事);
这样当我们在mymc元件上按下鼠标时会再次去干点坏事上面代码中MouseEvent是鼠标事件意思CLICK是单击意思即在元件上单击就会触发事件
在AS3中改变对象位置和缩放对象
我们知道对象在舞台上位置由其x,y轴坐标来决定在AS2中有两个属性:_x,和_y用来指定对象x,y坐标这点在AS3中也是样只是AS3中去掉了下划线属性名就叫x,y.比如在AS2中要将mymc位置定在(100100)处要这样:
mymc._x = 100;
mymc._y = 100;
而在AS3中是这样:
mymc.x = 100;
mymc.y = 100;
在AS2中对象大小可以用width,height,_xscale,_yscale 4个属性来确定在AS3中width和height是样不再说它了AS3用scaleX和scaleY属性取代了_xscale,_yscale属性同时它们值也是有区别AS2中,_xscale, _yscale属性值是百分比而AS3中scaleX和scaleY值是分比分比?这是我发明博士专用名词嘿嘿scaleX和 scaleY值实际就是放大缩小倍数比如在AS2中 mymc._xscale = 30; 这是将mymc宽度缩小到原来30%
在AS3中 mymc.scalex = 30; 这是将mymc宽度放大到原来30倍要将宽度缩小到30%就要用
mymc.scale = 0.3;
好了基础知识就介绍这么多本文就当是AS3入门教程吧介绍就几个入门知识
下面我们就来做个下雪效果练习将上面知识点运用到例子中
例子练习-下雪效果
效果演示
打开flash cs3选择新建flash文件(ActionScript 3.0).
导入张背景图片在场景中放好
新建个影片剪辑元件将舞台放大到800%用椭园工具画个无笔触填充色为放射将白色左色标透明度为100%右色标透明度0%椭园大小这 4x3用选择工具调整下使其不太规则在第30帧插入关键帧插入引导层画条由上向下弯曲引导线回到第层在第帧和30帧分别将椭园放到引导线两端建立补间动画
如图:
放大至800%时
打开库在元件上右击打开连接面板在类文本框中输入:xl,确定
回到主场景新插入图层命名为action,打开动作面板:输入:
var i:Number = 1;
addEventListener(Event.ENTER_FRAME,xx);
function xx(event:Event):void {
var x_mc:xl = xl;
addChild(x_mc);
x_mc.x = Math.random*550;
x_mc.scaleX = 0.2 + Math.random;
x_mc.scaleY = 0.2 + Math.random;
i;
(i>100){
this.removeChildAt(1);
i=100;
}
}
ok,完成
上面代码在基础介绍中都已介绍说明了应该看就明白了有几句解释下
x_mc.scaleX = 0.2 + Math.random;
x_mc.scaleY = 0.2 + Math.random;
0.2 + Math.random;会产生0.2-1.2间随机数这就让雪花缩小到20%到放大到120%间落下来雪花大小不显得更加真实些
removeChildAt(n);是删除已加载显式对象其中n是已加载对象索引号从addEventListener (Event.ENTER_FRAME,xx);这句可以看出运行帧就会从库中加载个雪花同时i加这样当i等于100时场景中就已有 100个雪花了这个时候我们用this.removeChildAt(1);将最先加载雪花删除然后将i设为100到下帧i就又大于100 了那么要加载1个雪花同时又删除了个雪花这就达到了个动态平衡场景中始终只有100个雪花要不然就会雪越下越多造成雪灾就不好了
最新评论