评论:我们已经学会了在Flash 9如果你可以在时间线写代码,如何将现有的时间线代码转换为配合FLASH9、课堂外。文档类的形式,那么我们就要好好的学习准备和外部的文件。


包括


如果你知道as1.0和AS2.0编程之前,就包括并不陌生,在AS




我们知道,在Flash 9中,如果我们可以在时间线写代码,如何改造现有的时间表代码外部类和文档类的配合FLASH9的形式,我们需要进一步研究编写类和外部文件的方式。


包括


如果你知道as1.0和AS2.0编程之前,它就不包括陌生人和Actionscript 3我们仍然可以使用包括导入代码。
以下示例如下:



1、打开闪光灯,创建一个新文件,保存为drag_inclue.fla,在场景中创建一个影片剪辑,在这种情况下使用的球,将它转换成影片剪辑,并将它命名circle_mc。在场景中,不需要在库中设置链接属性。
2。添加一个图层,按F9键打开动作面板,在其中输入代码如下:
代码:



/ /时设置的circle_mc的显示手形光标
circle_mc.buttonmode =真;
事件监听器
circle_mc.addeventlistener(MouseEvent.CLICK事件);
circle_mc.addeventlistener(mouseevent.mouse_down,下);
circle_mc.addeventlistener(mouseevent.mouse_up,起来);
OnClick / /事件的定义
函数OnClick(事件:事件:void){
跟踪(单击);
}
对下 / /事件的定义
功能下(事件:事件:void){
circle_mc.startdrag();
}


函数内(事件:事件:void){
circle_mc.stopdrag();
}





3,选择该框架的代码,按Ctrl X剪掉它,选择Flash的新菜单,创建一个新的Actionscript文件,粘贴在新割的代码,保存drag_include.as。和相同的路径下drag_include.fla。
4。回到drag_include.fla,下面的代码是在第一帧:
drag_include.as 包括
测试电影可以看到与时间线测试相同的结果。这种方法经常用于as1.0。如果你还在用这种方式,它仍然可以使用Actionscript 3。


组件类(符号类)


这里提到的元素类实际上指的是在电影元素中指定一个名为Flash的链接。它与上面所包含的不同,是严格的阶级结构。相反,我们用时间线来准备道路。我们将拖动小球的功能包。不管你创造了多少可以拖动的球,都会变得很容易,只需要创建它的例子就可以显示出来。
我们仍然用这个例子来说明问题。打开drag_include.fla文件,将它保存为一个symbol_class.fla文件,创建一个脚本文件,将它保存为一个symbol_class.as文件在同一目录symbol_class.fla文件。现在我们抽象的代码在上述例子如下:
代码:



包{

进口flash.display.movieclip;
进口flash.events.mouseevent;
公共课symbol_class扩展MovieClip {
公共功能symbol_class(){

this.buttonmode =真;
This.addEventListener(MouseEvent.CLICK事件);
This.addEventListener(mouseevent.mouse_down,下);
This.addEventListener(mouseevent.mouse_up,起来);

}
私有函数OnClick(事件:事件:void){
跟踪(单击);
}
私有函数下(事件:事件:void){
This.startDrag();
}
私有函数内(事件:事件:void){
This.stopDrag();
}
}
}





因为我们将类的名称设置为symbol_class,所以这类文件必须保存为symbol_class.as文件。我们需要做进一步的工作,在源文件打开库面板,右键点击脚本的circle_mc出口,选择链接,检查输入类symbol_class.as我们及相关元素。在这个时候你测试电影。与这里的结果相同。值得注意的是,现场仍在保证编码的存在circle_mc。因为我们不circle_mc动态粘。在本案的同时,在上面的例子中,我们没有使用AS3.0文档类。


动态类(动态类)


这种书写方式和Actionscript3.0配合FLASH9在预览实例教程的探索是一样的,这是最常用的。对于一些复杂的过程,由一个主要的和多个次级类组成。封装独立的函数,显示主要用途和集成类的每个部分的功能。正如上面的例子,我们已经封装了粒子拖曳函数。现在我们要创建100个可以拖动的小球。
以下是以下内容:





我们的想法是创建了一个封装拖动函数的类。我们正在创建一个主类来显示这100个拖动函数。我们将使用AS3.0新documnetclass特征。
如下:我们名字的主类documentclass.as,后包被命名为drag_class.as拖动球函数。
documentclass.as
代码:



包{

进口flash.display.movieclip;

公共课documentclass扩展MovieClip {

属性
私人_circle:drag_circle VaR;
私人_wslink:wslink VaR;
const int = 100 maxballs:私人;
构造函数
公共函数DocumentClass(){
var;
创建循环球
为(i = 0;i < = maxballs;我){
创建一个拖动球
_circle =新drag_circle();
球属性集的一些例子
_circle.scaley = _circle.scalex = Math.random();
在场景x,y位置
_circle。x = math.round(Math.random()*(stage.stagewidth - _circle。宽度));
_circle。Y = math.round(Math.random()*(stage.stageheight - _circle。高度));
在现场显示
addChild(_circle);
}
}

}
}






drag_circle.as类


代码:



包{

进口flash.display.sprite;
进口flash.events.mouseevent;

公共课drag_circle延伸雪碧{

公共功能drag_circle(){

this.buttonmode =真;
This.addEventListener(MouseEvent.CLICK事件);
This.addEventListener(mouseevent.mouse_down,下);
This.addEventListener(mouseevent.mouse_up,起来);

}
私有函数OnClick(事件:事件:void){
跟踪(单击);
}


私有函数下(事件:事件:void){
This.startDrag();
}


私有函数内(事件:事件:void){
This.stopDrag();
}

}
}





