文档库 最新最全的文档下载
当前位置:文档库 › unity3d事件函数

unity3d事件函数

unity3d事件函数
unity3d事件函数

Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结。https://www.wendangku.net/doc/8614922926.html,

Awake

当前控制脚本实例被装载的时候调用。一般用于初始化整个实例使用。

Start

当前控制脚本第一次执行Update之前调用。

Update

每帧都执行一次。这是最常用的事件函数。

FixedUpdate

每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。

LateUpdate

在每帧执行完毕调用,他是在所有update结束后才掉,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。

Reset

这个是编辑器模式情况下你点击reset按钮(如果有的话)调用的,你可以在这里做调试的初始化工作。

OnApplicationFocus

OnApplicationPause

OnApplicationQuit

应用程序失去焦点,应用程序暂停,应用程序退出时候发送这些消息。

OnBecameInvisible

OnBecameVisible

当脚本宿主(不)被任何摄像机显示时候发送此消息。

OnCollisionEnter

OnCollisionExit

OnCollisionStay

当其他碰撞或者刚体(collider/rigidbody )和参数的碰撞或者刚体(collider/rigidbody )重叠、退出时发送前两个。而当他们保持重叠状态时每帧都会发送一个Stay消息。OnConnectedToServer

OnDisconnectedFromServer

OnFailedToConnect

OnFailedToConnectToMasterServer

前两个当客户端成功连接到服务器或者断开服务器时发送此消息。

后两个当连接失败时候触发https://www.wendangku.net/doc/8614922926.html,

OnMasterServerEvent

当Master服务器发送报告时候触发。

OnNetworkInstantiate

当物体被Network.Instantiate时触发。(还没研究到)

OnPlayerConnected

OnPlayerDisconnected

在服务端当玩家成功连接/离线时候触发。

OnControllerColliderHit

当控制者和参数ControllerColliderHit碰撞时候触发此消息。官方举例可以用于角色移动一个物体,当角色碰到这个参数物体时候,你可以在这函数里操作移动此物体的动作,等等。https://www.wendangku.net/doc/8614922926.html,

OnParticleCollision

当粒子撞到碰撞体(collider)时触发。

OnDisable

OnEnable

当脚本宿主被启用或者禁用时候触发。

OnDrawGizmos

OnDrawGizmosSelected

编辑器状态时绘制Gizmos和Gizmos被选取时候触发。

注:Gizmos参见我另一篇blog,他是用与做自己的组件时候用的,比如路径点绘制之类的。OnGUI

绘制GUI时候触发。一般在这个函数里绘制GUI菜单。

OnJointBreak

(还没研究到)

OnLevelWasLoaded

当新的level(unity包)读取完毕时候触发。

OnMouseDown

OnMouseDrag

OnMouseEnter

OnMouseExit

OnMouseOver

OnMouseUp

鼠标事件,都是当鼠标和gui或者碰撞体(Collider)交互时候触发。需要说明的是drag其实就是鼠标down后up之前持续每帧都会发送此消息。https://www.wendangku.net/doc/8614922926.html,

OnPostRender

这个函数仅用于宿主为摄像机的脚本。当此摄像机范围内所有渲染都完成时候触发此消息。OnPreCull

这个函数仅用于宿主为摄像机的脚本。当此摄像机剔除了某个渲染场景时候触发此消息。(未验证)

OnPreRender

这个函数仅用于宿主为摄像机的脚本。当此摄像机开始渲染某个场景时候触发此消息。OnRenderImage

当所有渲染完成image的postprocessing effects(只有pro版支持)后触发。

详情请查看image 特效:The image effects in Unity https://www.wendangku.net/doc/8614922926.html,

OnRenderObject

这个函数仅用于宿主为摄像机的脚本。当使用Graphics.DrawMeshNow或者其他函数绘制自己建立的物体渲染完毕时触发。https://www.wendangku.net/doc/8614922926.html,

OnSerializeNetworkView

OnServerInitialized

当Network.InitializeServer完成时触发。

OnTriggerEnter

OnTriggerExit

OnTriggerStay

当碰撞体(collier)接触触发区域(trigger)时候的一系列消息。

OnWillRenderObject

转载请注明出处:https://www.wendangku.net/doc/8614922926.html,

转自https://www.wendangku.net/doc/8614922926.html,^ ^.

C#自定义控件属性与行为

