- 积分
- 136115
- 注册时间
- 2014-12-27
- 最后登录
- 2024-3-20
- 在线时间
- 602 小时
- 威望
- 562
- 贡献
- 29
- 金币
- 52619
- 钢镚
- 1422
- 交易凭证
- 1
- 分享
- 0
- 精华
- 33
- 帖子
- 2094
- 主题
- 1742
TA的每日心情 | 擦汗 2018-4-10 15:18 |
---|
签到天数: 447 天 [LV.9]以坛为家II
超级版主
- 威望
- 562
- 贡献
- 29
- 金币
- 52619
- 钢镚
- 1422
|
StormUI组件库是一套纯as3.0编写的轻量级游戏UI组件框架,它的体积很小;
可以通过简答的调用,灵活的参数配置,简单的皮肤指定
来轻松完成组件功能,而且您不必担心性能带来的问题;
您还可以单出拿出其中的一个组件直接使用,而不必引入整个完整UI库,使用更加具有自主性;
要实现自定义的皮肤类只需继承对应组件的Skin类,然后重写skinList函数即可;
在xml中写入与fla文件中一致的元件类链接名就可以了。
使用的前提是在fla中加载完所有的皮肤即可;
现在初级版本已基本完成,从开始构思到现在断断续续的写了近半年的时间,由于公司也比较忙,
有些代码写的也有些2,也欢迎指正\(^o^)/~
有任何问题欢迎入群交流: 238680860
写了个例子,由于很多fla中的组件素材都是临时拼凑看起来很丑,在此就不截图了呵呵:
以后打算会加上类似Flex中的DataGrid、Tree组件等。
目前已经初步写好的UI组件有:
Alert
Button
CheckBox
ComboBox
Container(方便滚动条添加)
Image
List(自动支持滚动条)
Paging(分页组件)
Panel
ProgressBar(参数配置方向)
radioButton
HSlider
VSlider
TabButton(互斥按钮组件)
TextArea(自动滚动条)
TileList
代码可以直接在fb中运行。
这个是基本测试类入口:
StormUI.as
- package
- {
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.events.TextEvent;
- import net.libra.ui.stormUI.components.alert.Alert;
- import net.libra.ui.stormUI.components.button.Button;
- import net.libra.ui.stormUI.components.checkBox.CheckBox;
- import net.libra.ui.stormUI.components.checkBox.CheckBoxEvent;
- import net.libra.ui.stormUI.components.comboBox.ComboBox;
- import net.libra.ui.stormUI.components.list.List;
- import net.libra.ui.stormUI.components.list.ListEvent;
- import net.libra.ui.stormUI.components.paging.Paging;
- import net.libra.ui.stormUI.components.paging.PagingEvent;
- import net.libra.ui.stormUI.components.panel.Panel;
- import net.libra.ui.stormUI.components.progressBar.ProgressBar;
- import net.libra.ui.stormUI.components.radioButton.RadioButton;
- import net.libra.ui.stormUI.components.radioButton.RadioButtonEvent;
- import net.libra.ui.stormUI.components.slider.HSlider;
- import net.libra.ui.stormUI.components.slider.SLiderEvent;
- import net.libra.ui.stormUI.components.slider.VSlider;
- import net.libra.ui.stormUI.components.tabButton.TabButton;
- import net.libra.ui.stormUI.components.tabButton.TabButtonEvent;
- import net.libra.ui.stormUI.components.textArea.TextArea;
- import net.libra.ui.stormUI.components.tileList.TileList;
- import net.libra.ui.stormUI.utils.load.StormUILoader;
- import renders.MyListItemRender;
- import renders.MyPagingItemRender;
- import renders.MyTileListItemRender;
- import skins.MyAlertSkin;
- import skins.MyButtonSkin;
- import skins.MyCheckBoxSkin;
- import skins.MyComboBoxSkin;
- import skins.MyHSliderSkin;
- import skins.MyListSkin;
- import skins.MyPagingSkin;
- import skins.MyPanelSkin;
- import skins.MyProgressBarSkin;
- import skins.MyRadioButtonSkin;
- import skins.MyTabButtonSkin;
- import skins.MyTextAreaSkin;
- import skins.MyTileListSkin;
- import skins.MyVSliderSkin;
- /**
- * StormUI组件库
- * @author xuechong
- * @version v20121025.0.6.1
- * @date 2012.10.22
- * */
- [SWF(width="800", height="600")]
- public class StormUI extends Sprite
- {
- private var _btn:Button;
- private var _checkBox:CheckBox;
- private var _radioButton:RadioButton;
- private var _p:Panel;
- private var _bar:ProgressBar;
- private var _tabButton:TabButton;
- private var _hSlider:HSlider;
- private var _vSlider:VSlider;
- private var _ta:TextArea;
- private var _list:List;
- private var _tileList:TileList;
- private var _comboBox:ComboBox;
- private var _paging:Paging;
- public function StormUI()
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- StormUILoader.startLoader(["stormUISkin.swf"], startTest);
- }
- private function startTest(event:Event):void
- {
- _btn = new Button(200, 0, 60, 22);
- _btn.label = "测试";
- _btn.enabled = true;
- _btn.setSkin(MyButtonSkin, 0);
- _btn.addEventListener(MouseEvent.CLICK, onDestroyHandler);
- this.addChild(_btn);
- //alertFunc(); //ok
- //buttonFunc();
- //checkBoxFunc(); //ok
- //comboBoxFunc(); //ok(skinOk)
- //listFunc(); //ok(skinOk)-container
- //pagingFunc(); //ok(skinOk)
- //panelFunc(); //ok(skinOk)
- //progressBarFunc(); //ok(skinOk)
- //radioButtonFunc(); //ok
- //sliderFunc(); //ok(skinOk)
- //tabButtonFunc(); //ok(skinOk)
- //textAreaFunc(); //ok(skinOk)
- //tileListFunc(); //ok(skinOk)
- }
- private function alertFunc():void
- {
- var spr:Sprite = new Sprite();
- this.addChild(spr);
- Alert.registerParent(spr);
- Alert.show(MyAlertSkin, 0, "SS", [a, b, c], false);
- function a(obj:Object):void
- {
- trace("aaa", obj);
- }
- function b(obj:Object):void
- {
- trace("bbb", obj);
- }
- function c(obj:Object):void
- {
- trace("ccc", obj);
- }
- }
- private function buttonFunc():void
- {
- var btn:Button = new Button(50, 50, 60, 22);
- btn.label = "皮肤";
- btn.enabled = true;
- btn.setSkin(MyButtonSkin, 0);
- this.addChild(btn);
- }
- private function checkBoxFunc():void
- {
- _checkBox = new CheckBox(50, 50, 20, 20);
- _checkBox.setSkin(MyCheckBoxSkin, 0);
- _checkBox.layout(1, 20, 20);
- _checkBox.labels = ["aa", "bb"];
- _checkBox.addEventListener(CheckBoxEvent.CHECKBOX_SELECTED, onCheckBoxChangeHandler);
- this.addChild(_checkBox);
- }
- private function comboBoxFunc():void
- {
- var arr:Array = [];
- for(var i:int = 0; i < 80; i++)
- {
- var obj:Object = new Object();
- obj.a = "a" + i;
- obj.b = "b" + i;
- obj.c = "c" + i;
- arr.push(obj);
- }
- _comboBox = new ComboBox(0, 0, 150, 100);
- _comboBox.itemRender = MyListItemRender;
- _comboBox.setSkin(MyComboBoxSkin, 0);
- _comboBox.seletedIndex = 3;
- _comboBox.itemHeight = 25;
- _comboBox.itemAmount = 5;
- _comboBox.scrollBarBold = 15;
- _comboBox.dataProvider = arr;
- this.addChild(_comboBox);
- _comboBox.open();
- }
- private function listFunc():void
- {
- var arr:Array = [];
- for(var j:int = 0; j < 20; j++)
- {
- var obj:Object = new Object();
- obj.a = "AAA" + j;
- obj.b = "BBB" + j;
- obj.c = "CCC" + j;
- arr.push(obj);
- }
- _list = new List(100, 50, 100, 200);
- _list.addEventListener(ListEvent.ITEM_OVER, onItemOverHandler);
- //_list.addEventListener(ListEvent.ITEM_OUT, onItemOutHandler);
- //_list.addEventListener(ListEvent.ITEM_CLICK, onItemClickHandler);
- _list.itemRender = MyListItemRender;
- _list.setSkin(MyListSkin, 0);
- _list.scrollBarV = true;
- _list.scrollBarBold = 15;
- _list.dataProvider = arr;
- _list.selectedIndex = 3;
- this.addChild(_list);
- }
- private function pagingFunc():void
- {
- _paging = new Paging(50, 50);
- _paging.itemRender = MyPagingItemRender;
- _paging.addEventListener(PagingEvent.CLICK, selectChangeHandler);
- //p.conRegister(null, upBtn, downBtn, null, null);
- _paging.setLayout(6, 1, 20);
- //p.autoSeleted = true;
- _paging.setSkin(MyPagingSkin, 0);
- this.addChild(_paging);
- var arr:Array = [];
- for(var i:int = 0; i < 100; i++)
- {
- arr.push({a:"AB" + i});
- }
- _paging.dataProvider = arr;
- }
- private function panelFunc():void
- {
- _p = new Panel();
- _p.x = 200;
- _p.y = 50;
- _p.width = 400;
- _p.height = 300;
- _p.cutw = 12;
- _p.cuth = 10;
- _p.contentOffsetX = 6;
- _p.contentOffsetY = -1;
- _p.drag = true;
- _p.openCenter = true;
- _p.setSkin(MyPanelSkin, 0);
- this.addChild(_p);
- }
- private function progressBarFunc():void
- {
- _bar = new ProgressBar(65, 8, 15, 55, 6, 50, ProgressBar.VERTICAL, ProgressBar.BOTTOM);
- _bar.setSkin(MyProgressBarSkin, 0);
- _bar.loaded = 30;
- _bar.total = 60;
- _bar.commit();
- this.addChild(_bar);
- }
- private function radioButtonFunc():void
- {
- _radioButton = new RadioButton(50, 50);
- _radioButton.addEventListener(RadioButtonEvent.SELECTED, onSelectedHandler);
- _radioButton.setSkin(MyRadioButtonSkin, 0);
- _radioButton.layout(3, 20, 20);
- _radioButton.selectedIndex = 3;
- _radioButton.labels = ["离别的车站AA", "离别的车站BB", "离别的车站CC", "离别的车站DD"];
- this.addChild(_radioButton);
- }
- private function sliderFunc():void
- {
- _hSlider = new HSlider(100, 50, 500, 10);
- _hSlider.addEventListener(SLiderEvent.SLIDER_CHANGE, onHSliderChangeHandler);
- _hSlider.stepSize = 1;
- _hSlider.showLabels = true;
- _hSlider.showTicks = true;
- _hSlider.showTips = true;
- _hSlider.min = 190;
- _hSlider.max = 200;
- _hSlider.text = 100;
- _hSlider.setSkin(MyHSliderSkin, 0);
- _hSlider.commit();
- this.addChild(_hSlider);
- _vSlider = new VSlider(100, 50, 10, 500);
- _vSlider.addEventListener(SLiderEvent.SLIDER_CHANGE, onVSliderChangeHandler);
- _vSlider.stepSize = 1;
- _vSlider.showLabels = true;
- _vSlider.showTicks = true;
- _vSlider.showTips = true;
- _vSlider.min = 190;
- _vSlider.max = 200;
- _vSlider.text = 100;
- _vSlider.setSkin(MyVSliderSkin, 0);
- _vSlider.commit();
- this.addChild(_vSlider);
- }
- private function tabButtonFunc():void
- {
- _tabButton = new TabButton(60, 0);
- _tabButton.layout(1, 1, -40);
- _tabButton.seletedIndex = 0;
- _tabButton.setSkin(MyTabButtonSkin, 0);
- _tabButton.addEventListener(TabButtonEvent.SELECTED, onTabClickHandler, false, 0, true);
- this.addChild(_tabButton);
- }
- private function textAreaFunc():void
- {
- _ta = new TextArea(100, 100, 200, 200, true, true);
- _ta.setSkin(MyTextAreaSkin, 0);
- _ta.addEventListener(TextEvent.LINK, onTextLinkHandler);
- for(var i:int = 0; i < 50; i++)
- {
- _ta.htmlText += "<font color='#00FFFF'><a href='event:"+ i +"'>查看战报" + i + "</a></font>\n";
- }
- this.addChild(_ta);
- }
- private function tileListFunc():void
- {
- var arr:Array = [];
- for(var i:int = 0; i < 20; i++)
- {
- var obj:Object = new Object();
- obj.a = "a" + i;
- obj.b = "b" + i;
- obj.c = "c" + i;
- arr.push(obj);
- }
- _tileList = new TileList(300, 50, 400, 250);
- _tileList.itemRender = MyTileListItemRender;
- _tileList.setSkin(MyTileListSkin, 0);
- _tileList.layout(12);
- _tileList.dataProvider = arr;
- _tileList.seletedIndex = 11;
- this.addChild(_tileList);
- }
- ///////////////////////////////////////
- private function onCheckBoxChangeHandler(event:CheckBoxEvent):void
- {
- trace(_checkBox.checkSelected(event.id));
- }
- private function onSelectedHandler(event:RadioButtonEvent):void
- {
- trace(event.selectedIndex);
- }
- private function onTabClickHandler(event:TabButtonEvent):void
- {
- trace(event.selectedIndex);
- }
- private function onHSliderChangeHandler(event:SLiderEvent):void
- {
- trace(_hSlider.text);
- }
- private function onVSliderChangeHandler(event:SLiderEvent):void
- {
- trace(_vSlider.text);
- }
- private function onTextLinkHandler(event:TextEvent):void
- {
- trace(event.text);
- }
- private function onItemOverHandler(event:ListEvent):void
- {
- trace("移入", event.itemId, event.selectedIndex, event.item, event.data, event.selectType);
- }
- private function selectChangeHandler(event:PagingEvent):void
- {
- if(event.data != null)
- {
- }
- }
- private function onDestroyHandler(event:MouseEvent):void
- {
- _btn.removeEventListener(MouseEvent.CLICK, onDestroyHandler);
- _btn.destroy();
- _btn = null;
- //Alert.destroy();
- //_checkBox.destroy();
- //_checkBox.removeEventListener(CheckBoxEvent.CHECKBOX_SELECTED, onCheckBoxChangeHandler);
- //_checkBox = null;
- //_radioButton.destroy();
- //_radioButton.removeEventListener(RadioButtonEvent.SELECTED, onSelectedHandler);
- //_radioButton = null;
- //_p.destroy();
- //_p = null;
- //_bar.dectroy();
- //_bar = null;
- //_tabButton.removeEventListener(TabButtonEvent.SELECTED, onTabClickHandler);
- //_tabButton.destroy();
- //_tabButton = null;
- //_hSlider.destroy();
- //_hSlider.removeEventListener(SLiderEvent.SLIDER_CHANGE, onHSliderChangeHandler);
- //_hSlider = null;
- //_vSlider.destroy();
- //_vSlider.removeEventListener(SLiderEvent.SLIDER_CHANGE, onVSliderChangeHandler);
- //_vSlider = null;
- //_ta.destroy();
- //_ta.removeEventListener(TextEvent.LINK, onTextLinkHandler);
- //_ta = null;
- //_list.removeEventListener(ListEvent.ITEM_OVER, onItemOverHandler);
- //_list.destroy();
- //_list = null;
- //_tileList.destroy();
- //_tileList = null;
- //_comboBox.destroy();
- //_comboBox = null;
- //_paging.removeEventListener(PagingEvent.CLICK, selectChangeHandler);
- //_paging.destroy();
- //_paging = null;
- }
- }
- }
复制代码
本文来自:http://bbs.9ria.com/thread-156497-1-1.html
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|