我们使用前打开并保存为一个drag_class.fla文件fla文件,在document.as和drag_class.as类目录一样。打开库面板,选择在球库面板,在类的名称输入drag_class点击右键并选择链接。与上述元素的注意是不同的,我们不需要在场景中的任何内容,因为我们一直在documentclass.as动态连接和显示的circle_mc.in documentclass.fla主场景的主要范畴,进入我们的主类的名字DocumentClass。在属性面板的文档类输入框中,您可以测试它。


不使用库组件的动态类(没有库的动态类)


在这种情况下,我们使用的是已经创建好的影片剪辑,并在图书馆链接的类,这是一些复杂的图形的情况下更好的选择,如果你可以使用绘图API绘制的任何图形你要很熟练,那么你可以不使用库元素可以直接写在类,在本教程中,我们关注的是这样,那么我们可以不使用图书馆如何写一个类来实现以上功能。
很明显,我们不使用库中的组件,所以我们需要直接使用绘图API来直接绘制。
首先删除所有的内容在场景中的FLA,包括图书馆的内容。





的documentclass.as类如下:


代码:



包{

进口flash.display.movieclip;
公共课documentclass扩展MovieClip {
私人_circle:drag_circle VaR;
const int = 100 maxballs:私人;


公共函数DocumentClass(){

var;

为(i = 0;i < = maxballs;我){

_circle =新drag_circle();

_circle.scaley = _circle.scalex = Math.random();

_circle。x = math.round(Math.random()*(stage.stagewidth - _circle。宽度));
_circle。Y = math.round(Math.random()*(stage.stageheight - _circle。高度));

addChild(_circle);
}
}
}
}






drag_circle.as类


代码:



包{

进口flash.display.sprite;
进口flash.display.shape;
进口flash.events.mouseevent;


公共课drag_circle延伸雪碧{

机车的_circle:雪碧;

公共功能drag_circle(){

_circle =新的精灵();
_circle.graphics.beginfill(0xFF0000);
_circle.graphics.drawcircle(5 - 5, 10);
_circle.graphics.endfill();
_circle.buttonmode =真;
addChild(_circle);


_circle.addeventlistener(MouseEvent.CLICK事件);
_circle.addeventlistener(mouseevent.mouse_down,下);
_circle.addeventlistener(mouseevent.mouse_up,起来);

}


私有函数OnClick(事件:事件:void){
跟踪(单击);
}


私有函数下(事件:事件:void){
_circle.startdrag();
}


私有函数内(事件:事件:void){
_circle.stopdrag();
}
}
}





注重drag_circle.as类,我们只是添加一段:


代码:



_circle =新的精灵();
_circle.graphics.beginfill(0xFF0000);
_circle.graphics.drawcircle(5 - 5, 10);
_circle.graphics.endfill();






还有一个声明构造函数之前:私人VaR _circle:雪碧;
测试你的胶卷。当然,在这里我们画一个红色圆圈的渐变。


包装类


一般来说,当文件是一个类,但在AS3中,现在可以定义多个类文件协助主班。
类文件中的辅助类必须在类包之外定义,并且只能对文件中的主类和其他辅助类可见,其基本结构如下所示:
代码:



包{
类{
函数的MyClass(){
VaR的帮手:myhelper =新myhelper();
}
}
}
类myhelper {
函数的MyHelper(){
VaR的帮手:helpershelper =新helpershelper();
}
}
类helpershelper {
功能helpershelper(){
}
}





请注意,包中最多只能定义一个类。同一文件中的辅助类不是包块的一部分,只能在该文件中可见并使用。


下一步我们将改写我们班分成上述包装类。我们写在documentclass.as文件下面的代码,并在属性面板FLA面板文档类的输入框输入documentclass类名称。
代码:



包{

进口flash.display.movieclip;
进口flash.display.sprite;
进口flash.events.mouseevent;

文档类
公共课documentclass扩展MovieClip {

私人_circle:drag_circle VaR;
const int = 100 maxballs:私人;

公共函数DocumentClass(){
var;
为(i = 0;i < = maxballs;我){
_circle =新drag_circle();

_circle.scaley = _circle.scalex = Math.random();

_circle。x = math.round(Math.random()*(stage.stagewidth - _circle。宽度));
_circle。Y = math.round(Math.random()*(stage.stageheight - _circle。高度));

addChild(_circle);
}
}
}

公共课drag_circle延伸雪碧{

机车的_circle:雪碧;

公共功能drag_circle(){

_circle =新的精灵();
_circle.graphics.beginfill(0x6d6e71);
_circle.graphics.drawcircle(5 - 5, 10);
_circle.graphics.endfill();

addChild(_circle);

this.buttonmode =真;
_circle.addeventlistener(MouseEvent.CLICK事件);
_circle.addeventlistener(mouseevent.mouse_down,下);
_circle.addeventlistener(mouseevent.mouse_up,起来);

}
私有函数OnClick(事件:事件:void){
跟踪(单击);
}


私有函数下(事件:事件:void){
_circle.startdrag();
}
私有函数内(事件:事件:void){
_circle.stopdrag();
}
}
}


你现在可以测试你的电影了。