C#自定义控件属性与行为收藏 控件应该定义属性而不是公共字段,因为可视化设计器在属性浏览器中显示属性,而不显示字段。属性就像智能字段。属性通常具有带访问函数的专用数据成员,在语法上属性被作为类的字段进行访问。(虽然属性可以具有不同的访问级别,但此处的讨论将重点放在公共访问这种更加常见的情况上。 属性定义通常由以下两部分组成: 1、专用数据成员的定义。 view plaincopy to clipboardprint? 01.private int number = 0; private int number = 0; 2、使用属性声明语法对公共属性进行的定义。 view plaincopy to clipboardprint? 01.//该语法通过get 和set 访问函数将专用数据成员和公共属性关联起来。 02. public int MyNumber 03. { 04. get 05. { 06. return number; 07. } 08. set 09. { 10. number = value; 11. } 12. } //该语法通过get 和set 访问函数将专用数据成员和公共属性关联起来。 public int MyNumber { get { return number; } set { number = value; }

} 虽然属性定义中通常包含专用数据成员,但这不是必需的。get 访问器不用访问私有数据成员就可以返回值。get 方法返回系统时间的属性就属于这种情况。属性启用数据隐藏,访问器方法隐藏属性的实现。 定义属性时需考虑以下重要的注意事项: 1、必须将属性应用于定义的属性。属性用来指定设计器显示属性的方式。 2、如果改变属性将影响控件的外观显示,请从set 访问器中调用Invalidate 方法(从Control 继承该方法)。Invalidate 随后调用OnPaint 方法,该方法将重新绘制控件。为提高效率起见,对Invalidate 的多次调用将产生对OnPaint 的一次调用。 3、 .NET Framework 类库为常见数据类型(如整数、小数、布尔值和其他数据)提供了类型转换器。类型转换器的目的通常是用来提供字符串到数值的转换(从字符串数据转换为其他数据类型)。常见数据类型与默认类型转换器(将数值转换为字符串,并将字符串转换为相应数据类型)相关联。如果定义了自定义(即,非标准)数据类型的属性,则应用的属性必须将类型转换器指定为与该属性相关联。还可以使用属性使自定义UI 类型编辑器与某个属性相关联。UI 类型编辑器提供了一个用来编辑属性或数据类型的用户界面。颜色选择器是UI 类型编辑器的一个示例。 例:首先创建一个名为DrawingMode 的简单枚举。 view plaincopy to clipboardprint? 01.public enum DrawingMode 02. { 03. Happy = 0, 04. Sad = 1, 05. Angry = 2 06. } public enum DrawingMode { Happy = 0, Sad = 1,

过程与自定义函数

一、选择题 1.某VB程序如下: Private Sub Label1_DblClick( ) Dimx As Single,y As Single Label1.Caption ="Welcome." x =Val(Text2.Text) y=Sqr(Abs(x)) Text1.Text =Str(x +y) End Sub 程序运行时,能触发该事件过程的是( ) A. 单击Command1 B. 单击Label1 C. 双击Label1 D. 双击Text1 2.在VB中,使用过程主要是为了( ) A. 使程序模块化 B. 使程序界面美观 C. 给程序加密 D. 人机交互更友好 3.某对象的一个事件过程代码如下: Private Sub Obj_Click( ) s=s +1 Text1.Text =Str(s) End Sub 下列说法正确的是( ) A. 该过程的过程名为“Obj” B. 该对象的类名为“Sub” C. 该对象的对象名为“Obj_Click” D. 该事件是一个“单击”事件 4.某VB程序的一个事件过程如下: Private Sub Command1_Click( ) Label1.Caption ="welcome!" End Sub 程序运行时,能触发该事件的是( ) A. 窗体装载 B. 单击窗体 C. 单击标签Label1 D. 单击命令按钮Command1 5.在VB中,设已定义函数过程f,它有三个实型传值参数。设a,b,c为实型变量,则下列能调用该函数的正确语句是( ) A. f B. f(a+b,b+c) C. f(a+b,b+c,c+a) D. fa+b,b+c,c+a 6.有如下VB自定义函数: Function f(x As Integer)As Single f =Int(Abs(x)) End Function 该函数返回值的数据类型是( ) A. 整数型 B. 日期型 C. 逻辑型 D. 单精度实数型 7.有如下VB自定义函数: Function f(i As Single)As Boolean If i<=0Then f =True Else f=False End Function 执行语句s =f(-0.4)后,逻辑型变量s的值是( ) A. 0 B. 1 C. True D. False 8.在VB中,有如下程序: Function f(x As Integer)As Integer f =Int(Abs(x)/3)+0.1 End Function Private Sub Command1_Click( ) Dimy As Single y =f(-9) Text1.Text =Str(y) End Sub 运行该程序,单击命令按钮Command1,文本框Text1中显示的是( ) A. -9 B. 9 C. 3 D. 3.1 9.小明在VB中定义了以下函数,功能是求a和b的最大公约数。 Function gcd(a As Integer,b As Integer)As Integer DoWhile b >0 c =aMo d b a =b b =c Loop End Function 调试中发现计算结果一直是0。经过仔细观察与分析,发现错误的原因是( ) A. 函数名有错 B. 变量C没有定义 C. 函数没有返回值 D. b>0应该改为b>=0 10.某VB程序如下: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii =13Then Text2.Text =Text1.Text +Str(5) End If End Sub 程序运行时,能触发该事件过程的是( ) A. 单击文本框Text1 B. 单击文本框Text2 C. 文本框Text1被激活后,用户在键盘上按下某一个键 D. 文本框Text2被激活后,用户在键盘上按下某一个键 11.狄同学在设计VB程序时所使用复选框对象的属性窗口如图所示,她想编制该复选框单击事件的处理过程,则该事件处理过程名是( ) A. CheckBox_Click B. 加粗_Click C. Check1_Click D. 复选框_Click 12.下列VB程序中,f是一个递归函数: Private Sub Command1_Click( ) Dim y As Long Text1.Text ="" y =f(3) Label1.Caption =Str(y) End Sub Function f(n As Integer)As Long '递归函数 Text1.Text =Text1.Text +Str(n) If n <=1Then f =1 Else f =f(n -1)+2 End If End Function 程序运行时,单击命令按钮Command1后,文本框Text1中显示的内容是( ) A. 3 B. 321 C. 123 D. 1 13.以下为VB算定义求两个数最大公约数函数的代码:Private Function gcd(a as integer,b as integer)as integer …此处省略语句块内容 第1页共2页

PB自定义事件

pb中用户自定义事件内容   Event ID 含义 内容浅析  单选或多选按钮消息前缀:pbm_bm  pbm_bmgetcheck 单选按钮或多选按钮是否被选  pbm_bmgetstate 按钮是否加亮  pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然 pbm_bmsetstate 加亮或不加亮按钮  pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框  单选或多选按钮通知消息前缀:pbm_bn  pbm_bnclicked 按钮控件被点中  pbm_bndisable 使按钮控件无效  pbm_bndoubleclicked 按钮控件被双点  pbm_bndragdrop 一个对象被放到按钮控件  pbm_bndragenter 一个对象被拖到按钮控件  pbm_bndragleave 一个对象被拖离按钮控件  pbm_bndragover 一个对象被拖经按钮控件  pbm_bnhilite 按钮控件被加亮  pbm_bnpaint 按钮控件被绘制  pbm_bnsetfocus 按钮控件获得聚焦  pbm_bnunhilite 按钮控件不被加亮  通用对话框消息前缀:pbm_cb  pbm_cbaddstring 将字符串加到通用对话框  pbm_cbdeletestring 从通用对话框删除一个字符串  pbm_cbdir 加一个目录列表到通用对话框  pbm_cbfindstring 搜索以一组字符开头的字符串  pbm_cbfindstringexact 搜索与所提供的字符完全匹配的字符串  pbm_cbgetcount 列表框中的项数  pbm_cbgetcursel 当前被选项的数目  pbm_cbgetdroppedcontrolset 列表框在屏幕上的坐标位置  pbm_cbgeteditsel 编辑器控件中被选字符的范围  pbm_cbgetextendedui 缺省或扩展的用户界面  pbm_cbgetitemdata 重画的列表框中的4字节(32位)项  pbm_cbgetitemheight 列表框中某一项的高度  pbm_cbgetlbtext 列表框中的文本  pbm_cbgetlbtextlen 列表框中文本的长度  pbm_cbinsertstring 向列表框中增加新的字符串或4字节项  pbm_cblimittext 限制能被输入到列表框中的字符数  pbm_cbresetcontent 删除列表框中所有元素  pbm_cbselectstring 搜索匹配的字符串并显示  pbm_cbsetcursel 在列表框中选择并显示一项  pbm_cbseteditsel 在列表框的编辑区域中选择一块文本  pbm_cbsetextendedui 设置缺省或扩展的用户界面  pbm_cbsetitemdata 在列表框中设定4字节(32位)项  pbm_cbsetitemheight 设置列表框中项的高度  pbm_cbshowdropdown 转换(显示或隐藏)列表框中拖放区域  通用对话框通知消息前缀:pbm_cbn  pbm_cbndblclk 用户在列表中某一项上双点  pbm_cbndragdrop 一个对象被放到通用对话框控件上

事故、事件、不符合、纠正和预防措施控制程序示范文本

事故、事件、不符合、纠正和预防措施控制程序示 范文本 In The Actual Work Production Management, In Order To Ensure The Smooth Progress Of The Process, And Consider The Relationship Between Each Link, The Specific Requirements Of Each Link To Achieve Risk Control And Planning 某某管理中心 XX年XX月

事故、事件、不符合、纠正和预防措施 控制程序示范文本 使用指引:此管理制度资料应用在实际工作生产管理中为了保障过程顺利推进,同时考虑各个环节之间的关系,每个环节实现的具体要求而进行的风险控制与规划,并将危害降低到最小,文档经过下载可进行自定义修改,请根据实际需求进行调整与使用。 1目的 为对实际存在的或潜在的不符合采取纠正和预防措 施,以减少和预防事故、事件或不符合的发生,保障安全 生产和职工的生命健康,特制定本程序。 2 适用范围 适用于本矿事故、事件、不符合、纠正预防措施的控 制。 3 职责 3.1责任单位负责本单位不符合原因的调查、分析,制 定并采取纠正措施。 3.2生产科和安监站负责纠正和预防措施的跟踪验证。

3.3管理者代表负责纠正和预防措施的组织、协调工作。 4 控制程序 4.1不符合的来源 4.1.1生产过程中监督及各项检查与检测中发现的不符合。 4.1.2调查分析事故、事件中发现的不符合。 4.1.3运行过程中表现出的与相关文件、标准的不符合。 4.1.4职业健康安全法律及相关法律、法规要求的变更引起的不符合。 4.1.5有关部门检查时发现的不符合。 4.1.6审核与管理评审中发现的不符合。 4.1.7相关方的合理建议与抱怨。 4.2事故与未遂事故的调查处理,根据人身伤害,设

C#委托、事件、自定义事件的理解

C#委托、事件、自定义事件的理解 一、委托 委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法。委托使用分三步:1、委托声明。2、委托实例化。3、委托调用。 例程一: using System; namespace 委托 { delegate int NumOpe(int a,int b); //委托声明 class Class1 { static void Main(string[] args) { Class1 c1 = new Class1(); NumOpe p1 = new NumOpe(c1.Add); //委托实例化 Console.WriteLine(p1(1,2)); //委托调用 Console.ReadLine(); } private int Add(int num1,int num2) { return(num1+num2); } } } 例中,委托NumOpe引用了方法Add。 委托声明了以后,就可以象类一样进行实例化,实例化时把要引用的方法(如:Add)做为参数,这样委托和方法就关联了起来,就可以用委托来引用方法了。 委托和所引用的方法必须保持一致: 1)参数个数、类型、顺序必须完全一致。2)返回值必须一致。 二、事件 事件有很多,比如说鼠标的事件:MouserMove,MouserDown等,键盘的事件:KeyUp,KeyDown,KeyPress。 有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。

SAP创建自定义事件触发的后台任务

1)建立自定义事件 运行SM62 输入自定义事件名称和描述,并按“保存”按钮保存 2)创建触发自定义事件的程序 触发事件是通过'BP_EVENT_RAISE'来完成的,一个简单代码如下*&---------------------------------------------------------------------* *& Report Z_TRIGGER_EVENT * *&---------------------------------------------------------------------* REPORT Z_TRIGGER_EVENT .

CALL FUNCTION 'BP_EVENT_RAISE' EXPORTING eventid = 'Z_TRIGGER_JOB' EXCEPTIONS BAD_EVENTID = 1 EVENTID_DOES_NOT_EXIST = 2 EVENTID_MISSING = 3 RAISE_FAILED = 4 OTHERS = 5. IF sy-subrc <> 0. Write: 'Event failed to trigger'. else. Write: 'Event triggered'. ENDIF. 3)创建自定义事件触发的后台任务 运行SM36,输入后台任务名称和任务类型 按“开始条件”按钮,并在弹出的屏幕点击“事件后”按钮,输入自定义的事件名称,并按“保存”按钮返回上一屏幕。

点击“步骤”按钮,在弹出窗口输入后台程序和变式,并按“保存”按钮保存,返回后台任务定义屏幕

九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针

我们前面一直在说信号,比方说用鼠标按了一下按钮,这样就会产生一个按钮的单击信号,然后我们可以在相应的槽函数里进行相应功能的设置。其实在按下鼠标后,程序要先接收到鼠标按下的事件,然后将这个事件按默认的设置传给按钮。可以看出,事件和信号并不是一回事,事件比信号更底层。而我们以前把单击按钮也叫做事件,这是不确切的,不过大家都知道是什么意思,所以当时也没有细分。 Qt中的事件可以在QEvent中查看。下面我们只是找两个例子来进行简单的演示。 1.还是先建立一个Qt4 Gui Application工程,我这里起名为event。 2.添加代码,让程序中可以使用中文。 即在main.cpp文件中加入#include 的头文件包含。 再在下面的主函数里添加 QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 3.在mainwindow.h文件中做一下更改。 添加#include 头文件。因为这样就包含了QtGui中所有的子文件。 在public中添加两个函数的声明 void mouseMoveEvent(QMouseEvent *); void keyPressEvent(QKeyEvent *); 4.我们在mainwindow.ui中添加一个Label和一个PushButton,将他们拉长点,因为一会要在上面显示标语。 5.在mainwindow.cpp中的构造函数里添加两个部件的显示文本。 ui->label->setText(tr(“按下键盘上的A键试试!”)); ui->pushButton->setText(tr(“按下鼠标的一个键,然后移动鼠标试试”)); 6.然后在下面进行两个函数的定义。 /*以下是鼠标移动事件*/ void MainWindow::mouseMoveEvent(QMouseEvent *m) {//这里的函数名和参数不能更改 QCursor my(QPixmap(“E:/Qt/Qt-Creator-Example/event/time.png”));

PB事件和自定义事件讲解

create by amu on 2012-08-16 ---------------------------------------------------------------------------------------- 1.window中的事件 事件名触发的时机 01.Activate 在窗口激活之前触发 02.Clicked 当用户用鼠标单击窗口的空白区域(没有控件的区域)时触发 03.Close 当关闭窗口时触发 04.CloseQuery 当清除或关闭窗口时触发。然后检查Message.ReturnValue的值,若为1,则窗口不能关闭 05.Deactivate 当窗口变为非活动状态时触发 06.DoubleClicked 当用户双击窗口的空白区域时触发 07.DragDrop 当一个可拖动的控件被拖动到窗口上时触发 08.DragEnter 当一个可拖动的控件进入窗口时触发 09.DragLeave 当一个可拖动的控件离开窗口时触发 10.DragWithin 当一个可拖动的控件在窗口内部拖动时触发 11.Hide 在窗口被隐藏时触发 12.HotLinkAlarm 在DDE中服务器应用已经发送了新的数据,客户DDE应用已经接收到这些数据时触发 13.Key 当用户击了一个键且插入点不在RichTextEdit编辑控件或数据窗口控件时触发 14.MouseDown 当用户在窗口的空白区域按下鼠标左键时触发 15.MouseMove 当鼠标在窗口内移动时触发 16.MouseUp 当用户在窗口的空白区域释放鼠标左键时触发 17.Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发 18.Help ......... 19.Other 当一个非PowerBuilder事件的Windows信息发生时触发 20.RButtonDown 在窗口的空白区域单击鼠标右键时触发 21.RemoteExec 当一个DDE客户应用发送了一个命令时触发 22.RemoteHotLinkStart 当一个DDE客户应用开始一个热连接时触发 23.RemoteHotLinkStop 当一个DDE客户应用结束一个热连接时触发 24.RemoteRequest 当一个DDE客户应用请求数据时触发 25.RemoteSend 当一个DDE客户应用已经发送了数据时触发 26.Resize 当用户或程序打开或重设窗口大小时触发 27.Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发 28.SystemKey 当插入点不在某个行编辑中且用户按了ALT或ALT加其它键时触发 29.Timer 在调用Timer函数后,经过了Timer函数指定的时间后触发 30.ToolBarMoved 当MDI窗口的工具条移动时触发 以上是我新建一个window是window的事件原来的顺序, 下面是我自己常用的排序:

c#_自定义控件上的右键菜单

c#_自定义控件上的右键菜单 2009-04-01 08:59 control是要定义右键菜单的控件。 private void control_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { ContextMenu menu = new rightClickMenu(); //初始化menu menu.MenuItems.Add( "c1" ); //添加菜单项c1 menu.MenuItems.Add( "c2" ); //添加菜单项c2 menu.Show(control, new Point(e.X, e.Y)); //在点(e.X, e.Y)处显示menu } } exp. ======== class rightClickMenu : ContextMenuStrip { //右键菜单 public rightClickMenu() { Items.Add("发送消息"); //添加菜单项1 Items.Add("发送文件"); //添加菜单项2 Items.Add("断开连接"); //添加菜单项3 Items[0].Click += new EventHandler(sendMsg); //定义菜单项1上的Click事件处理函数 Items[1].Click += new EventHandler(sendFile); //定义菜单项2上的Click事件处理函数 Items[2].Click += new EventHandler(cutCon); //定义菜单项3上的Click事件处理函数 } //发送消息 private void sendMsg(object sender, EventArgs e) { } //发送文件 private void sendFile(object sender, EventArgs e)

js事件

关于丢失键盘焦点的问题 var tf:TextField = new TextField(); tf.text = "请按任意键"; addChild(tf); this.stage.addEventListener(KeyboardEvent.KEY_DOWN, keydownHandler); function keydownHandler (evt:KeyboardEvent):void { tf.text = "按键码:" + evt.keyCode; } my_btn.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler); function clickHandler (evt:MouseEvent):void { removeChild(my_btn); } // my_btn为场景中一普通按钮[SampleButton]实例 运行效果是这样的: 一开始按键是没问题的,tf能正常显示键值 然后点一下按钮后,再按键,事件就不响应了 经过分析是这么一会事: 点击按钮时,焦点在按钮上,按钮消失了,舞台就失去焦点了 function clickHandler (evt:MouseEvent):void { removeChild(my_btn); stage.focus = null; //在这里将焦点回归舞台} 这样设置下焦点就又可以继续响应按键了。 但是我想要问的是:如果都是这样的话,屏幕元件多了,岂不句句鼠标点击都要写这么一句么…… 难道没有其它解决办法吗?

