您的位置: 首页 > 技术文档 > 多媒体制作 > 探索F9 As3.0 Preview
AS3中与服务器交互 回到列表 Document Class特色带来了什么?
 探索F9 As3.0 Preview

作者:egoldy 时间: 2006-07-04 文档类型:翻译 来自:WebStudio

第 1 页 探索F9 As3.0 Preview [1]
第 2 页 探索F9 As3.0 Preview [2]

Clickable shapes(可点击的形体)

下面我们先开始创建一个可以点击的形体。

1. 选择文件>新建一个文档,并将它保存为simpleBall.fla.
2. 选择绘制圆工具,在场景中绘制一个正圆。当然在绘制的时候按住shift就可以了。
注意:在绘制时候确何你的Object Drawing mode(对象绘模式)是关闭的。
3.选中选择工具并双击这个形体使它高亮显示
4.  当这个形体选中后,选择编辑modify>Convert to Symbol转换为元件(按F8)来打开元件转换窗口,
5.将名称改为circle然后点击ok,将它转换为影片剪辑。
6. 元件要仍处于选中的状态,在属性面板上为它起一个实例名为:ball_mc
7. 取消对元件的选择打开action面板(F9).
8.在Action面板上输入如下代码:

代码: 

ball_mc.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
   trace("You clicked the ball");
}

在这段代码中,ball_mc实例变成了可以点击的了,因为你加入了事件侦听用来检测用户是否有点击动作,无论何时只要用户点击了ball_mc影片剪辑,clickHandler()函数就会执行。这非常类似于之前版本在组件中加入侦听事件,如As2.0使用onPress()事件来检测用户是否点击了剪辑或按钮。
9.选择Control>Test Movie 测试影片,当你点击圆时,就会在面板上输出”you clicked the ball.
10.关闭Swf文件返回Flash操作环境,编辑你的Actionscript 代码,在原有代码的上面加入如下一行代码:
ball_mc.buttonMode = true;
11.重新测试你的影片,当你的光标位于圆之上时,光标就会变成一只小手的形状。用于给用户一个提示,这是可以点击的。

Draggable shapes(可拖动的形体)

如果你想让用户可以在场影中拖动这个形体,你需要加入两个事性侦听器,mouseDown(MouseEvent.MOUSE_DOWN)和mouseUp(MouseEvent.MOUSE_UP),如下面的例子。

下面的例子示范如何为mouseDown和mouseUp事件加入事件侦听器

1.编辑我们之前的例子中代码如下:

代码: 

ball_mc.buttonMode = true;
ball_mc.addEventListener(MouseEvent.CLICK, clickHandler);
ball_mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
ball_mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
function clickHandler(event:MouseEvent):void {
  trace("You clicked the ball");
}
function mouseDownListener(event:MouseEvent):void {
   ball_mc.startDrag();
}
function mouseUpListener(event:MouseEvent):void {
   ball_mc.stopDrag();
}
 

2.测试你的影片。你就可拖动这个圆了。
虽然我们编写这个例子没有花费我们多少时间,但如果再让你写一个可拖动的形体,你可能不会情愿去写,假想你能将你的代码转换为与元件连接的外部类文件,它可以自动的创建可拖动的形体,会在将来结省你的大量时间。下面我们就看如何实现。

Converting code into a class(将你的代码转换成类)

下面的例子创建一个Actionscript类它封装整个影片剪辑的拖动的实现逻辑。现在不管什么时候,只要创建一个类的新的实例被创建,它就是可拖动的。无须为场景中的每个实例去写代码。

1.创建一个新的Fla文档并将它保存为fancyBall.fla.
2.选择File>New选择Actionscript File创建一个新的Actionscript文件。
3.保存这个Actionscript文件为Ball.as与Fla文件为同一路径下。也就是刚才创建的fancyBall.fla.
4. 在里面输入如下代码:

代码: 

package {
  import flash.display.MovieClip;
   import flash.events.MouseEvent;
   public class Ball extends MovieClip {
      public function Ball() {
         trace("ball created: " + this.name);
         this.buttonMode = true;
         this.addEventListener(MouseEvent.CLICK, clickHandler);
         this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
         this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
      }
      private function clickHandler(event:MouseEvent):void {
         trace("You clicked the ball");
      }
      function mouseDownListener(event:MouseEvent):void {
        this.startDrag();
      }
      function mouseUpListener(event:MouseEvent):void {
         this.stopDrag();
      }
   }
}
 

