`

[新闻资讯] [业界动态] 一个轻量级的强大的组件库--as移动开发者

阅读更多
资讯类型: 翻译
来源页面: http://madskool.wordpress.com/2011/05/11/using-madcomponents-with-minimalcomps-or-flobile-libraries/
资讯原标题: Using MadComponents with MinimalComps or Flobile libraries
资讯原作者: Daniel Freeman
翻译词数: 300 词
我的评论:MadComponents 功能比较强大,方便使用。
对这篇文你有啥看法,跟贴说说吧!欢迎口水和板砖,哈哈。欢迎大家和我们一同分享更多资讯。
在最近的MadComponent(0.3)更新中,添加了 divided list,search bar,activity indicator以及 navigation bar。
在这下载最新版本的源码还有文档。
http://code.google.com/p/mad-components/downloads/list
Flex(Flash Builder)在这用svn库这获得一些例子。http://code.google.com/p/mad-components/source/checkout
Flash用户可以按照下面的教程来使用MadComponents做一些移动设备上的应用。
http://madskool.wordpress.com/2011/04/24/getting-started-with-madcomponents-in-flash/

MadComponents并不是as移动开发者的唯一选择。它相对来说比较新,除它之外还有Keith Peter’s 的MinimalComps
http://www.minimalcomps.com/,Derek Grigg’s的 skinning libraryhttp://dgrigg.com/blog/2010/04/28/Alpha-Release-of-Skinnable-Minimal-Components/还有Todd Anderson’s 的as3Flobilehttp://custardbelly.com/blog/?p=173。这几个都比较受用。(但这些组件主要还是用于桌面应用而不是移动开发)。

但是如果你要是用Madcomponents的话,你就觉得真是爽呆了。因为在用Madcomponents时能够用其他的组件库里的组件来布局。
这个是拿Minimal comp与derek Grigg`s的组件扩举的例子。
package {
        import com.bit101.components.*;
        import com.dgrigg.skins.*;
        import com.danielfreeman.madcomponents.*;

        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;

        public class MadDemo extends Sprite {

                protected static const LAYOUT:XML = <vertical xmlns:minimal="com.bit101.components">
                                                        <minimal:PushButton label="push me" alignH="fill" height="32" skinClass="com.dgrigg.skins::ButtonImageSkin"/>
                                                </vertical>;

                protected static const USES:Array = [PushButton,ButtonImageSkin,Knob];

                public function MadDemo() {
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;

                        UI.create(this, LAYOUT);
                }
        }
}