https://www.wendangku.net/doc/8614922926.html,/thread-18785-1-1.html JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click; 2. srcElement/target:事件源,就是发生事件的元素; 3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下;(firefox中0代表左键,1代表中间键,2代表右键) 4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的左上角的位置;(在DOM标准中,这两个属性值都不考虑文档的滚动情况,也就是说,无论文档滚动到哪里,只要事件发生在窗口左上角,clientX和clientY都是0,所以在IE中,要想得到事件发生的坐标相对于文档开头的位置,要加上 document.body.scrollLeft和document.body.scrollTop) 5. offsetX,offsetY/layerX,layerY:事件发生的时候,鼠标相对于源元素左上角的位置; 6. x,y/pageX,pageY:检索相对于父要素鼠标水平坐标的整数; 7. altKey,ctrlKey,shiftKey等:返回一个布尔值; 8. keyCode:返回keydown何keyup事件发生的时候按键的代码,以及keypress 事件的Unicode字符;(firefox2不支持event.keycode,可以用event.which替代) 9. fromElement,toElement:前者是指代mouseover事件中鼠标移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素; 10. cancelBubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素;(e.cancelBubble = true; 相当于e.stopPropagation();) 11. returnValue:一个布尔属性,设置为false的时候可以组织浏览器执行默认的事件动作; (e.returnValue = false; 相当于e.preventDefault();) 12. attachEvent(),detachEvent()/addEventListener(),removeEventListener:为制定DOM对象事件类型注册多个事件处理函数的方法,它们有两个参数,第一个是事件类型,第二个是事件处理函数。在 attachEvent()事件执行的时候,this关键字指向的是window对象,而不是发生事件的那个元素; 13. screenX、screenY:鼠标指针相对于显示器左上角的位置,如果你想打开新的窗口,这两个属性很重要;

ooalv自定义按钮、单击、双击、列编辑切换的事件资料

1、需新建屏幕1001 并画container:'CONT1' 2、需新建屏幕1002 并画container:'CONT2' 3、定义屏幕1001、1002的ok_code和逻辑流 4、定义工具栏 程序代码: 1.TABLES t001w. 2. 3.TYPES:BEGIN OF typ_t001w , 4.werks TYPE t001w-werks, https://www.wendangku.net/doc/8614922926.html,1TYPE t001w-name1, 6.werks2 TYPE t001w-werks, 7.rowcolor TYPE char10, 8.zcheckbox TYPE c, "LAYOUT-CHECBOX='ZCHECKBOX'. 9.*zflag TYPE c,"LAYOUT-BOX_FNAME = 'ZFLAG'. 10.zicon TYPE char10, "LAYOUT-ICON= 'ZICON'图标需要显示的 11.END OF typ_t001w.

12. 13.TYPES:BEGIN OF typ_smf , 14.werks TYPE t001w-werks, https://www.wendangku.net/doc/8614922926.html,1TYPE t001w-name1, 16.END OF typ_smf. 17. 18.DATA:i_t001w TYPE TABLE OF typ_t001w,"""""第一次alv内表 19.i_detail TYPE TABLE OF typ_smf, """""单击ALV内表列ZICON显示的明细ALV 内表 20.i_smf TYPE TABLE OF typ_smf.""""SF内表 21. 22.DATA:fieldcat TYPE lvc_t_fcat, 23.grid TYPE REF TO cl_gui_alv_grid,"alv控件名 24.grid2 TYPE REF TO cl_gui_alv_grid,"alv控件名 25.g_container TYPE scrfname VALUE 'CONT1',"重新定义本地容器对象名 26.g_container2 TYPE scrfname VALUE 'CONT2',"重新定义本地容器对象名 27.is_layout TYPE lvc_s_layo, 28.ps_layout TYPE lvc_s_layo, 29.g_custom_container TYPE REF TO cl_gui_custom_container, 30.g_custom_container2 TYPE REF TO cl_gui_custom_container. 31. 32.DATA: ui_functions TYPE ui_functions. "隐藏按钮的内表 33.*********ALV上事件捕捉类 34.DATA:gs_toolbar TYPE stb_button. "按钮 35.CLASS alv_event_receiver DEFINITION DEFERRED. "声明类对象 36.*----------------------------------------------------------------------* 37.* CLASS alv_event_receiver DEFINITION 38.*----------------------------------------------------------------------* 39.* 40.*----------------------------------------------------------------------* 41.CLASS alv_event_receiver DEFINITION."声明类成员可见性

