Flex 4 List itemClick的实现

flex组件LIST使用 在使用list的例子,mxml组件代码。仅单个组件 立即下载

在Flex 3中List控件有itemClick事件,但是到了Flex 4中Spark List控件却没有itemClick事件。是不是Spark List提供了和itemClick事件功能或作用差不多的事件呢?翻阅Flex 4 List的参考文档也没发现和itemClick事件相当的事件或属性,但是Flex 4 List中的change事件和Halo List中的change时间似乎有所不同,于是乎想用spark List中的change事件来模拟itemClick事件,却发现并没有Halo List中itemClick事件的功能强大。那如何在Flex 4中Spark List控件上实现iemClick功能呢,方法总比问题多。在经过一番思考和尝试同时又向小欧咨询了一下后,终于实现了Flex 4 Spark List控件的itemClick功能。虽然实现后感觉很简单,其实不然,实现虽简单,但是想法更重要。上回我介绍了Flex 4 Spark List组件的分页功能的实现并附上了源代码,但是忘了附上PictureItemRender的实现代码,正好现在就在其基础上做一点点改进来实现 Spark List的itemClick功能并附上PictureItemRender的代码,如下所示:

运行结果SWF文件:

 

 

主文件FlexListPage.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application 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:local="*" creationComplete="init()"
               height="100%" width="100%">
   
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.ItemClickEvent;
            [Bindable] public var totalPages:Number;
            [Bindable] public var currentPage:Number = 1;
           
            [Embed(source='assets/backpack.jpg')]
            [Bindable]
            public var backpackCls:Class;
           
            [Embed(source='assets/boots.jpg')]
            [Bindable]
            public var bootsCls:Class;
           
            [Embed(source='assets/compass.jpg')]
            [Bindable]
            public var compassCls:Class;
           
            [Embed(source='assets/goggles.jpg')]
            [Bindable]
            public var gogglesCls:Class;
           
            [Embed(source='assets/helmet.jpg')]
            [Bindable]
            public var helmetCls:Class;
           
            public function prevPageHandler():void {
                if(currentPage == 1) return ;
                currentPage--;
                //上一页
                list.scroller.verticalScrollBar.changeValueByPage(false);
            }
           
            public function nextPageHandler():void {
                if(currentPage == totalPages) return;
                currentPage++;
                //下一页
                list.scroller.verticalScrollBar.changeValueByPage(true);
            }
           
            //设置list控件的滚动控件的样式
            public function init():void {
                //关掉滚动控件的垂直和水平滚动条
                list.scroller.setStyle('horizontalScrollPolicy', 'off');
                list.scroller.setStyle('verticalScrollPolicy', 'off');
                //设置滚动控件的垂直滚动条的滚动样式
                list.scroller.verticalScrollBar.setStyle('smoothScrolling', true);//设置为平滑滚动
                list.scroller.verticalScrollBar.setStyle('repeatInterval', 500);//设置滚动到指定点的经过的时间
                totalPages = Math.ceil(list.scroller.viewport.contentHeight/list.scroller.verticalScrollBar.pageSize);
            }
            //itemClick事件处理函数
            public function itemClickHandler(evt:ItemClickEvent):void {
                Alert.show("Name: "+evt.item.name+" Index: "+evt.index);
            }
        ]]>
    </fx:Script>
    <s:VGroup x="10" y="5" height="100%" width="100%">
        <s:Label text="Page {currentPage} of {totalPages}"/>
        <s:HGroup>
            <s:VGroup>
                <s:Button id="prev" label="Prev" click="prevPageHandler()"/>
                <s:Button id="next" label="Next" click="nextPageHandler()"/>
            </s:VGroup>
            <s:List id="list" width="400" height="374">
                <s:dataProvider>
                    <s:ArrayCollection>
                        <fx:Object name="Backpack" photo="{backpackCls}"/>
                        <fx:Object name="Boots" photo="{bootsCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Helmet" photo="{helmetCls}"/>
                        <fx:Object name="Backpack" photo="{backpackCls}"/>
                        <fx:Object name="Boots" photo="{bootsCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Backpack" photo="{backpackCls}"/>
                        <fx:Object name="Boots" photo="{bootsCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Helmet" photo="{helmetCls}"/>
                        <fx:Object name="Backpack" photo="{backpackCls}"/>
                        <fx:Object name="Boots" photo="{bootsCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Helmet" photo="{helmetCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Helmet" photo="{helmetCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Helmet" photo="{helmetCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                        <fx:Object name="Goggles" photo="{gogglesCls}"/>
                        <fx:Object name="Backpack" photo="{backpackCls}"/>
                        <fx:Object name="Boots" photo="{bootsCls}"/>
                        <fx:Object name="Compass" photo="{compassCls}"/>
                    </s:ArrayCollection>
                </s:dataProvider>
                <s:layout>
                    <s:TileLayout requestedColumnCount="3"
                                  columnWidth="120" rowHeight="120"/>
                </s:layout>
                <s:itemRenderer>
                    <fx:Component>
                        <local:PictureItemRenderer itemClick="FlexListPage(outerDocument).itemClickHandler(event)"/>
                    </fx:Component>
                </s:itemRenderer>
            </s:List>
        </s:HGroup>

    </s:VGroup>
