【来自FRATA系统】如何支持鼠标滚动事件

本文介绍如何在Flex应用程序中为特定的文本输入框添加鼠标滚轮支持,实现数值的自动增减功能。文章提供了一个简单的示例代码,展示了如何利用FocusManager确定当前焦点所在的文本框,并据此调整滚轮操作的效果。

导读:
  Mouse wheel support in FlexDecember 21, 2007 at 12:41 pm
  The problem
  Just two of the text fields on your Flex window have to support the mouse wheel. The user turns the wheel, the numeric field in these fields is incremented or decremented


问题描述


你FLEX面版上有两个text框要求支持鼠标滚动事件,随着鼠标的滚动文本数值相应的增加或者减少
  The solution
  As per the Flex manual, there is a MouseEvent.MOUSE_WHEEL event, just listen to it. So far so good. On the creationComplete event adding the one liner:


  systemManager.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel)
  The onMouseWheel event handler gets the MouseEvent, but the problem is that we have more than one field that needs to support the wheel. Which one to increment? The currentTarget of the MouseEvent does not report which text field has the focus. The currentTarget contains a reference to SystemManager.


  Fine, let’s see if the FocusManager can help:
  public function onMouseWheel (evt:MouseEvent): void {
  var compAtFocus: IFocusManagerComponent = focusManager.getFocus();
  // no wheel support unless it’s a TextInput field
  if (compAtFocus is TextInput){
  var theValue:Number=Number(compAtFocus[”text”]);
  theValue += evt.delta;
  compAtFocus[”text”]=”"+theValue;
  }



  And it works fine, see for yourself (right click to see the source code): http://www.myflex.org/codesamples/mousewheel/MouseWheel.html
  In this sample application I’ve created two text inputs that have to support the wheel, and one text area that should not. Hence, first thing I do in the code above is checking the type of the object that has the focus. If this was a text input, get its text property and add the value of delta that comes with event. This delta is default increment that you can configure for your mouse outside of the application. For example, in Windows, go to Control Panel and set the Mouse wheel increment to your liking. Just keep in mind, that support of the mouse wheel depends on the mouse driver that you use, and if something does not work, do not blame Flex.


  If you do not want to link the increment/decrement amount to your? mouse system settings, just do not use the delta property that comes with the MouseEvent and add/subtract any arbitrary value that meets your application’s needs.


解决方案


更具flex手册,有鼠标滑轮消息,那么监听之,这是第一步。具体怎么样的代码参看下面的文章(笔者懒得拷来考去的了),鼠标滚轮消息处理器获得鼠标消息之后,怎么做呢?问题是我们如何去处理两个文本框呢?哪一个增?哪一个减呢?响应函数的上下文并没有告诉我们哪一个获得了焦点。解决方案是上下文给了我们一个systemmanager的引用,可以从这里入手。这样做便解决了问题,如果有问题的话可以参看此链接的演示http://www.myflex.org/codesamples/mousewheel/MouseWheel.html


在这个应用中我们有俩TEXT控件,其中一个要支持滚动,另一个支持,因此我要做的事情就是,通过光标管来来判断这是不是一个text input而不是text area。这样我们再获得其text属性然后更新之。注意这里滚动的delta值可以在操作系统层面设置,是由驱动程序决定的,如果你的应用不正确,那么仔细查找原因不要责怪flex框架
  The homework
  1. Modify the above code to ensure that the numbers in your text field do not go to the negative territory.
  2. Modify the above code so it’ll support just one of the TextInput boxes.


作业:


1.需改上面的代码使得,鼠标的滚动不会使数值出现负数的情况


2.修改代码是的上面俄代码支持两个控件都是textinput,而只对其中一个响应鼠标滚动事件
  Regards,
  Yakov Fain

本文转自
http://flexblog.faratasystems.com/?p=278

STM32电机库无感代码注释无传感器版本龙贝格观测三电阻双AD采样前馈控制弱磁控制斜坡启动内容概要:本文档为一份名为《STM32电机库无感代码注释无传感器版本龙贝格观测三电阻双AD采样前馈控制弱磁控制斜坡启动》的技术资料,主要围绕基于STM32微控制器的永磁同步电机(PMSM)无传感器矢量控制系统实现展开。文档详细解析了无感FOC(磁场定向控制)的核心算法,包括采用龙贝格观测器(Luenberger Observer)进行转子位置与速度估算、三电阻采样方式下的电流检测、双AD同步采样机制、前馈解耦控制、弱磁扩速控制策略以及斜坡启动技术。通过对底层C语言代码的逐行注释,帮助开发者理解控制逻辑的实现细节和系统参数的调优方法。; 适合人群:具备嵌入式开发基础、熟悉STM32平台和电机控制理论的电气工程、自动化及相关专业的工程师、研究生及高年级本科生;尤其适合从事电机驱动开发、电赛备赛或无感FOC项目研发的技术人员。; 使用场景及目标:①深入理解无传感器电机控制系统中龙贝格观测器的设计与实现原理;②掌握三电阻采样与双AD同步配置在实际工程中的应用技巧;③学习前馈控制、弱磁控制和斜坡启动等高级控制策略的代码实现方式;④用于电赛、毕业设计或工业项目中电机控制模块的开发与调试参考。; 阅读建议:建议结合STM32开发环境与硬件平台进行实践,边阅读代码注释边调试程序,重点关注观测器参数整定、AD采样时序、PI调节器设计及弱磁控制切换逻辑,以提升对整个无感FOC系统运行机制的理解与掌控能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值