`
mujinglanqq1
  • 浏览: 2470 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

flex自定义事件-自定义组件

阅读更多
自定义事件
{
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);
}
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics