当前位置:七道奇文章资讯设计学堂Flash设计
日期:2009-04-03 23:48:00  来源:本站整理

<b>通过实例学习AS3.0——案例五</b>[Flash设计]

赞助商链接



  本文“<b>通过实例学习AS3.0——案例五</b>[Flash设计]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

首先声明:本人大菜鸟一个,刚接触AS3不久,很多理念还没来得及灌输,这些case都是从网上down的,但因为讲解是英文的,不利我们学习,我就充当一个translater,趁便可以让自己巩固一下知识.

水平有限,错误不免,欢送大虾小虾,大鸟小鸟指正.

下面进入正题:

案例5:熟习AS3的package,以及多个package之间的彼此通信

阐明:一个很简单的demo,有4个按钮,当鼠标划过和移开时会显现出差别的状况,单击后变成disabled,再点击其他的按钮时,之前disabled的按钮恢复,被点击的按钮失效.

演示:http://www.live-my-life-with-yuyi.com/as3_cases/communicating/

预备工作:翻开源文件communicating_final.fla,点击属性里的公布设置,点击Actionscript3旁边的设置,在最下面的classpath里,引入classes的文件夹的途径,然后点击肯定,前期工作就预备完了.

代码:

源文件里的代码很简单:

import todd.interactive.ButtonSet;
var buttons:ButtonSet = new ButtonSet();
buttons.addButtons([one_mc,two_mc,three_mc,four_mc]);
addChild(buttons);

导入ButtonSet类,实例化,然后调用里面的一个办法,最后将它放到舞台上.

classes文件夹下面的todd->interactive文件夹里有两个as文件,此中一个就是方才调用的ButtonSet,来看看ButtonSet的源码:

package todd.interactive
{
//其实只需载入display和events便可以了,不过量载入几个并不影响文件大小和效率
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.net.*;
import flash.geom.*;
import flash.ui.*;
import flash.utils.*;
import fl.transitions.*;
import fl.transitions.easing.*;

public class ButtonSet extends MovieClip
{
public var buttons:Array;

public function ButtonSet()
{

}

public function addButtons(buttonSet:Array):void
{
buttons = buttonSet;
for(var i:int = 0; i < buttons.length; i++)
{
addChild(buttons[i]);
}
}
}
}

一个类应当被放在一个package里面,就像钱应当被放到钱包里一样.package背面定义的是该类的途径.然后一系列常用的类.
定义了一个全局变量buttons,在变量前面加一个public便可以了.这样就可以在整个类中被拜候到.
类名应当和文件名一样(辨别大小写),然后定义一个同名函数,这个函数会在类被初始化时调用,就像php4的类一样.这里只是搭了个架子,没有具体内容.
然后定义了一个函数addButtons,它的作用就是将一些mc大概sprites放到自己的container里(addChild).
还有一个类:DisablingButton,也是位于todd->interactive文件夹下,这也是这个案例的核心.对了,之前已经将RectButton的linkage里的baseClass设置为todd.interactive.DisablingButton.

代码略微有点长,且听我细细道来

package todd.interactive{
import flash.display.*;
import flash.events.*;
import todd.interactive.ButtonSet;
public class DisablingButton extends MovieClip {
var labels:Array;
var thisParent:*;
var thisIndex:int;
public function DisablingButton() {
labels = this.currentLabels;
this.addEventListener(MouseEvent.CLICK, disableButton);
this.addEventListener(MouseEvent.ROLL_OVER, over);
this.addEventListener(MouseEvent.ROLL_OUT, out);
this.addEventListener(Event.ADDED,setParent);
}
function disableButton(event:MouseEvent):void {
for (var i:int = 0; i < labels.length; i++) {
if (labels[i].name == "disable") {
this.gotoAndPlay("disable");
}
}
this.removeEventListener(MouseEvent.CLICK, disableButton);
this.removeEventListener(MouseEvent.ROLL_OVER, over);
this.removeEventListener(MouseEvent.ROLL_OUT, out);
enableOthers();
}
function enableButton():void {
this.addEventListener(MouseEvent.CLICK, disableButton);
this.addEventListener(MouseEvent.ROLL_OVER, over);
this.addEventListener(MouseEvent.ROLL_OUT, out);
this.gotoAndStop(1);
}
function over(event:MouseEvent):void {
for (var j:int = 0; j < labels.length; j++) {
if (labels[j].name == "over") {
this.gotoAndPlay("over");
}
}
}
function out(event:MouseEvent):void {
for (var k:int = 0; k < labels.length; k++) {
if (labels[k].name == "out") {
this.gotoAndPlay("out");
}
}
}
function setParent(event:Event):void {
if (this.parent is ButtonSet) {
thisParent=this.parent;
for (var w:int=0; w < thisParent.buttons.length; w++) {
if (this == thisParent.buttons[w]) {
thisIndex=w;
}
}
}
}
function enableOthers():void {
for (var z:int=0; z < thisParent.buttons.length; z++) {
if (z != thisIndex) {
thisParent.buttons[z].enableButton();
}
}
}
}
}

载入了两个常用类后,又载入了方才定义的ButtonSet类,这样我们就可以利用ButtonSet的一些办法了.

注意:这个类必须担当Movieclip类,因为该类的对象是一个mc.
然后定义了一些全局变量(默许均为public).
成立析构函数DisablingButton,labels = this.currentLabels; 这句话的意思是获得当前mc的label属性,以array的情势返回,包含了label.frame,label.name等等的属性.
然后监听自己的鼠标点击、移入、移失事件.
this.addEventListener(Event.ADDED,setParent);这句话的意思是当自己被增添进一个容器时调用setParent函数.
disableButton这个函数作用是,将当前mc的状况变成disabled,然后撤消监听事件,同时激活其他的按钮.
enableButton函数的作用就是激活自己的监听事件,并初始化自己的状况.
over和out函数很简单,就是设置自己当前的状况.
setParent函数的终究目的是捕捉点击事件发生在哪个mc上(gotoAndPlay办法将触发EVENT.ADDED,所以over和out函数都将触发setParent函数,这也是一个待改良的地方).
enableOthers函数顾名思义,激活其他的按钮.因为setParent已经记着了,最后的点击事件发生在哪个mc上,所以只要遍历一下buttons,然后激活其他的mc便可以了.

案例解析完毕.

源文件下载

来自:蓝色抱负


  以上是“<b>通过实例学习AS3.0——案例五</b>[Flash设计]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .