event

SDL入门学习续-在SDL中使用OpenGL

雨燕双飞 提交于 2020-03-15 03:05:12
配置好SDL之后,就想在SDL中使用openGL,原以为会像在GLFW中那样简单的,实际上确花费了一整个下午不断查看文档,实例才搞定问题。 相关阅读: SDL入门学习教程 http://www.linuxidc.com/Linux/2012-12/75255.htm 总结如下: 1)SDL对OpenGL进行了部分的封装,一些OpenGL的函数需要用SDL来实现,而不是像GLFW中那样直接用; 2)SDL的事件机制花费了一些时间来理解; 3)在处理OpenGL窗口大小变化的时候,需要先调用SDL_SetVideoMode才可以得到正确结果。 最终基本实现了一个opengl的小型框架,包括一些简单的事件处理。 代码: /***************************************************************************** Copyright: 2012, ustc All rights reserved. contact:k283228391@126.com File name: main.c Description:using opengl in SDL. Author:Silang Quan Version: 1.0 Date: 2012.12.01 ****************************************

JS事件模型小结

北战南征 提交于 2020-03-14 18:48:27
三种事件模型 :原始事件模型(DOM0),DOM2事件模型,IE事件模型; 不同点:   事件程序的注册 (给HTML元素所对应的JS对象绑定事件)   事件传播的过程 事件模型的注册:    一、原始事件模型 (没有兼容性问题) 原始事件模型的特点: 事件类型上面有ON(onclick) 没有事件的传播(事件一旦发生就立刻调用事件句柄) 一个DOM对象只能注册一个类型的事件,如果注册了两个,则会发生覆盖,只执行后一个事件; 注册:  1、将JS代码作为HTML的性质(也就是直接在标签中将HTML元素的性质设置为一段代码) <input type="button" value="Press me" onclick="alert('thanks');"  2、将事件处理程序作为js对象的属性 <form name="f1"> <input name="b1" type="button" value="Press Me"/> </form> document.f1.b1.onclick=function() { alert('thanks'); }; 或者 function plead() { window.status="Please Press Me!"; } document.f1.bi.onmouseover=plead; (注意没有括号)或者 显示调用:document

SV搭建验证环境

纵然是瞬间 提交于 2020-03-14 15:39:53
1)首先定义纯虚类Sv_object,主要实现下边两个function: 定义local static 变量nextobjectID; 虚方法 virtual function void copy(St_object that, CloneType clone_type = DEEP);在基类中复制都可以通过super.copy来迭代copy。 2)在Sv_object的基础上,实现对mailbox和event的封装。产生两个基类Sv_mailbox_wrapper与Sv_event_wrapper。其中event多用在进程的控制 (wait(event), event(trigger)等形式放在function内),mailbox主要用在transaction的传递。 3)在Sv_object的基础上,建立一个Sv_testobject的纯虚类,来作为验证环境中各个组件的基类,在该基类中实现4个funciton,start,stop,main,reset。利用 event将这几个funciton联系起来。这样便有了一个基本的控制流程。 4)Transaction类的建立,这个类不算验证环境中的构件,所以用Sv_object来extends。不过同样要在Sv_transaction这个类中建立基本的流程,比如: generate,execute,check

libevent源码剖析

Deadly 提交于 2020-03-14 14:33:40
安装与使用   libevent安装:下载地址: http://libevent.org/ 解压文件:tar -zxvf libevent- 2.1 .8-stable.tar.gz 解压后进入目录,进行配置,把库安装到/usr目录下: ./configure -- prefix= /usr 编译安装:sudo make,sudo make install   libevent将I/O事件、信号事件、定时事件三种事件进行了同一事件源,将所有的就绪事件,放入到激活链表中;然后对激活链表中的事件,调用事件的回调函数执行事件处理 一、event_base   The event_base lies at the center of Libevent; every application will have one.对应的为Reactor实例,使用 libevent 函数之前需要分配一个或者多个 event_base 结构体。每个event_base 结构体持有一个事件集合,可以检测以 确定哪个事件是激活的(相当于epoll红黑树的树根)。   因为不是所有的安插在event_base的事件在调用fork()之后都可以正常工作,所以,如果在使用fork()或者其他相关系统调用启动一个新的进程之后,要想在子进程中使用base变量,但是又想让该base变量是一个全新的没有安插事件的变量

[LC] 729. My Calendar I

安稳与你 提交于 2020-03-14 12:46:40
Implement a MyCalendar class to store your events. A new event can be added if adding the event will not cause a double booking. Your class will have the method, book(int start, int end) . Formally, this represents a booking on the half open interval [start, end) , the range of real numbers x such that start <= x < end . A double booking happens when two events have some non-empty intersection (ie., there is some time that is common to both events.) For each call to the method MyCalendar.book , return true if the event can be added to the calendar successfully without causing a double booking.

观察者模式(1)

时光怂恿深爱的人放手 提交于 2020-03-13 12:39:09
  (1)笔试中有一个自定义事件的题,这个题其实考的就是观察者模式。   (2)Js中实现双向数据绑定也可以用观察者模式。所谓双向数据绑定指的是:数据的操作可以实时反映到数据,数据的变更也可以实时的展现在页面。(如AngularJs)   观察者模式是一种设计模式,又叫发布订阅模式(Publish/Subscribe)。它定义了对象间一对多的关系,让多个观察者对象同时监听某个主体对象,当这个对象的状态发生变化时,所有监听这个对象的观察者都会收到一个通知,从而自动更新自己的状态。 例子:   假如我们正在开发一个商城网站,网站里有header头部、nav导航、消息列表、购物车等模块。这几个模块的渲染有一个共同的前提条件,就是必须先用ajax异步请求获取用户的登录信息。这是很正常的,比如用户的名字和头像要显示在header模块里,而这两个字段都来自用户登录后返回的信息。这个时候,我们就可以把这几个模块的渲染事件都放到一个数组里面,然后待登录成功之后再遍历这个数组并且调用每一个方法。   一个PubSub模型主要有三个方法:订阅(subscribe),退订(unsubscribe),发布(publish)。   我们先来实现一个简单的PubSub模块。 var PubSub={}; //用于存储事件队列,事件管理器 var quene={}; //其中event为事件名称

js控制输入框

非 Y 不嫁゛ 提交于 2020-03-13 08:47:08
1、取消按钮按下时的虚线框 在input里添加属性值 hideFocus 或者 HideFocus=true 2、只读文本框内容 在input里添加属性值 readonly 3、防止退后清空的TEXT文档 <INPUT style="behavior:url(#default#savehistory)" type="text"> 也可以把style内容做为类引用,比如: .saveHistory{behavior:url(#default#savehistory)} <INPUT class="saveHistory" type="text"> 4、ENTER键可以让光标移到下一个输入框 <input onkeydown="if(event.keyCode==13)event.keyCode=9" > 5、只能为中文(有闪动),设定文本框只能输入中文 <input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9"> 6、只能为数字(有闪动),设定文本框只能输入数字 <input onkeyup="value=value.replace(/[^\d]/g,'')" onbeforepaste="clipboardData.setData('text'

HTML学习笔记(六) 元素拖放

笑着哭i 提交于 2020-03-12 11:57:07
在 HTML5 中,任何元素都能够被拖放 要使得一个元素是可拖动的,必须将它的 draggable 属性设置为 true <div draggable="true">我是可以被拖动的</div> 在拖动元素的过程中,会触发相关的事件,与源对象(被拖动元素)相关的事件如下: ondragstart :开始拖动元素时触发 ondrag :元素正在拖动时触发 ondragend :完成元素拖动后触发 <!DOCTYPE html> <html> <head> <title>Drag Demo</title> <head> <style> #source-object { width: 50px; height: 50px; border: 1px solid red; background-color: red; } </style> <script> function dragstart(event) { console.log('dragstart') } function drag(event) { console.log('drag') } function dragend(event) { console.log('dragend') } </script> </head> </head> <body> <div id="source-object" draggable=

js 添加事件 attachEvent 和 addEventListener 的用法

为君一笑 提交于 2020-03-12 07:50:18
一般我们在JS中添加事件,是这样子的 1 obj.onclick=method 这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢? 1 2 3 obj.onclick=method1; obj.onclick=method2; obj.onclick=method3; 如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,在IE中我们可以使用attachEvent方法 1 2 3 4 //object.attachEvent(event,function); btn1Obj.attachEvent( "onclick" ,method1); btn1Obj.attachEvent( "onclick" ,method2); btn1Obj.attachEvent( "onclick" ,method3); 使用格式是前面是事件类型,注意的是需要加on,比如onclick,onsubmit,onchange,执行顺序是 method3->method2->method1 可惜这个微软的私人方法,火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的addEventListener方法 1 2 3 4 //element.addEventListener(type,listener

javascript兼容性问题

China☆狼群 提交于 2020-03-12 04:54:31
javascript常见的兼容问题整理: 1.滚动条: document.documentElement.scrollTop || document.body.scrollTop 2.获取样式兼容 function getStyle(dom,styleName){ return dorm.currentStyle?dom.currentStyle[styleName] } 3.网页可视区域兼容 window.innerHeight || document.documentElement.clientHeight; window.innerWidth || document.documentElement.clientWidth; 4.事件对象兼容 evt=evt||window.event; 5.阻止事件冒泡兼容 event.stopPropagation?event.stopPropagation():event.cancelBubble=true; 6.阻止默认行为兼容 evt.preventDefault?evt.preventDefault():evt.returnValue=false; 来源: https://www.cnblogs.com/manban/p/10881643.html