zoukankan      html  css  js  c++  java
  • Flash/Flex学习笔记(33):如何用As3协同Flash CS IDE控制MovieClip实例

    AS3历经若干年的成长,已经完全进化为一门面向对象的(动态)语言,但很多介绍AS3的书籍上往往只注意了AS3语言本身,而淡化了如何跟Flash IDE协同开发。

    1.如何在Flash时间轴代码上创建一个外部as文件中定义的MovieClip实例?

    假设外部有一个MyClip.as文件,内容如下:

    view source

    print?

    1
    package {

    2
    import flash.display.MovieClip;

    3

    4
    public class MyClip extends MovieClip {

    5
    public function MyClip():void{

    6
    trace("MyClip constructor is called");

    7
    }

    8
    }

    9
    }

    新建一个fla文件(注意:要与MyClip.as处于同一目录),然后在时间轴的代码中就可以这样使用了:

    view source

    print?

    1
    var clip1:MyClip = new MyClip();

    Ctrl + 回车 测试影片,将会在输出窗口看到:MyClip constructor is called

    但这样可能有人会郁闷了:这样的话,所有东东都要纯AS代码来控制,那还要Flash CS干啥?不如直接用记事本写,然后编译下完事,这样根本体现不出Flash IDE实时设计的强大。--往下看

    2.如何用代码从库里取出一个用Flash设计好的MovieClip实例?

    上图是在Flash CS4中创建一个Symbol时的界面,注意高亮部分,我们可以在创建时指定类名以及父类,这样该Symbol就可以用代码引用了,我们可以利用Flash的强大设计功能先弄好布局,放置一些控件,比如动态文本,然后在代码中使用(注:下面代码中的txtMsg是MyClip2上放置的一个动态文本)

    view source

    print?

    1
    var clip:MyClip2 = new MyClip2();

    2
    clip.txtMsg.text = "Hello World!";

    3
    clip.x = 0;

    4
    clip.y = 0;

    5
    clip.width = stage.stageWidth;

    6
    addChild(clip);

    3.把上面二种情况结合起来

    即:如果我们先在Flash Cs4中创建一个MovieClip类型的Symbol(同时参照2中的方法指定了类名MyClip3);然后再到同级目录下新建一个MyClip3.as文件,这二者能结合在一起用么?

    MyClip3.as文件内容如下:

    view source

    print?

    01
    package {

    02
    import flash.display.MovieClip;

    03

    04
    public class MyClip3 extends MovieClip {

    05

    06
    public function MyClip3():void{

    07
    trace("MyClip3's constuctor is called.");

    08

    09
    txtMsg.text = "MyClip3's constuctor is called.";//引用Flash CS设计时放置在MyClip3元件上的动态文件txtMsg

    10
    }

    11

    12
    //将txtMsg.text封装成属性Msg

    13
    public function set Msg(v:String):void{

    14
    trace("Msg setter is called");

    15
    txtMsg.text = v;            

    16
    }

    17

    18

    19
    public function get Msg():String{

    20
    trace("Msg getter is called");

    21
    return txtMsg.text;     

    22
    }

    23

    24
    }

    25
    }

    主场景中的时间轴代码可以这么用:

    view source

    print?

    1
    var clip:MyClip3 = new MyClip3();

    2
    clip.txtMsg.text = "Hello World!";

    3
    trace(clip.Msg);

    4
    clip.Msg = "Hi";

    5
    clip.x = 0;

    6
    clip.y = 0;

    7
    clip.width = stage.stageWidth;

    8
    addChild(clip);

    运行后输出窗口内容如下:

    MyClip3's constuctor is called.
    Msg getter is called
    Hello World!
    Msg setter is called

  • 相关阅读:
    BZOJ 1024: [SCOI2009]生日快乐
    BZOJ 3038: 上帝造题的七分钟2
    BZOJ 2005: [Noi2010]能量采集
    费用流&网络流模版
    BZOJ 1070: [SCOI2007]修车
    BZOJ 3039: 玉蟾宫
    BZOJ 1022: [SHOI2008]小约翰的游戏John
    BZOJ 2456: mode
    BZOJ 1015: [JSOI2008]星球大战starwar
    Unity实现IOS原生分享
  • 原文地址:https://www.cnblogs.com/happysky97/p/1884562.html
Copyright © 2011-2022 走看看