上面的代码定义了一个新类名为Ball,它继承了MovieClip类(内置在flash.display package中).注意在使用As3.0书写外部类时,你必须明确的导入所需要类。不同于在Fla内部书写代码。
5.保存并关闭Ball.as文档,然后打开fancyBall.fla文档。
6. 使用绘制圆工具,在场景中绘制一个圆并将转换为movieClip.
7.右击刚刚建立的圆,选择链接。
8.选择Export for ActionScript(为action导出),在Class(类)的输入框中输入类名Ball
9.点击ok.关闭此面板。
10.确何这个圆的实例在场景中,测试影片。观看是否与之前的效果是一样的。
它看起来很不错,下面的例子我们来看如何动态的创建类实例。

Dynamically creating instances of a class(动态创建类实例)

你不需要在创作时总是将元件拖动到场景中,你也可以通过使用Actionscirpt新操作方法在库中创建新的类实例。

Using the new operator(使用新的操作

之前的Actionscript在创建新的MovieClip或是TextField实例时是通过使用如MovieClip.attachMovie(),MovieClip.createEmptyMovieClip(),或MovieClip.createTextField().来创建的。在ActionScript 3.0中,你可以通过类似如new Ball()的方法创建新的MovieClip,TextField,Sprite,和Video 实例—或是你自定义的类,如下方法:
1.打开fancyBall.fla.将场景中的所有实例元件删去,在主时间线上加入如下代码:

代码: 

var b1:Ball = new Ball(); 

2.按下ctrl +回车测试,注意,我们会发现没有任何东西出现在场景中,但是在输出面板上会显示:“ball created: instance1”,尽管Flash创建了ball的一个新的实例,但它是不可视的,因为你没有使用addChild()将它加入到显示列表中。
3.编辑代码,将b1实例加入到显示列表中。测试。

代码: 

addChild(b1); 

下一部你需要使用document class,它将允许你将代码从主时间轴的第一帧上移到一个外部文档中,它类似与之前例子中的通过元件与类连接.

Using the Document Class text box(使用Document class输入框)

下面示范如何将你的代码从主时间轴移到一个外部的As文件中。

1.删去fancyBall.fla第一帧上的代码。
2.创建一个新的Actionscript文档保存为BallDocumentClass.as,与fancyBall.fla处于同一目录下。
3.加入如下代码在BallDocumentClass.as中:

代码

package {
   import flash.display.MovieClip;
   public class BallDocumentClass extends MovieClip {
      private var tempBall:Ball;
      private var MAX_BALLS:uint = 10;
      public function BallDocumentClass() {
         var i:uint;
         for (i = 0; i < MAX_BALLS; i++) {
            tempBall = new Ball ();
            tempBall.scaleX = Math.random();
            tempBall.scaleY = tempBall.scaleX;
            tempBall.x = Math.round(Math.random() * (this.stage.stageWidth - tempBall.width));
            tempBall.y = Math.round(Math.random() * (this.stage.stageHeight - tempBall.height));
            addChild(tempBall);
         }    
      }
   }
}
 

4.保存并关闭这个as文档,打开fancyBall.fla.
5.在属性面板的document class后面的输入框中输入BallDocumentClass,保存文件。
6.测试,你会发现有10个大小位置不同的元件出现在场景中。
使用Document Class允许你将代码放置在外部文件中,而不是时间线上,可以在许许的fla文件重用代码,并且在团队协作版本控制系统(CVS)中,更容易共享代码。

总结:

这篇文章只是对As3.0的一个简单应用介绍,只要告诉大家如何创建简单的类,如何使用改良的侦听事件模型,如何使用document class.

Ps by egoldy:学完这篇文章,你会发现自已也可以编写在fla中看不见一行代码的程式了,真正的是界面与代码分离,控制,看上去真的是很酷,如果你也在学习As3.0,别忘了把你的心得分享一下。Cheers J.

源文件下载

出处:WebStudio
责任编辑:moby

上一页 探索F9 As3.0 Preview [1] 下一页

◎进入论坛Flash专栏版块参加讨论

作者文章 更多作者文章
学习As2.0与AS3.0的尴尬
FLASH8 FLVPlayback组件
FLASH高级绘制
flash8与javascript集成
解决IE更新对FLASH产生影响
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2