zoukankan      html  css  js  c++  java
  • Flash/Flex学习笔记(3):动态添加组件

    Flash中一个fla文件可以关联到一个as文件,这个有点类似于asp.net中的code behind.

    可参考以下图操作:

    注:
    1.as文件的类名与文件名要求一样,并且默认情况下必须与fla处于同一目录。
    2.所有as文件必须继承自flash.display.Sprite

    下面这个是一个示例文件代码:

    package {

     
    import flash.display.Sprite;

     
    import fl.controls.Label;

     
    import fl.controls.Button;  

     
    import fl.controls.List;

     
    import flash.text.TextFieldAutoSize;

     
    import flash.events.MouseEvent;

     
    import fl.data.DataProvider;

      
    public class AddControlCode extends Sprite {

     
    public function AddControlCode() {

     
    //加一个label  
    var _label:Label = new Label();


    _label.text="来来,我是一个Label";

     
    _label.width=150;


    _label.autoSize=TextFieldAutoSize.CENTER;

     
    _label.addEventListener(MouseEvent.CLICK,function(){trace(_label.text = "文本被点击了")}); //象不象c#中的匿名函数?


    this.addChild(_label);

    //加一个Button

    var _btn:Button = new Button();

    _btn.label="来来,我是一个Button";

    _btn.width=150;

    this.addChild(_btn);

    //获取舞台尺寸

    var w:int=stage.stageWidth;

    var h:int=stage.stageHeight;

     
    trace("宽度:" + w + ",高度:" + h);

     
    //将Label与Button移动到水平中心点

     
    _label.move((w-_label.width)/2,10);

    _btn.move((w-_btn.width)/2,50);

    _btn.addEventListener(MouseEvent.CLICK,btnClick);//给Button添加点击事件

    //添加一个List控件

     
    var _lst:List = new List();

    var dp:Array = new Array();

     
    var i:uint;

    var count:uint = _lst.rowCount * 2;

    for(i=0;i<count;i++){

    dp.push({label:"元素" + i});

    }

    _lst.allowMultipleSelection = true;//允许多选

    _lst.dataProvider = new DataProvider(dp);//绑定数据源

    this.addChild(_lst);

    }

    //鼠标点击处理函数

    function btnClick(e:MouseEvent) {

    trace("你点了我一下,这是证据:" + e);

    }

    }

    }

    默认情况下,如果您运行这段代码会发现根本没办法编译通过,通常会提示: 未发现fl.controls.Label之类,解决办法:

    先在设计视图中,拖一个Label控件到舞台上,然后再删除就行了,其它组件类似处理

    个人猜测:就好比Winform中,我们引用某命名空间时,通常光using ...后,还需要添加对某程序集的引用,类似的:fla默认可能没有添加fl.controls.Label的"程序集"引用,哪怕你在代码中import过了,但是运行时仍然找不到这个包,而手动拖一个到舞台上后,强迫flash自动添加了相关引用

    最后一个问题:如果组件不全是动态添加的,比如在设计视图下直接把一个Label拖动舞台上,在对应的as文件中如何引用呢?

    其实也很简单,只要在设计视图中给组件指定一个实例名(比如lbl123),然后就能在as文件中直接用lbl123.text = "..."来使用了

    运行截图:

  • 相关阅读:
    史上最详细 github 使用教程(英文烂的血泪史)
    如何解决跨域问题
    KSImageNamed 安装
    VVDocumenter插件安装
    通过appearance设置app主题
    UITableViewCell注册情况
    iOS9.2 xcode 7.1.1真机测试
    UIAlertController iOS9
    Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead
    GIT
  • 原文地址:https://www.cnblogs.com/happysky97/p/1884469.html
Copyright © 2011-2022 走看看