当前位置:首页 » 网页前端 » web全景点击事件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web全景点击事件

发布时间: 2022-06-26 22:45:17

❶ 如何在WebGL全景图上做标记

一般获取景区上某个地址的标记,都是通过手动获取的。因为这些标记是无规律可寻的。所以我们就得考虑如何通过手动去获取3D图上的某个地址。人机交互时通过鼠标来操作,但鼠标是2D坐标,需要转换到对应的3D坐标上。Three.js为我们提供了Raycaster对象,我们可以很轻松的获取到一个2D点对应的3D坐标。先声明几个对象:
var raycasterCubeMesh;
var raycaster = new THREE.Raycaster();
var mouseVector = new THREE.Vector3();
var tags = [];

这里需要在document上注册mousemove事件,实时获取鼠标对应的3D坐标。事件代码如下:
function onMouseMove(event){
mouseVector.x = 2 * (event.clientX / window.innerHeight) - 1;
mouseVector.y = - 2 * (event.clientY / window.innerHeight) + 1;

raycaster.setFromCamera(mouseVector.clone(), camera);
var intersects = raycaster.intersectObjects([cubeMesh]);

if(raycasterCubeMesh){
scene.remove(raycasterCubeMesh);
}
activePoint = null;
if(intersects.length > 0){
var points = [];
points.push(new THREE.Vector3(0, 0, 0));
points.push(intersects[0].point);

var mat = new THREE.MeshBasicMaterial({color: 0xff0000, transparent: true, opacity: 0.5});
var sphereGeometry = new THREE.SphereGeometry(100);

raycasterCubeMesh = new THREE.Mesh(sphereGeometry, mat);
raycasterCubeMesh.position.(intersects[0].point);
scene.add(raycasterCubeMesh);
activePoint = intersects[0].point;
}
}

代码中的大部分我已经在“如何实现对象交互”有介绍。这里只介绍和当前功能相关代码。intersects包含了鼠标当前位置下拾取到的3D对象集合。如果长度大于0,表示已经拾取到3D对象了。由于我们给intersectObjects函数只传递了cubeMesh对象(即全景图),所以intersects的长度肯定为1。intersects[0].point表示鼠标投射到cubeMesh对象表面上的坐标。这个坐标正是我们需要的3D标记点。所以我把这个点存储在activePoint。raycasterCubeMesh直接用交互点作为中心画的一个球体,鼠标移动这个球体也就跟着移动。
鼠标移动时,能够获取到3D坐标了。如何确认这个坐标就是我们需要的?这里还得 给docuent注册一个mousedown事件。通过右键点击确认。注册事件如下:
function onMouseDown(event){
if(event.buttons === 2 && activePoint){
var tagMesh = new THREE.Mesh(new THREE.SphereGeometry(1), new THREE.MeshBasicMaterial({color: 0xffff00}));
tagMesh.position.(activePoint);
tagObject.add(tagMesh);

var tagElement = document.createElement("div");
tagElement.innerHTML = "<span>标记" + (tags.length + 1) + "</span>";
tagElement.style.background = "#00ff00";
tagElement.style.position = "absolute";
tagElement.addEventListener("click", function(evt){
alert(tagElement.innerText);
});
tagMesh.updateTag = function(){
if(isOffScreen(tagMesh, camera)){
tagElement.style.display = "none";
}else{
tagElement.style.display = "block";
var position = toScreenPosition(tagMesh, camera);
tagElement.style.left = position.x + "px";
tagElement.style.top = position.y + "px";
}
}
tagMesh.updateTag();
document.getElementById("WebGL-output").appendChild(tagElement);
tags.push(tagMesh);
}
}

代码第一行有if判断,只有鼠标右键触发,并且activePoint不为空,才执行下面的代码。首先创建一个球体tagMesh并且设置坐标为activePoint,然后把它添加到tagObject对象中。tagObject是一个Object3D对象,用来存放所有的tagMesh,便于统一管理。
接着代码创建了一个tagElement元素,设置样式和内容。并且附加到WebGL容器中。tagMesh自定义了updateTag函数,里边调用了两个特别重要的函数:toScreenPosition和isOffScreen。这里先不忙介绍updateTag函数。接下来通过介绍这两个函数来回答剩下的问题。

❷ android怎么模拟用户在webview中对应的坐标的点击事件

不知道你是要知道“怎么模拟按钮的点击事件”还是要知道“这个东西是怎么调上来的”? 1、模拟点击事件,可以用调用Button的onClick的方法。 2、这个点击事件是触到屏幕后,触摸屏驱动首先得到这个消息,然后根据WindowManager里面记录的信息分发给ViewRoot,然后就一直发,就像生活委员发信件一样,最终发给那个被点击的View,没人处理就报废。

❸ 在webview中的点击事件和shouldstartloadwithrequest方法冲突

如何将点击链接后的网页也显示呢,于是边Google边查看Android文档,找到找到了一个方法,以下使用源码解释。

package demo.androidyue.webview;

import android.app.Activity;

import android.os.Bundle;

import android.webkit.WebView;

import android.webkit.WebViewClient;

public class WebViewDemoActivity extends Activity {

private WebView webView;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//初始化WebView

this.initWebView();

}

/*

* 初始化WebView

*/

private void initWebView(){

//从布局文件中扩展webView

this.webView=(WebView)this.findViewById(R.id.webview);

//为WebView设置WebViewClient处理某些操作

this.webView.setWebViewClient(new webViewClient());

//加载地址

this.webView.loadUrl("h ttp ://10.0.2.2");

}

class webViewClient extends WebViewClient{

//重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

//如果不需要其他对点击链接事件的处理返回true,否则返回false

return true;

}

}

❹ webBrowser中怎么为html元素添加点击事件

找到元素,再绑定事件即可;
如元素ele添加点击事件:

ele.Click+=new EventHandler(ele_Click);

点击事件:
private void ele_Click(object sender,EventArgs e)
{
//点击代码
}

❺ 问一下,怎么实现web端检索面板的点击事件,点击任意一条,跳转到其他页面,谢谢了

事件绑定,处理
你看看你的检索面板有没有冒泡事件或是否支持绑定处理函数,如果有的直接用就行了,如果没有就自己绑定对应dom,然后做跳转处理

❻ Java Web中jsp页面的按钮点击事件求解~

1、你这个提交按钮会有一个onclick事件
<input type="button" value="提交" onclick="a();"/>/*这个a()是指一个js事件*/
<script>
function a(){
alert(1);
/*这里可以去处理事件*/
}
</script>
2、你说的action=""是说form表单里面的"action"吗?
比如说:<form action="" id="" name="">这个action是指你的form表单要提交数据到指定的路径。

❼ webview怎么不支持JS调用的点击事件

可以通过插件jquery.mobile.js 来实现,因为webview的点击事件都是通过touch 或者 tap 来触发的,所以..你的绑定方式可能需要改下了。

❽ 用html加载UI 怎么获取WebView中的每一个小项的点击事件

1. Web网页部分,需要用Javascript实现监听点击事件,获取被点击项及其电话号码,用jQuery等库,这个功能很容易实现。
2. 在点击事件里面,调用“打电话”或“发短信”方法,例如"window.JSExt.call(number);"。
3. 在Java代码里面,实现“打电话”/“发短信”的接口,并注册到WebView里面,这样Javascript才能调用

❾ C# web 直接点击按钮与调用按钮的点击事件有什么不同

直接点击按钮是系统产生消息去驱动事件,执行事件绑定的程序代码,调用按钮的点击事件和普通的方法调用是相同的