</s:Application>

ItemRender文件PictureItemRender.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx"
                height="120" width="120"
                click="simulateItemClick()"
                autoDrawBackground="true">
    <fx:Metadata>
        [Event(name="itemClick", type="mx.events.ItemClickEvent")]  /*在ItemRender中声明itemClickEvent事件*/
    </fx:Metadata>
   
    <fx:Script>
        <![CDATA[
            import mx.events.ItemClickEvent;
            public function simulateItemClick():void {
                var itemClick:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK, false,
                    false,null,itemIndex,null,data);
                dispatchEvent(itemClick); //抛出itemClick事件对象
            }
        ]]>
    </fx:Script>
   
    <s:VGroup height="120" width="120">
        <mx:Image source="{data.photo}" height="120" width="120"/>
    </s:VGroup>
</s:ItemRenderer>

以上代码很简单,我就不多做解释了,可以自己运行后慢慢研究。

从Gcode命令看3D打印机的‘大脑’:Marlin/Klipper固件是如何执行你的指令的? 本文深入解析3D打印机固件Marlin和Klipper如何执行Gcode指令,从语法解析到运动控制算法,再到温度管理,详细揭示了从指令到物理动作的转化过程。通过对比两大固件的设计哲学和性能优化技巧,帮助用户更好地理解和调优3D打印机的核心控制系统。 阅读详情

相关推荐

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 311

itemClick事件:点击工具栏列表中的tbcustombtn按钮,弹出基础资料的列表界面&点击按钮弹出采购新增页面

itemClick事件:点击工具栏列表中的tbcustombtn按钮,弹出物料的列表界面

qq_44972915的博客 999

浊音/清音/爆破音的时域及频域特性

第一周作业 浊音/清音/爆破音的时域及频域特性 思路:使用Audacity进行录制,时域部分将音频放大观察波形规律,频域部分生成并进行频谱分析。 (1)浊音U 时域分析: 时域表现为短周期性,波形比较规律。 频域分析: 频域上表现为频率集中在低频区域,共振峰较为明显,短时能量较高。 (2)清音S 时域分析: 时域波形没有周期性,整体振幅小于浊音。 频域分析: 频域波形平缓,无共振峰,能量比较集中。 (3)爆破音t 时域分析: 脉冲波,更为尖锐,整体上振幅降低。 频域分析: 没有像浊音一样的共振

Leylaaaa的博客 1228

RecyclerView实现ItemClick事件——两全其美

两种方法实现RecyclerView中添加OnItemClick事件。 第一种:通过实现OnItemTouchListener。 第二种:通过设置回调。

LeBang的博客 1619

汽车诊断服务(UDS——0x11服务解析)

ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。

从事汽车行业 979

别再手动点按钮了!用C#给PowerMill做个自动化小助手(附完整源码)

本文详细介绍了如何使用C#进行PowerMill二次开发,打造自动化助手以提升CAM工程师的工作效率。通过实战案例和完整源码,展示了从环境配置到核心功能实现的完整流程,包括智能连接模块、项目批量处理器和刀路智能分析器等高级功能开发。

weixin_26899659的博客 345

flex List的使用1

doubleClickEnabled="true" doubleClick="doChoose()"/>

yesjava的专栏 709

apm软件仿真+QGC地面站 环境搭建

本教程使用场景:apm软件仿真运行于虚拟机 ubuntu环境。qgc地面站位于windows 系统。两个环境在同一台电脑上。 一.apm仿真环境搭建 1.安装vm虚拟机及ubuntu 18。 2.ubuntu下 下载Ardupilot 飞控源码 并配置环境。 下载源码: git clone https://github.com/ArduPilot/ardupilot cd ardupilot git submodule update --init --recursive 配置所需运行的环境:

qthello 6110

Flex DataGrid组件

实际上,DataGrid组件是属于列表组件的,之所以单独拿出来讲解,主要是因为DataGrid组件有着很强大的功能,也有很多扩展的应用是在开发中经常用到的。DataGrid组件是按照行和列的形式显示数据的。有几个类是只有DataGrid组件才能使用的,包括DataGridCellEditor类、DataGridColumn类和HeaderRenderer类。这三个类会在使用的时候逐

764

手把手教你用Gazebo和VINS-MONO搞定VIO SLAM仿真(附Realsense D435i模型配置)

本文详细介绍了如何使用Gazebo和VINS-MONO构建VIO SLAM仿真环境,包括Realsense D435i模型的配置与集成。通过实战指南,帮助开发者快速搭建高保真仿真平台,优化VIO性能,并解决常见问题,适用于机器人感知与定位导航领域。

weixin_30682415的博客 159

【华为OD机试真题】141、租车骑绿岛 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

题目描述 >部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。

KJ.JK 1959