注意USES这个变量,我不清楚为什么如果这个组件没有被引用,你就需要在一个空语句中引用它。 可能这是Flash Builder的bug?
举另一个例子。用Flobile的picker组件。
package {
        import com.custardbelly.as3flobile.controls.label.Label;
        import com.custardbelly.as3flobile.controls.picker.Picker;
        import com.custardbelly.as3flobile.controls.picker.PickerColumn;
        import com.danielfreeman.madcomponents.*;

        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.text.engine.ElementFormat;
        import flash.utils.getQualifiedClassName;

        public class MadPickerUI extends Sprite {

                protected static const LAYOUT:XML = <vertical xmlns:flobile="com.custardbelly.as3flobile.controls.picker">
                                                        <flobile:Picker id="picker" itemHeight="50" alignH="fill"/>
                                                        <image />
                                                        <label id="day"/>
                                                        <label id="month"/>
                                                        <label id="year"/>
                                                </vertical>;

                protected var _picker:Picker;
                protected var _day:UILabel;
                protected var _month:UILabel;
                protected var _year:UILabel;

                public function MadPickerUI() {
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;

                        UI.create(this, LAYOUT);

                        _day = UILabel(UI.findViewById("day"));
                        _month = UILabel(UI.findViewById("month"));
                        _year = UILabel(UI.findViewById("year"));

                        var dataProvider:Vector.<PickerColumn> = new Vector.<PickerColumn>();
                        dataProvider.push( getPickerColumnMonths() );
                        dataProvider.push( getPickerColumnDays( 50 ) );
                        dataProvider.push( getPickerColumnYears( 80 ) );

                        _picker = Picker(UI.findViewById("picker"));
                        _picker.selectionChange.add( pickerSelectionDidChange );
                        _picker.dataProvider = dataProvider;
                }

                protected function getPickerColumnDays( width:Number = Number.NaN ):PickerColumn {
                        var column:PickerColumn = new PickerColumn(); //null, getQualifiedClassName(CustomPickerColumnItemRenderer));
                        for( var i:int = 0; i < 31; i++ ) {
                                column.data.push( {label:( i + 1 ).toString()} );
                        }
                        column.width = width;
                        return column;
                }

                protected function getPickerColumnMonths( width:Number = Number.NaN ):PickerColumn {
                        var column:PickerColumn = new PickerColumn(); //null, getQualifiedClassName(CustomPickerColumnItemRenderer));
                        column.data = [{label:"January"}, {label:"February"}, {label:"March"}, {label:"April"}, {label:"May"}, {label:"June"}, {label:"July"},
                                {label:"August"}, {label:"September"}, {label:"October"}, {label:"November"}, {label:"December"}];
                        column.width = width;
                        return column;
                }

                protected function getPickerColumnYears( width:Number = Number.NaN ):PickerColumn {
                        var column:PickerColumn = new PickerColumn(); //null, getQualifiedClassName(CustomPickerColumnItemRenderer));
                        var i:int = 50;
                        while( --i > -1 ) {
                                column.data.push( {label:(1973 + i).toString()} );
                        }
                        column.width = width;
                        return column;
                }

                protected function pickerSelectionDidChange( column:PickerColumn, index:int ):void {
                        var columnIndex:int = _picker.dataProvider.indexOf( column );
                        if (columnIndex==0) {
                                _day.text = column.data[index].label;
                        }
                        else if (columnIndex==1) {
                                _month.text = column.data[index].label;
                        }
                        else {
                                _year.text = column.data[index].label;
                        }
                }
        }
}

分享到:
评论

相关推荐

    轻量级C++实现的httpserver和httpclient

    总的来说,"轻量级C++实现的httpserver和httpclient"是一个很好的学习资源,它展示了如何利用mongoose库在C++项目中快速实现HTTP服务功能,为开发者提供了更灵活的选择。无论是为了学习还是实际项目开发,这都是一个...

    一种轻量级嵌入式GUI设计与源代码

    总结来说,轻量级嵌入式GUI设计是一种平衡资源限制与功能需求的技术,其设计文档和源代码为开发者提供了宝贵的参考资料。通过深入学习和实践,我们可以更好地理解和应用这一技术,推动嵌入式系统的人机交互体验向前...

    Android 4.0 组件库 for Axure

    总的来说,"Android 4.0 组件库 for Axure"是一个强大的设计资源,它为Android应用的原型设计提供了丰富的组件选择,使得设计师能够更加专注于创新和优化用户体验,而不是基础组件的搭建。通过熟练运用这个组件库,...

    json-c 一个用于c语言的json解析库,很强大

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于网络通信及数据存储。它易于人阅读和编写,同时也易于机器解析和生成。在C语言环境中,由于其原生不支持JSON,因此需要借助第三方库来...

    Axure自定义组件库精华集合包

    "Axure自定义组件库精华集合包"是一个专门针对Axure用户的资源包,它包含了一系列预先设计好的组件,涵盖了日常设计中常见的各种元素。这些组件包括但不限于: 1. **日历**:日历组件在很多应用场景中都很常见,...

    最新实用Axure手机组件库大全(Iphone5及Android)

    总之,"最新实用Axure手机组件库大全(Iphone5及Android)"是一个强大的设计资源,它涵盖了移动设备设计的基本元素,能帮助设计师高效、准确地完成原型设计工作,无论是对于个人还是团队,都能显著提升工作效率,...

    微信小程序 ---- 组件应用和实际开发的DEMO

    微信小程序是一种轻量级的应用开发平台,主要针对移动端,由腾讯公司推出,旨在提供便捷的、无需下载安装即可使用的线上服务。本主题聚焦于微信小程序的组件应用与实际开发,通过一系列DEMO来深入理解其核心功能和...

    jboss-as-7.1.0.Final.zip

    每个模块都包含了一组相关的类和资源,通过依赖管理确保了组件间的隔离,提高了系统的稳定性和可维护性。 2. **嵌入式模式**:新版本支持嵌入式运行模式,这意味着开发者可以直接在自己的应用中启动和控制JBoss AS...

    易语言支持库大全(完整版)

    通过这些支持库,易语言的开发者可以获得更广泛的功能和更高的编程灵活性,从而能构建出功能强大、界面友好的应用程序。每个库都有其特定的使用场景和优势,合理选择和使用这些库,能够显著提高开发效率和程序质量。

    Android项目源码完整新闻类资讯客户端

    【Android项目源码完整新闻类资讯客户端】是一个针对Android平台的新闻阅读应用的源代码实现,旨在提供一个全面的新闻资讯获取平台。这个项目对于开发者,尤其是初学者或需要进行二次开发的人员来说,是一个非常有...

    uniapp使用uview组件实现省市区三级联动

    在本文中,我们将深入探讨如何在uni-app框架中利用uView UI组件库来实现省市区三级联动的效果。uni-app是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,即可在iOS、Android、H5、小程序等多个平台运行。...

    使用pyqt5实现的Python-GUI动态作图例子

    PyQT5是一个强大的工具库,它提供了丰富的功能来创建美观且功能强大的GUI应用。在这个例子中,我们将深入探讨如何利用PyQT5结合PyQtGraph和Matplotlib库,实现动态图形的展示。 首先,PyQT5是Python中的一个跨平台...

    SOUI界面库生成的EXE

    SOUI是一个轻量级且高效的Windows界面库,它采用了DirectUI技术,使得开发者能够更方便地构建美观、响应迅速的窗口应用程序。 SOUI库的核心在于其对DirectUI的实现。DirectUI是一种用户界面框架,它允许开发者直接...

    Android图片裁剪----移动、缩放图片进行裁剪

    通过查看和学习这个项目的代码,开发者可以更好地理解如何在Android中实现图片的移动、缩放和裁剪功能。 总之,Android图片裁剪涉及多个方面,包括图像处理、手势识别和UI交互。通过掌握这些技术,开发者能够创建...

    drools 5.0完整组件打包压缩文档 drools-5.0-bin.zip

    这个压缩包“drools-5.0-bin.zip”包含了Drools 5.0版本的所有核心组件和必要的库,使得开发者能够方便地集成和使用Drools进行规则驱动的系统开发。 1. **drools-core-5.0.1.jar**: 这是Drools的核心模块,提供了...

    STM32F4系列完整固件库

    2. **LL库**(Low-Layer库):这是一个轻量级的库,提供了更接近硬件级别的低层次函数。对于需要更高性能或更低功耗的应用,可以直接使用LL库来优化代码。 3. **BSP库**(Board Support Package):这个库包含了...

    EhLib-8.1-Build-8.1.022-Full-Source-D7-XE10.1-&amp;-Lazarus.zip

    EhLib是一个强大的数据库组件库,专为Delphi和C++Builder开发者设计,适用于各种版本,包括D7(Delphi 7)直到XE10.1。这个压缩包"EhLib-8.1-Build-8.1.022-Full-Source-D7-XE10.1-&-Lazarus.zip"包含了EhLib的8.1....

    微信小程序组件DEMO及案例

    微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要应用于移动端,为用户提供便捷的服务体验。它基于JavaScript、WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets)三种核心技术构建,允许...

    jquery-2.1.4.js

    3. **jquery-easyui-1.4.3.zip**:EasyUI是基于jQuery的一个轻量级的前端框架,提供了丰富的UI组件,如数据网格,对话框,菜单等,简化了页面构建。 4. **jquery-1.11.3.js**:这是另一个jQuery版本,1.11.3,可能与...

    easygui一个python简单的gui库

    EasyGUI是Python编程语言中的一款轻量级图形用户界面(GUI)库,它以其简洁的API和易于上手的特点而受到初学者和快速原型开发者的欢迎。标题中的“easygui一个python简单的gui库”指的就是这个库,它允许开发者用...

Global site tag (gtag.js) - Google Analytics