❶ 如何在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 直接點擊按鈕與調用按鈕的點擊事件有什麼不同
直接點擊按鈕是系統產生消息去驅動事件,執行事件綁定的程序代碼,調用按鈕的點擊事件和普通的方法調用是相同的
