我正在WebGL中构建一个桌面游戏.电路板可以旋转/缩放.我需要一种方法将画布元素(x,y)上的点击转换为3D空间(x,y,z)中的相关点.最终结果是我想知道包含触及最靠近用户的对象的点的(x,y,z)坐标.例如,用户点击一块,你想象一条穿过3D空间的光线穿过这件作品和游戏板,但是我希望这件作品的(x,y,z)坐在它的位置.感动.
我觉得这一定是一个非常普遍的问题,但我似乎无法在谷歌中找到解决方案.必须有某种方法将3D空间的当前视图投影到2D中,这样您就可以将2D空间中的每个点映射到3D空间中的相关点.我希望用户能够将鼠标悬停在板上的空间上,并使点变色.
使用最新的GAE SDK(1.9.17),我遵循了使用blobstore和图像库提供谷歌云存储映像的所有说明,但在本地它给了我500错误.将应用程序部署到生产服务器,提供图像可以正常工作.但是,这非常烦人,因为我需要在本地开发,而我的项目是图像密集型的.
这在生产中很好用:
key = blobstore.create_gs_key('/gs/my_bucket/my_folder/my_image.jpg')
url = images.get_serving_url(key)
Run Code Online (Sandbox Code Playgroud)
在制作时,服务网址如下:
http://lh6.ggpht.com/ow6Z3PrYyLVdvRDc9cT9I3MB9ug...
Run Code Online (Sandbox Code Playgroud)
在本地,网址看起来像:
http://0.0.0.0:8080/_ah/img/encoded_gs_file:Z2lmdF9p...
Run Code Online (Sandbox Code Playgroud)
App Engine错误日志说:
ERROR 2014-12-21 23:12:35,256 blob_download.py:204]无法找到带有编码的编码_s_file文件:Z2lmdF9p ...
难道我做错了什么?文档说在本地提供图像应该在SDK 1.8之后正常工作.如果我无法使其工作,我唯一的解决方案是保留本地托管的所有生产映像(用于开发).
导致Android应用崩溃的最佳方法是什么?我们正努力让我们的应用程序尽可能坚如磐石.
对于我自己的贡献,如果你有一个使用网络服务的应用程序,进入你的应用程序与wifi连接,然后以各种方式关闭wifi.例如,走出范围,或背景应用程序并手动关闭wifi,然后前景化应用程序.
我能够使用 MotionEvent.obtain 在典型的 android 视图(文本框、按钮等)上模拟点击事件,如下所示:
int meta_state = 0;
MotionEvent motionEvent = MotionEvent.obtain(
SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN,
x,
y,
meta_state
);
motionEvent.recycle();
view_tapped.dispatchTouchEvent(motionEvent);
Run Code Online (Sandbox Code Playgroud)
view_tapped 是对我要将事件发送到的视图的引用。但是,当我在 webview 上调用 dispatchTouchEvent 时,它似乎没有点击里面的任何元素。
我还在 webview 中放置了一个 onTouchListener,然后当视图被手指实际点击时转储与motionevent 相关的所有信息,然后创建一个具有所有相同信息的新motionevent 并将其分派到webview,它没有点击屏幕。onTouchListener 仍然被触发,但屏幕上的元素没有被点击。
我还尝试使用 Javascript 来完成它,通过尝试找出特定坐标处的元素,然后通过注入 javascript 来触发 click 事件,但也没有运气。
关于我做错了什么的任何想法?
我正在尝试为Android应用程序创建2D游戏引擎.我已经按照本教程,它可以很好地创建一个全屏显示,但我不希望这样.我想让我的视图占据屏幕的前2/3(或其他),并使用标准的Android小部件(按钮,文本输入等)填充底部的第三个.我不能让这个工作.我能得到的最好的是一个空白的白色屏幕.我尝试了很多排列,包括使用外部LinerLayout,然后将自定义SurfaceView嵌入到嵌套的RelativeLayout中,并将Android小部件放在嵌套的LinearLayout中,它不起作用.
例如,当我觉得它应该是50%SurfaceView时,这会产生一个白色屏幕,对于TextView,它会产生50%:
activity_main.xml中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false" >
<RelativeLayout
android:layout_width="0dip"
android:layout_height="0dp"
android:layout_weight="1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapContainer"
>
</RelativeLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="0dp"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/white"
android:text="@string/test_str" />
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java:
package com.removed.for.privacy;
import com.removed.for.privacy;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout mapContainer = (RelativeLayout) findViewById(R.id.mapContainer);
JSMapView mapView = new JSMapView(this);
mapContainer.addView(mapView);
}
@Override
public boolean …Run Code Online (Sandbox Code Playgroud) android ×3
2d ×1
3d ×1
blobstore ×1
coordinate ×1
crash ×1
exception ×1
javascript ×1
motionevent ×1
mouse ×1
stability ×1
surfaceview ×1
testing ×1
touch-event ×1
webgl ×1
webview ×1