C#给自定义Web控件添加事件的几种方法

C#给自定义Web控件添加事件的几种方法 前两种方法可以不实现IPostBackEventHandler 最近升级分页控件,由于原来使用的是https://www.wendangku.net/doc/8614922926.html,(在https://www.wendangku.net/doc/8614922926.html,里面添加一个事件是比较容易的),现在想改用C#,而原来的方法又写得比较笨拙,想换一个更简洁一点的方法,所以不得不重新认识一下事件。看了几遍《道不远人深入解析https://www.wendangku.net/doc/8614922926.html,2.0控件开发》居然没有看懂,可能是自己太笨了吧。又找到了自定义分页控件开发看了几遍,还是比较迷糊,最后把《自定义分页控件开发》里提供的代码down下来看了一下,终于有点明白了。 先举一个简单的例子吧,我们建立一个复合控件,在CreateChildControls()里面添加两个控件,一个是Label,一个是LinkButton。我们的目的是要给自定义控件加一个事件,以便可以控制Label的Text属性。 1、内部事件。 这个好像是我起的名称,就是只在自定义控件的内部相应的事件,使用控件的页面不用相应相关的事件。具体一点就是要在自定义控件内部,在单击LinkButton的时候修改Label 的值。 public class EventTest : WebControl, INamingContainer { protected override void CreateChildControls() { Label lbl = new Label(); lbl.ID = "lbl"; this.Controls.Add(lbl); this.Controls.Add(new LiteralControl("
")); LinkButton btn = new LinkButton(); btn.ID = "btn"; btn.Text = "复合控件的事件测试"; this.Controls.Add(btn); } } 编写好这段代码,然后把控件拖拽到页面里面里进行测试,运行后点击LinkButton,我们可以看到页面已经提交了,但是什么变化也没有,恩,我们还没有些事件呢。现在我们就给LinkButton加一个Click的事件。 protected override void CreateChildControls() { Label lbl = new Label(); lbl.ID = "lbl"; this.Controls.Add(lbl);

C#自定义控件入门教程

平台:VS2005WINFORM 语言:C# C#自定义控件最终效果图: 光看看图片似乎说明不了什么问题,还是接着往下看吧! 要想在VS2005winform中编辑C#自定义控件,步骤如下: 1.点击文件->新建项目->选择Windows控件库 2.编辑控件 3.点击生成->生成项目名称,完成这一步后会在bin或debug目录下看到"项目名称.dll"文件,这个便是你的控件库了 4.在需要使用该控件的程序中点击工具->选择工具项->浏览->选择刚才的那个.dll文件,这样你便会在你的工具箱中找到你的那个控件

今天要写的主要是第二个步骤,其它的大家自己去掌握. 新建一个项目后会得到如右图所示的界面: 首先我们对这个自定义控件取个名字:ColorHatch; 接下来我们对这个界面进行布局修改成和效果图类似的界面. 然后就开始对代码进行编辑了. 分析1:我们需要一个panel1来显示我们所选择的颜色;同时我们希望可以在调用控件的程序中直接对其初始颜色进行设置; 那么现在我们就来实现分析1中的要求:这里主要的问题就是如何来给我们的这个控件定义一个外部属性,以至我们可以在属性设计视图中对其进行设置. 定义属性的方法是首先声明一个private变量private Color hatchColor;然后我们编写set与get方法,也就是对应的属性赋值与取值的方法 1.[Description("设置当前颜色")]//显示在属性设计视图中的描述 2.[DefaultValue(typeof(Color),"Black")]//给予初始值 3.public Color HatchColor 4.{ 5.get{return hatchColor;} 6.set 7.{ 8.hatchColor=value;

VB操作鼠标的自定义类DIYMouse类

DIYMouse类 一DIYMouse类(使用说明) 1、属性 CurrentX 指针当前坐标的X值 CurrentY指针当前坐标的Y值 2、方法 PointGoto(x1, y1) 指针移动到屏幕位置 LeftClick 单击左键 RightClick 单击右键 MiddleClick 单击中键 DoubleClick 双击左键 LeftDown 左键按下 LeftUp 左键弹起 RightDown 右键按下 RightUp 右键弹起 MiddleDown 中键按下 MiddleUp 中键弹起 3、示例 Option Explicit Dim M As New DIYMouse Private Sub Command1_Click() Timer1.Interval = 100 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() Me.Caption = M.CurrentX & "," & M.CurrentY '在标题上显示鼠标当前位置End Sub Private Sub Command2_Click() M.PointGoto 200, 300 '鼠标移动到屏幕坐标(200,300)位置(单位是像素) M.LeftClick '单击左键 M.RightClick '单击右键 M.MiddleClick '单击中键 M.DoubleClick '双击左键 M.LeftDown '按下左键(不松开) M.LeftUp '弹起左键(松开) '……省略,其余功能暂不一一列举 End Sub

