如果OCX使用onmousedown和onmouseup来决定指令发送和指令停止会不会有问题?

如题:如果使用onmousedown和onmouseup来决定指令发送和指令停止会不会有问题?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>两个事件之间的时间差</title>
<script>
var last=0;
function myFunction(elmnt,event,clr){
    var d = new Date();
	var moveIn = d.getTime();
	console.info(event+" "+moveIn+" cost:"+(last>0?moveIn-last:0));
	elmnt.style.color=clr;
	last=moveIn;
}
</script>
</head>
<body>

<a  onmousedown="myFunction(this,'onmousedown','red')" onmouseup="myFunction(this,'onmouseup','green')">
单击文本改变颜色。触发一个带参数函数,当鼠标按钮被按下,,当释放鼠标按钮,再一次触发其他参数函数
</a>

</body>
</html>

 在OCX控件调用上遇到发指令的问题,在一个单独的html上执行没有问题,放到项目里面使用requireJs调用OCX接口播放和录像检索也都OK,唯独云台控制不行,从上面看down和up之间的间隔时间基本在100毫秒左右。

云台指令:onmousedown下发,onmouseup结束,由于不知道视频SDK服务商的指令实现逻辑为什么要这样处理,所以这个是最大的问题。

 关键点:requireJS 是封装类,而OCX是IE的插件对象,指令走包装过程由于间隔时间太短不能成功发送。

/* $("#yt_direction_top").on('mousedown',function(){
	 upstart();
}); */
function upstart(){
	require(['videoStart'],function(video){
		video.upstart();
	});
}
/* $("#yt_direction_top").on('mouseup',function(){
	 upstop();
}); */
function upstop(){
	require(['videoStart'],function(video){
		video.upstop();
	});
}
/* $("#yt_direction_bottom").on('mousedown',function(){
	 downstart();
}); */
function downstart(){
	require(['videoStart'],function(video){
		video.downstart();
	});
}
/* $("#yt_direction_bottom").on('mouseup',function(){
	 downstop();
}); */ 
function downstop(){
	require(['videoStart'],function(video){
		video.downstop();
	});
}
/* $("#yt_direction_left").on('mousedown',function(){
	 leftstart(); 
}); */
function leftstart(){
	require(['videoStart'],function(video){
		video.leftstart();
	});
}
/* $("#yt_direction_left").on('mouseup',function(){
	 leftstop();
});  */
function leftstop(){
	require(['videoStart'],function(video){
		video.leftstop();
	});
}
/* $("#yt_direction_right").on('mousedown',function(){
	 rightstart();
}); */
function rightstart(){
	require(['videoStart'],function(video){
		video.rightstart();
	});
}
/* $("#yt_direction_right").on('mouseup',function(){
	 rightstop();
}); */
function rightstop(){
	require(['videoStart'],function(video){
		video.rightstop();
	});
}
/* $("#yt_zoom_add").on('mousedown',function(){
	 ZOOMstart();
}); */
function ZOOMstart(){
	require(['videoStart'],function(video){
		video.ZOOMstart();
	});
}
/* $("#yt_zoom_add").on('mouseup',function(){
	 ZOOMstop();
}); */
function ZOOMstop(){
	require(['videoStart'],function(video){
		video.ZOOMstop();
	});
}
/* $("#yt_zoom_reduce").on('mousedown',function(){
	 REDUCEZOOMstart();
}); */
function REDUCEZOOMstart(){
	require(['videoStart'],function(video){
		video.REDUCEZOOMstart();
	});
}
/* $("#yt_zoom_reduce").on('mouseup',function(){
	 REDUCEZOOMstop();
});  */
function REDUCEZOOMstop(){
	require(['videoStart'],function(video){
		video.REDUCEZOOMstop();
	});
}
/* $("#yt_focus_add").on('mousedown',function(){
	 FOCUSstart();
}); */
function FOCUSstart(){
	require(['videoStart'],function(video){
		video.FOCUSstart();
	});
}
/* $("#yt_focus_add").on('mouseup',function(){
	 FOCUSstop();
});  */
function FOCUSstop(){
	require(['videoStart'],function(video){
		video.FOCUSstop();
	});
}
/* $("#yt_focus_reduce").on('mousedown',function(){
	 REDUCEFOCUSstart();
}); */
function REDUCEFOCUSstart(){
	require(['videoStart'],function(video){
		video.REDUCEFOCUSstart();
	});
}
/* $("#yt_focus_reduce").on('mouseup',function(){
	 REDUCEFOCUSstop();
}); */
function REDUCEFOCUSstop(){
	require(['videoStart'],function(video){
		video.REDUCEFOCUSstop();
	});
}
/* $("#yt_aperture_add").on('mousedown',function(){
	 APERTUREstart();
}); */
function APERTUREstart(){
	require(['videoStart'],function(video){
		video.APERTUREstart();
	});
}
/* $("#yt_aperture_add").on('mouseup',function(){
	 APERTUREstop();
});  */
function APERTUREstop(){
	require(['videoStart'],function(video){
		video.APERTUREstop();
	});
}
/* $("#yt_aperture_reduce").on('mousedown',function(){
	 REDUCEAPERTUREstart(); 
}); */
function REDUCEAPERTUREstart(){
	require(['videoStart'],function(video){
		video.REDUCEAPERTUREstart();
	});
}
/* $("#yt_aperture_reduce").on('mouseup',function(){
	 REDUCEAPERTUREstop(); 
}); */
function REDUCEAPERTUREstop(){
	require(['videoStart'],function(video){
		video.REDUCEAPERTUREstop();
	});
}

 不封装的直接是可以的:

function upstart() {
		//g_CurChannelID
		//第二个参数 1 上 1下  2 左 3 右 4 
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 1, 6, 0);

	}
	function upstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 1, 6, 1);

	}
	function downstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 1, 6, 0);

	}
	function downstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 1, 6, 1);

	}

	function leftstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 2, 6, 0);

	}
	function leftstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 2, 6, 1);

	}

	function rightstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 3, 6, 0);
	}
	function rightstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 3, 6, 1);
	}

	function ZOOMstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 8, 6, 0);
	}
	function ZOOMstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 8, 6, 1);
	}
	function REDUCEZOOMEstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 11, 6, 0);
	}
	function REDUCEZOOMstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 11, 6, 1);
	}

	function FOCUSstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 9, 6, 0);
	}
	function FOCUSstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 9, 6, 1);
	}
	function REDUCEFOCUSEstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 12, 6, 0);
	}
	function REDUCEFOCUSstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 12, 6, 1);
	}

	function APERTUREstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 10, 6, 0);
	}
	function APERTUREstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 10, 6, 1);
	}
	function REDUCEAPERTUREstart() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 13, 6, 0);
	}
	function REDUCEAPERTUREstop() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.PTZControl(g_CurChannelID, 13, 6, 1);
	}

	function startTalk() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.TalkControl(g_CurChannelID, 0);
	}

	function stopTalk() {
		var g_CurChannelID = mini.get("CHANNEL_LIST").getValue();
		var Res = ocx.TalkControl(g_CurChannelID, 1);
	}
原文地址:https://www.cnblogs.com/boonya/p/12398767.html