自定义事件
{
import flash.events.Event;
public class BasePageChangeEvent extends Event
{
/**
* 当前页
*/
public var currentPage:int;
/**
* 总页数
*/
public var pageCount:int;
public function BasePageChangeEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
自定义组件.mxml
<?xml version="1.0" encoding="utf-8"?>
<components:BasePageClass xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:components="com.mjl.base.components.*">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:HGroup width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
<s:Button id="upPage" toolTip="上一页" enabled="{upPageBL}"
icon="@Embed('../assets/images/previous.png')"
skinClass="com.mjl.base.skins.BaseDateButtonSkin"
click="upPage_clickHandler(event)"/>
<s:ButtonBar id="BB" requireSelection="true" dataProvider="{bbCol}" selectedIndex="{bbSelecIndex}"
change="BB_changeHandler(event)"/>
<s:Button id="downPage" toolTip="下一页" enabled="{downPageBL}"
icon="@Embed('../assets/images/next.png')"
skinClass="com.mjl.base.skins.BaseDateButtonSkin"
click="downPage_clickHandler(event)"/>
</s:HGroup>
</components:BasePageClass>
自定义组件class
package com.mjl.base.components
{
import com.mjl.base.event.BasePageChangeEvent;
import com.mjl.commons.Common;
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import spark.components.Button;
import spark.components.SkinnableContainer;
import spark.events.IndexChangeEvent;
//name是组件中执行函数的通道,相当于Button组件的click事件,只是点击触发些通道,此通道先自己处理一些逻辑
//再(派发时执行)触发函数
[Event(name="pageChange", type="com.mjl.base.event.BasePageChangeEvent")]
[Event(name="nextChange", type="com.mjl.base.event.BasePageChangeEvent")]
[Event(name="preChange", type="com.mjl.base.event.BasePageChangeEvent")]
public class BasePageClass extends SkinnableContainer
{
public function BasePageClass()
{
super();
}
private var _currentPage:int = 1;
private var _pageCount:int;
private var _pageSize:int;
private var _bbCol:ArrayCollection;
private var count:int;
[Bindable]
public var upPageBL:Boolean = false;
[Bindable]
public var downPageBL:Boolean = false;
[Bindable]
public var bbSelecIndex:int;
protected function BB_changeHandler(event:IndexChangeEvent):void
{
// TODO Auto-generated method stub
var index:int = (event.newIndex + 1);
bbSelecIndex = index -1;
_currentPage = index;
var bpEvent:BasePageChangeEvent = new BasePageChangeEvent("pageChange");
bpEvent.currentPage = _currentPage;
bpEvent.pageCount = count;
dispatchEvent(bpEvent);
if(index == 1)
{
upPageBL = false;
downPageBL = true;
return;
}
if(index == count)
{
upPageBL = true;
downPageBL = false;
return;
}
upPageBL = true;
downPageBL = true;
}
public function get pageSize():int
{
return _pageSize;
}
//组件中的属性,在组件中给此属性赋值
public function set pageSize(value:int):void
{
_pageSize = value;
}
public function get currentPage():int
{
return _currentPage;
}
//组件中的属性,在组件中给此属性赋值
public function set currentPage(value:int):void
{
_currentPage = value;
}
public function get bbCol():ArrayCollection
{
return _bbCol;
}
protected function upPage_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
_currentPage--;
if(_currentPage == 1 || _currentPage < 1)
{
upPageBL = false;
downPageBL = true;
_currentPage = 1;
}
else
{
upPageBL = true;
downPageBL = true;
}
var bpEvent:BasePageChangeEvent = new BasePageChangeEvent("preChange");
bpEvent.currentPage = _currentPage;
bpEvent.pageCount = count;
dispatchEvent(bpEvent);
bbSelecIndex = _currentPage -1;
}
protected function downPage_clickHandler(event:MouseEvent):void
{
_currentPage++;
if(_currentPage == count || _currentPage > count)
{
upPageBL = true;
downPageBL = false;
_currentPage = count;
}
else
{
upPageBL = true;
downPageBL = true;
}
var bpEvent:BasePageChangeEvent = new BasePageChangeEvent("nextChange");
bpEvent.currentPage = _currentPage;
bpEvent.pageCount = count;
dispatchEvent(bpEvent);
bbSelecIndex = _currentPage -1;
}
public function get pageCount():int
{
return _pageCount;
}
//组件中的属性,在组件中给此属性赋值
public function set pageCount(value:int):void
{
if(_bbCol == null)
{
_bbCol = new ArrayCollection();
}
_bbCol.removeAll();
count = value%pageSize == 0 ? value/pageSize : (value/pageSize) +1;
for(var i:int = 1;i <= count; i++)
{
_bbCol.addItem(i);
}
if(count > 1)
{
downPageBL = true;
}
_pageCount = value;
}
}
}
主应用的页面.mxml
<?xml version="1.0" encoding="utf-8"?>
<view:RoleClass xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:view="com.mjl.blog.module.role.view.*"
xmlns:control="com.mjl.blog.module.role.control.*"
xmlns:components="com.mjl.base.components.*"
creationComplete="roleclass1_creationCompleteHandler(event)"
>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<control:Control id="control"/>
</fx:Declarations>
<components:BasePanel width="100%" height="100%"
backgroundColor="#FFFFFF" icon="@Embed('images/title-role.png')"
skinClass="com.mjl.base.skins.BasePanelSkin">
<s:HGroup width="100%" bottom="0" verticalAlign="middle" horizontalAlign="center">
<!—自定义组件部分—>
<components:BasePage id="BP" pageSize="{m.pageSize}" pageCount="{m.countPage}"
pageChange="BP_pageChangeHandler(event)"
nextChange="BP_nextChangeHandler(event)"
preChange="BP_preChangeHandler(event)"
/>
</s:HGroup>
</components:BasePanel>
</view:RoleClass>
主应用的class
package com.mjl.blog.module.role.view
{
public class RoleClass extends SkinnableContainer
{
public function RoleClass()
{
super();
}
protected function BP_pageChangeHandler(event:BasePageChangeEvent):void
{
// TODO Auto-generated method stub
m.currentPage = event.currentPage;
control.role_listAllRole(event.currentPage,m.pageSize);
}
protected function BP_nextChangeHandler(event:BasePageChangeEvent):void
{
// TODO Auto-generated method stub
trace("下一页"+event.currentPage);
m.currentPage = event.currentPage;
control.role_roleNextPage(m.nextId,event.currentPage);
}
protected function BP_preChangeHandler(event:BasePageChangeEvent):void
{
// TODO Auto-generated method stub
trace("上一页"+event.currentPage);
m.currentPage = event.currentPage;
control.role_rolePrePage(m.preId,event.currentPage);
}
}
}
分享到:
相关推荐
Flex自定义组件和自定义事件的使用。 Flex自定义组件和自定义事件的使用。
flex自定义组件事件DEMO,一个简单的flex自定义组件的demo
flex 自定义组件,UI,flex 自定义组件。
1 12 跟我StepByStep学FLEX教程------Demo6之自定义事件&自定义组件 1 13 跟我StepByStep学FLEX教程------自定义事件&自定义组件 1 14 跟我StepByStep学FLEX教程------Demo7之页面跳转 1 15 跟我StepByStep学FLEX...
研究Flex 组件声明周期,了解组件的生成步骤
flex 高级自定义组件 需要重写的方法,以及为什么要重写,何时调用等。
Flex4自定义组件 介绍了flex中如何自定义组件以及相关应用
FLex自定义写的控件,有时间,datagrid,tree,combox等,以及常用的处理字符串,弹出窗口
flex4.5自定义组件介绍,自定义组件前提条件
很通用的Flex 分页组件,经过本人测试,可以应用到项目中,很方便
自己写的实例,包括 ActionSctip的自定义事件及自定义组件!
FLEX自定义的日历组件,带有日志记录功能FLEX自定义的日历组件,带有日志记录功能FLEX自定义的日历组件,带有日志记录功能FLEX自定义的日历组件,带有日志记录功能
Flex组件开发可分为两种. 一是在mxml中创建自定义组件.另一种则在actionscript class中创建,分别知道他们的含义。
几经尝试发现是由于Flex控件在旋转后中文就不显示了,因此做了相应修改以支持中文,并添加了一些删除,增加子组件的方法,以方便编程式的使用。当然如果熟悉了Flex组件的生命周期,可以根据需求增添功能。 对于中文...
Flex3自定义组件类似于Fieldset
你还在头痛flex4组件皮肤怎么自定义吗?看我给你们上传的吧;因皮肤中还是有部分mx组件,如果不能正常使用,请自己把所以mx组件改成sp组件
flex flex组件 flex下拉组件
因为工作原因和个人兴趣原因,刚接触flex,遇到不少问题,这次花了一个早上的时间专门研究了一下组件件的拖拽,呵呵,还是很有成就感的。
Flex CSS简介 Flex 使用MXML设置样式 Flex 使用ActionScript设置样式 Flex 样式的继承与叠加 Flex 主题的使用 Flex 自定义皮肤 Flex 应用皮肤