二DIYMouse类(代码) Option Explicit 'DIYMouse类 '获取鼠标指针在屏幕上的坐标 Private Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As Long '设置鼠标指针在屏幕上的坐标 Private Declare Function SetCursorPos Lib "user32" (ByV al sPointX As Long, ByV al _ sPointY As Long) As Long '鼠标事件 Private Declare Sub mouse_event Lib "user32" (ByV al dwFlags As Long, ByV al dx _ As Long, ByV al dy As Long, ByV al cButtons As Long, ByV al dwExtraInfo As Long) Private Const MouseEventF_LeftDown = &H2 '左键按下 Private Const MouseEventF_LeftUp = &H4 '左键抬起 Private Const MouseEventF_MiddleDown = &H20 '中键按下 Private Const MouseEventF_MiddleUp = &H40 '中键抬起 Private Const MouseEventF_Move = &H1 '鼠标移动 Private Const MouseEventF_RightDown = &H8 '右键按下 Private Const MOUSEEVENTF_RightUp = &H10 '右键抬起 Private Const MouseEventF_ABSOLUTE = &H8000 'dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 'PointAPI数据类型 Private Type PointAPI X As Long '鼠标指针位置的横坐标(单位:像素) Y As Long '鼠标指针位置的纵坐标(单位:像素) End Type Dim lResult As Long '临时存储执行结果Dim lpPoint As PointAPI '指针类型 Dim lpEnabled As Boolean '是否启用鼠标状态检测事件(MouseMove事件、MouseClick事件) '功能待定 'Public Event GetClicked(Button As Integer, Shift As Integer, X As Single, Y As Single) '检测到鼠标事件 '指针跳转到屏幕的位置 Public Sub PointGoto(x1, y1)

基于MFC(QT)的OSG的自定义事件2

一种基于OSG的自定义事件方法 By CWorld 引头 工作以后,终于又有机会用OSG了,也把以前学生时代没有解决问题解决下,给OSG 社区做做贡献,众人拾柴火焰高嘛。本文主要是根据OSG的自定义事件机制,针对我们常用的MFC程序、QT程序等界面GUI常见的事件,比如点击Button按钮,点击菜单切换等事件,探讨在OSG中自定义事件和解决方法。鉴于水平有限,仅仅是抛砖引玉,有错误之处,还望大家指证。 概述 本文内容主要是讨论OSG自定义事件的原因、在MFC、QT等中如何设计和事件、并提供一个mfc+osg的简单例子,最后针对OSG的事件谈谈自己的理解。 问题描述 自定义事件的原因,我们经常在使用MFC或者QT开发OSG程序时,遇到比如我点击一个控件、双击一个Button,对OSG场景进行切换的情况。这个时候,我们如何设计呢? 以MFC+OSG的程序为例,比如我们在MFC+OSG程序里,对一个菜单添加了响应函数,进行模型的切换,即把当前的牛模型,替换为滑翔机模型。

常见的方法 对于“替换模型”菜单,我们在View类的响应函数里,对OSG的数据进行修改。例如 其中replaceModel是我们写的一个函数内容如下: 在绝大多事情下,这种方式,预期的结果是正确的,即我们的程序替换了OSG的模型。但是如果你用一个面片数目非常大的模型进行测试,就会出现Vector<>的地址内存错误。这

是什么原因呢?让我们来看看MFC+OSG程序的线程模型吧。 MFC +OSG的线程模型 通过如下的图,我们可以清楚的看到在CView类,我们启动了OSG的渲染线程,所以在整个程序里,我们存在了两个线程,MFC-UI线程,OSG线程。 一个比较明显的例子就是,我们如果在MFC+OSG程序里加载一个复杂的模型,你会发现你的鼠标还是可以移动的。对比MFC+OpenGL的程序,比如我们在OnDraw()函数里,响应绘制,你会发现加载一个复杂的3DS模型,你的鼠标是动不了的。 根据上面的描述,我们可以判断这样直接在菜单响应函数里OnReplacemodel()里,直接更新OSG数据是错误的,因为学过多线程设计的我们都知道,对一个共享的数据在其他的线程里更新,在不加锁的情况下,它的结果是不可预期的,也就存在了上面所说的Vector()的错误。 比较笨拙的办法 在我还是学生的时候,因为项目紧张,理论素质和C++水平不到家,对于Array说的自定义事件,什么Command Buffer事件队列之类的,总是不了解,当然也不敢用,当时就觉得先做完再说吧。于是,我选择了一个最笨的办法,我对root节点设置回调,在OnReplacemodel()函数里,设置bool变量,来触发回调替换模型,具体的思路如下:breplace=true;

相关文档
相关文档 最新文档