自定义事件
{
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自定义组件事件DEMO"提供了关于如何创建和管理自定义组件事件的实际示例。下面我们将详细探讨Flex自定义组件、事件处理以及如何通过示例进行学习。 1. Flex自定义组件:Flex允许开发者通过继承现有的...
### 二、Flex自定义事件 #### 1. 为什么需要自定义事件 Flex的内置事件(如 MouseEvent 和 Event)可能不足以满足所有交互需求。自定义事件允许开发者创建具有特定含义和数据的事件,以更好地匹配应用的业务逻辑。...
自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及如何在一个完整的项目中导入和运行。 1. **创建自定义事件类** - 首先,...
在这个“flex------组件-----数据可视化”主题中,我们将探讨Flex如何帮助开发者创建交互式的数据图表和可视化效果。 Flex框架提供了一套强大的组件库,其中包括用于数据可视化的类和库。这些组件使得开发人员能够...
在Flex中,自定义组件是开发者根据项目需求创建的特殊UI元素,可以扩展和定制标准的MX或Spark组件。本示例着重于一个名为“ImageViewer”的自定义组件,这通常是一个用于展示图像并可能包含缩放、平移等交互功能的...
本文将深入探讨如何创建一个“标签式导航栏”自定义组件,包括如何实现样式定制、横向滚动以及隐藏滚动条,同时还会讲解如何监听item点击事件,以便进行相应的业务逻辑处理。 一、自定义组件基础 在微信小程序中,...
Flex自定义组件是Adobe Flex框架中的一个重要特性,它允许开发者创建具有特定功能和外观的UI元素,以满足项目中独特的用户界面需求。Flex是一个开源的、基于MXML和ActionScript的开发框架,主要用于构建富互联网应用...
在Flex中,自定义组件是开发人员为了满足特定需求而创建的特殊用户界面元素。这些组件可以扩展标准的Flex组件库,或者从头开始构建,以提供独特的功能和视觉表现。 在标题“各种Flex自定义组件”中,我们可以推断这...
在博文《flex----组件---行为类与特效类》中,作者可能详细介绍了如何在Flex项目中应用这些行为和特效,包括如何导入和使用预定义的MX Behaviors,如何创建自定义行为,以及如何通过EffectManager和Spark特效来实现...
### Flex自定义事件详解 Flex 是一款用于构建和部署跨平台桌面应用与移动应用的开源框架,它基于Adobe Flash Platform。在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的...
自定义组件的前提条件通常包括对Flex SDK的熟悉,对面向对象编程的理解,以及对组件生命周期、样式和事件处理机制的掌握。 主要内容提到了一个具体的自定义组件——图片组件,它具有以下功能: 1. 创建图片组件时...
Flex中的高级自定义组件开发是构建复杂用户界面的关键技术,它允许开发者超越基本组件的限制,以满足特定的业务需求和视觉设计。在创建高级组件时,了解并掌握一些核心方法的重写至关重要,这些方法涉及到组件的生命...
自定义组件和事件在Flex应用程序中发挥着关键作用,使开发者能够构建高度定制的用户界面和交互逻辑。 总的来说,掌握ActionScript的自定义组件和自定义事件是提升Flash和Flex开发技能的重要一步。通过实践和研究...
### Flex4自定义组件开发详解 #### 一、Flex4自定义组件概述 Flex4(也称为Spark)是Adobe Flex框架的一个重要版本,它引入了许多新的特性,包括改进的组件库、性能优化以及更好的可定制性。在Flex4中,自定义组件...
而ActionScript则提供更底层的编程能力,允许开发者自定义组件的行为。 数据验证在Flex中通常涉及到两个主要的类:Validator和Formatters。Validator类用于检查用户输入是否符合预设的验证规则,如非空、数字范围、...
在Flex中,分页组件通常是自定义组件,因为Flex的标准库并未提供内置的分页解决方案。开发者通常需要根据实际需求来设计和实现这样的组件。以下是对Flex分页组件的详细解释: 1. **分页机制**:分页的核心是将大...
这个主题聚焦于“flex自定义控件与事件”,这是一个关键的开发概念,特别是对于那些希望深入理解Flex架构和提升应用用户体验的开发者来说。 自定义控件在Flex开发中扮演着重要角色,它们允许开发者根据项目需求创建...
- **自定义组件**:教授如何扩展Flex内置组件或从头开始创建新组件。 #### 13. Demo7:页面跳转 - **导航架构**:介绍Flex中用于实现页面跳转的不同方法和技术。 - **路由管理**:学习如何管理应用内的导航路径。 ...
在Flex开发中,自定义组件和事件通讯是构建复杂应用程序的关键技术。本示例通过一个简单的用户登录场景,深入解析了如何实现组件间的有效通信。下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。...