Flex List组件的使用

 这次我来说明一下List组件的使用,主要是当multipleSelection的属性设为"true"的时候的技巧。  1.选择了多项条目后数据的读取,关键代码如下:  function getSelectedItems()  {      var selectItems:Array = state.selectedItems;      var iCount:Number = s

qiaozhangchi的专栏 3725

Vision 机器视觉案例 之 零件边缘缺陷检测

缺陷检测工具

机器视觉李小白的博客 1385

flex控件list

1.List控件简介 该控件主要用于“竖向显示单列表数据项”。如果数据项过多,可以出现一个垂直滚动条。 继承关系如下: List Inheritance ListBase Inheritance ScrollControlBase Inheritance UIComponent Inheritance FlexSprite Inheritance Sprite 子类: FileSystemList, Menu, Tree 2.List属性与事件 名称

rocdream的专栏 2486

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OpenHarmony应用开发:从环境搭建到网络数据列表实现

移动应用开发中,跨平台框架的选择直接影响开发效率和性能表现。OpenHarmony作为新一代分布式操作系统,提供了完整的应用开发生态。本文以网络数据列表应用为例,详细介绍如何使用DevEco Studio搭建开发环境,实现HTTP请求封装与性能优化,并完成数据绑定与列表渲染。特别针对OpenHarmony特有的FA模型和ArkTS语言特性,解析如何构建高性能的列表界面,同时涵盖应用签名打包等完整发布流程。通过实际案例演示OpenHarmony应用开发的核心技术点,包括网络模块@ohos.net.http的使

aodiyi6351的博客 454

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android实用技巧.列表技巧(二).itemClick

当list页每一个item有多个点击事件,并且逻辑处理需要在activity中时,就需要把点击事件传递到activity中。 有两种方式:委托模式和反射机制 下边具体例子: 创建列表页 public class ListListenerActivity extends Activity implements ItemClickListener{ ListView lis

风晴 819

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

flex增加拖放功能(翻译原创)

原文连接:Adding drag-and-drop support 增加拖放功能 视觉开发环境典型地让您操作对象在应用程序中使用鼠标选择他们并在屏幕上四处移动。Flex拖放管理器让您选择一个对象,譬如List组件里的一个item(选项),或者是一个image(图片)组件,然后拖拽它到其他组件而添加到这个组件上。所有的Flex组件都支持拖放操作。Flex中的某些控件的附加功能也包括...

195

解决RecyclerView无法onItemClick问题

对于RecyclerView的使用,大家可以查看将替代ListView的RecyclerView 的使用(一),单单从代码结构来说RecyclerView确实比ListView优化了很多,也简化了我们编写代码量,但是有一个问题会导致开发者不会去用它,更比说替换ListView了,我不知道使用过RecyclerView的人有没有进一步查看,RecyclerView没有提供Item的点击事件,我们

jwzhangjie的专栏 5万+

Flex中的DataGrid的内容处理(总结)

转贴:http://blog.sina.com.cn/s/blog_5c4558600100ejo1.html 1.介绍一下DataGrid中数据的增加/删除/获取。添加/删除由于DataGrid的数据都绑定于Array或XML,所以我们需要增加记当或删除记录的时候..只需要对所绑定的数据进行相应的操作即可。这里就不多说了..一会直接看代码。要提示一下的是..虽然数据与DataGrid进行...

weixin_30532759的博客 193

20110921 onItemClick监听器四个arg参数

请教Android开发中的Adapter内的onItemClick监听器四个arg参数问题(多谢)  public void onItemClick(AdapterView arg0, View view, int position,

catherine880619的专栏 3万+

ListView默认点击Item同时触发onItemClick 事件 —— 虚拟点击Item

需求是这样子的:    listview+checkbox 实现 单选,如果 data 的size =1,就默认选中该item。    最初的想法是 checkbox.setChecked(true) 就可以了,这种做法 从界面上看,checkbox 的确是勾选中了,但是并没有触发ItemClick方法,更不能执行内部方法体了。    直接进行判断,在size=1的时候把 ItemClick内的方...

sinat_33248260的博客 6330

flex动态添加button并添加click事件

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <

彻底拆分,一切可控! 2624

Flex中如何通过itemClick事件,阻止用户点击选中Tree的某一分支节点

 main.mxmlxml version="1.0" encoding="utf-8"?> mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"         layout="vertical"         verticalAlign="middle"         backgroun

为天加朵云... 2146

Flex 4 List Data Paging(Flex 4 List控件分页功能的实现)

<br />要想了解Flex 4 List控件的分页功能(paging)的实现,必须先理解Flex 4中滚动机制的实现原理,可以参考我上次介绍的Flex 4中的Scrolling和viewports机制这篇文章。下面从Spike 的代码开始介绍List控件分页功能(paging)的实现: <br /><?xml version="1.0" encoding="utf-8"?><br /> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

flexrhythm的专栏 3067
上一篇: Flex多SWF文件加载之Applicatoin Domain
下一篇: Flex 4中的Scrolling和viewports机制
flexrhythm
博客等级 码龄17年 4粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值