• fla使用as文件


    (1) 使用include来导入代码 

    1.打开flash新建一个文档,保存为drag_inclue.fla,在场景中创建一个Circle_MC,场景中实例名为circle_mc。不需要在库中设置链接属性。

    2.新建一个Actionscript文件,名为drag_include.as,与drag_include.fla在同一路径下。内容如下:

    View Code
    circle_mc.buttonMode = true;
    circle_mc.addEventListener(MouseEvent.CLICK,onClick); 
    circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,onDown); 
    circle_mc.addEventListener(MouseEvent.MOUSE_UP,onUp);
    
    function onClick(event:MouseEvent):void{
        trace("circle clicked"); 
    }
    function onDown(event:MouseEvent):void{ 
        circle_mc.startDrag();
    }
    function onUp(event:MouseEvent):void{ 
        circle_mc.stopDrag(); 
    }

    3.在drag_include.fla第一帧上输入如下代码: include "drag_include.as" 。测试影片。

    此种方式,在As1.0时经常使用.如果你仍习惯这种方式,在Actionscript 3.0中仍可以使用. 

    (2) 元件类(symbol class) 

    1.在相同目录下创建Symbol_class.as文件与Symbol_class.fla文件。我们将元件功能抽象成类,代码如下:

    View Code
    package { 
        import flash.display.MovieClip; 
        import flash.events.MouseEvent;
        public class Symbol_class extends MovieClip { 
            public function Symbol_class(){
                this.buttonMode = true;
                this.addEventListener(MouseEvent.CLICK,onClick);
                this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
                this.addEventListener(MouseEvent.MOUSE_UP,onUp);
            } 
            
            private function onClick(event:MouseEvent):void{
                trace("circle clicked"); 
            } 
    
            private function onDown(event:MouseEvent):void{this.startDrag(); 
            }
    
            private function onUp(event:MouseEvent):void{this.stopDrag(); 
            } 
        }
    }

    2.打开库面板,Circle_MC属性中,Export for Actionscript.在class处输入Symbol_class,让类与元件相关连。测试影片。

    注意场景中仍要保证circle_mc的存在。因为在代码中我们并没有动态的贴加circle_mc。

    同时这个例子与上例一样,我们并没有使用As3.0的Document Class特性。 

    (3) 动态类(dynamic class) 

      一般复杂程序是由主类和多个辅助类组成的。辅助类封装分割开的功能,主类用来显示和集成各部分功能。例如创建了封装了拖动功能的类后,我们创建一个主类,用来显示这100个具有拖动功能的小球。我们将使用As3.0的DocumnetClass 新特性。如下:

    View Code
    package { 
        
        import flash.display.MovieClip; 
        
        public class DocumentClass extends MovieClip {
            
            private var _circle:Drag_circle; 
            private var _wslink:wslink; 
            private const maxBalls:int = 100; 
            
            public function DocumentClass(){
                var i:int; 
                for(i=0;i<=maxBalls; i++){ 
                    _circle = new Drag_circle(); 
                    _circle.scaleY = _circle.scaleX = Math.random(); 
                    _circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width)); 
                    _circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height));
                    
                    addChild(_circle); 
                } 
            } 
        } 
    }
    View Code
    package {
        import flash.display.Sprite; 
        import flash.events.MouseEvent; 
        public class Drag_circle extends Sprite { 
            public function Drag_circle(){
                this.buttonMode = true; 
                this.addEventListener(MouseEvent.CLICK,onClick); 
                this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
                this.addEventListener(MouseEvent.MOUSE_UP,onUp); 
            } 
            
            private function onClick(event:MouseEvent):void{
                trace("circle clicked"); 
            }
            
            private function onDown(event:MouseEvent):void{ 
                this.startDrag(); 
            } 
            
            private function onUp(event:MouseEvent):void{
                this.stopDrag();
            }
        }
    }

    1.创建drag_class.fla文件,与Document.as和Drag_class.as类所在目录相同。

    2.打开库面板,选中库面板中的小球,选择链接到Drag_class。

    3.在DocumentClass.fla中的主场景中,在属性面板中的Document Class输入框中输入我们的主类名DocumentClass。测试影片。

    注意与上面的元件类不同在于,我们不需要让场景中有任何内容。 

    (4) 不使用库元件的动态类(dynamic class with no library) 

      如能熟练的应用Drawing Api绘制出你想要的任意图形,那么也可以不使用库元件,可以直接在类中编写。举例如下:

    1.先删去上例fla中场景中的所有内容,包括库中的内容。

    2.编辑代码DocumentClass.as和 Drag_circle.as,测试影片。

    View Code
    package {
        import flash.display.MovieClip; 
        public class DocumentClass extends MovieClip {
            private var _circle:Drag_circle;
            private const maxBalls:int = 100; 
            
            public function DocumentClass(){
                var i:int; 
                for(i=0;i<=maxBalls; i){
                    _circle = new Drag_circle(); 
                    _circle.scaleY = _circle.scaleX = Math.random();
                    _circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width));
                    _circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height)); 
                    addChild(_circle); 
                } 
            }
        } 
    }
    View Code
    package { 
        import flash.display.Sprite;
        import flash.display.Shape; 
        import flash.events.MouseEvent; 
        
        public class Drag_circle extends Sprite { 
            private var _circle:Sprite;
            
            public function Drag_circle(){ 
                _circle = new Sprite();
                _circle.graphics.beginFill(0xff0000); 
                _circle.graphics.drawCircle(-5, -5, 10);
                _circle.graphics.endFill(); 
                _circle.buttonMode =true; 
                addChild(_circle);
                _circle.addEventListener(MouseEvent.CLICK,onClick);
                _circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown); 
                _circle.addEventListener(MouseEvent.MOUSE_UP,onUp);
            } 
            
            private function onClick(event:MouseEvent):void{ 
                trace("circle clicked"); 
            }
            
            private function onDown(event:MouseEvent):void{
                _circle.startDrag(); }
            private function onUp(event:MouseEvent):void{ _circle.stopDrag(); 
            } 
        } 
    }

      一般一个as文件中就一个类,但是在AS3中允许在一个文件中定义多个类。 辅助类必须定义在类包以外,并且只针对此文件中的主类和其他辅助类可见。

    它的基本结构如下:

    View Code
    package { 
        class MyClass { 
            function MyClass() { 
                var helper:MyHelper = new MyHelper(); 
            } 
        } 
    } 
    
    class MyHelper {
        function MyHelper() { 
            var helper:HelpersHelper = new HelpersHelper(); 
        } 
    }

    我们将下面的代码都写在一个DocumentClass.as的文件中,然后在fla文件中的属性面板中的Document Class输入框中输入DocumentClass类名。

    View Code
    package { 
        import flash.display.MovieClip;
        import flash.display.Sprite; 
        import flash.events.MouseEvent; 
        
        public class DocumentClass extends MovieClip {
            private var _circle:Drag_circle;
            private const maxBalls:int = 100; 
            
            public function DocumentClass(){ 
                var i:int; 
                for(i=0;i<=maxBalls; i++){
                    _circle = new Drag_circle(); 
                    _circle.scaleY = _circle.scaleX = Math.random();
                    _circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width)); 
                    _circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height));
                    addChild(_circle); 
                } 
            } 
        }
    }
    
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    
    class Drag_circle extends Sprite {
        private var _circle:Sprite;
        
        public function Drag_circle(){
            _circle = new Sprite(); 
            _circle.graphics.beginFill(0x6D6E71);
            _circle.graphics.drawCircle(-5, -5, 10); 
            _circle.graphics.endFill(); addChild(_circle);
            this.buttonMode = true;
            _circle.addEventListener(MouseEvent.CLICK,onClick);
            _circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
            _circle.addEventListener(MouseEvent.MOUSE_UP,onUp); 
        } 
        
        private function onClick(event:MouseEvent):void{ 
            trace("circle clicked"); 
        } 
        
        private function onDown(event:MouseEvent):void{ 
            _circle.startDrag(); 
        } 
        
        private function onUp(event:MouseEvent):void{ 
            _circle.stopDrag(); 
        }
    } 

     现在就可以测试影片了。

  • 相关阅读:
    linux系统之tr命令
    Tmux会话-基本操作及原理
    [题解] P1552 [APIO2012]派遣
    数论学习笔记
    Splay 学习笔记
    SpringCloud---入门篇(1)
    获小黄杉有感
    2020湖湘杯-CRYPTO-简单的密码3 WriteUp (CBC字节翻转)
    ECC椭圆曲线加密算法—加解密(SageMath实现)
    栅栏密码&W型栅栏密码-加解密(python实现)
  • 原文地址:https://www.cnblogs.com/jinc/p/2381261.html
Copyright © 2020-2023  润新知