我需要让我的用户在我的一个表单中选择一个日期和时间,而且我不想花时间重新发明轮子来datetime picker在 JavaScript 中创建一个。问题是我可以在网上找到的唯一“选择器”都是基于 jQuery 的,这通常不会成为问题,除非整个站点实际上完全没有使用 jQuery 就完成了。因此,当我只需要在我网站的一个页面上的一个表单上进行单个输入时,现在使用整个巨大的框架会感觉很愚蠢。
我正在为移动广告SDK创建一个OpenFL扩展程序,但很难弄清一些CFFI内容。
基本上,我试图将Haxe对象传递给C ++,然后从C ++对该对象调用一个方法。这样做的目的是作为事件侦听器,因此当C ++中发生某些事情时,我将在该对象上调用回调以通知Haxe代码。
我知道如何使用lime的用于Android的JNI东西使用Java来做到这一点。使用JNI类型签名看起来像这样:
var setCallbackListener = JNI.createStaticMethod("com.test.myextension", "setCallbackListener", "(Lorg/haxe/lime/HaxeObject;)V");
var listener = new MyCallbackListener(); //implements `onSomething`
setCallbackListener(listener); //pass the listener to the Java side
Run Code Online (Sandbox Code Playgroud)
然后,从Java方面,我可以这样调用函数onSomething:
public static void setCallbackListener(HaxeObject listener){
listener.call0("onSomething"); //call a function called "onSomething" with zero arguments
}
Run Code Online (Sandbox Code Playgroud)
那行得通,这就是我在Android上的做法。对于iOS,我尝试使用hxcpp做相同的事情。
我知道从Haxe调用C ++函数的一般过程,其使用cpp.Lib.load方式与上述JNI api类似。但是,一旦获得valueC ++方面的类型,我就不知道如何调用它的成员函数。
例如,假设我的C ++函数如下所示:
#include <hx/CFFI.h>
static void setCallbackListener (value listener) {
//...
}
DEFINE_PRIM (setCallbackListener, 1);
Run Code Online (Sandbox Code Playgroud)
然后,我将如何在其中调用函数“ onSomething” listener?
我正在制作一个游戏,我已经创建了一个单独的线程来加载资产,3d模型等.这样UI线程在加载时就不会锁定.但是,加载的线程需要GL10的实例才能正确加载和映射纹理.
下面是对问题的概述,以便您更好地理解我的困境:
1.我的Renderer类创建并启动"加载"线程.
2.加载线程从资源
3 加载模型和纹理.'glGenTextures'是加载纹理所必需的,但加载线程没有GL10的实例
我试着给加载线程提供由Renderers onSurfaceCreated方法给出的GL10实例,但是它不起作用.(我想它会被删除,或搞砸了,或者当函数结束时)
那么,我怎样才能将GL10的工作实例传递给我的加载线程?
我正在制作我的第一款Android游戏,它将成为一款使用opengl es的3D街机游戏.我已经做了很长时间的工作,主要是为了未来的灵活性优化发动机.
无论如何,现在我完全已经完成了游戏功能和所有漂亮的东西,但它落后于不是我的调试手机的手机.该游戏拥有相当高质量的手机游戏图形,所以预计会有一点点落后,但是在Nexus S上运行游戏和在MyTouch 4G上运行游戏之间的性能差异是巨大的.这款游戏甚至不能在像LG Optimus这样的低端手机上播放(游戏运行,但它太过波涛汹涌,不能轻松玩).在我的Nexus SI上很少会出现波动(我在游戏中实现了帧率独立运动)但是在MyTouch 4G上它更常见,虽然游戏仍然可以播放......但是很烦人
我来自桌面游戏开发背景,优化从来没有引起我的兴趣.你能推荐什么来帮助我加快比赛速度?
我尽可能地尝试优化代码,并且性能得到了显着改善,但似乎有一些我错过或忽略的东西.它是一个巨大的游戏,具有完整的引擎和大量的代码.
我已经尝试跟踪所有分配并确保它们在运行时没有被释放或忘记,以便在播放时不会调用GC.多数民众赞成基本上我能想到的所有,我不知道还有什么可以使它lagg
而且我怀疑它是网格的聚合数,因为即使它们是高质量的,我在游戏中添加了一个选项,让你可以选择低,中,高的图形质量,就像电脑游戏一样,低和高之间的差异介于600-900个顶点之间!我注意到的唯一改进是加载时间.此外,没有任何特殊的后处理效果,灯光,着色器,实时SSS或其中任何一种.只是纹理面孔:P
我正在做的"lagg"随机冻结.我很确定他们是GC,但它可能是别的,因为我认为我已经找到并控制了所有的分配(有很多).由于我的游戏是独立于帧速率的,每当它解冻时,玩家和敌人以及所有东西都"向前跳"以保持同步,这使得已经很难的游戏变得更加困难!
我是剖析和优化的新手.我如何使用android调试工具(或其他第三方工具)来更好地了解我的游戏在运行时的表现,以及何时/为什么它会冻结以便我可以修复它们.
此外,奖金问题:):有没有办法让我看到它如何在没有手机或知道拥有它们的人的情况下在其他手机上执行?比如,即使我没有Droid X也没有我知道的任何人,它在Droid X上的速度有多快
我正在尝试在我的OpenGL ES 2.0引擎中实现在线教程(lighthouse3d.com)中的一些着色器.
问题是由于某种原因,在main()范围内声明的任何变量都会导致整个着色器失败.例如,这失败了:
void main(){
vec4 color;
gl_FragColor = vec4(1.0, 0.5, 0.5, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
但这很完美:
void main(){
//vec4 color;
gl_FragColor = vec4(1.0, 0.5, 0.5, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
我的顶点着色器也会发生同样的事情.(编辑:nvm,似乎只发生片段着色器)使用任何类型的非常量值的唯一方法是使用属性,变化,制服等,例如,这可以作为你会期望:
uniform sampler2D texture;
varying lowp vec4 fragcol;
varying lowp vec2 texco;
void main(){
gl_FragColor = fragcol * texture2D(texture, texco);
}
Run Code Online (Sandbox Code Playgroud)
此外,我在寻找有关GLSL ES(或任何此版本调用)的文档或资源时遇到了很多麻烦.我能找到的就是:http://old.siggraph.org/publications/2006cn/course16/KhronosSpecs/ESLanguageSpec1.10.11.pdf
这是我能找到的与变量声明相关的全部内容:
[snip]没有默认类型.所有变量和函数声明都必须具有声明的类型和可选的限定符.通过指定其类型后跟一个或多个用逗号分隔的名称来声明变量.[snip]
而这正是我所做的:
声明类型:vec4
后跟一个或多个名字:颜色 ;
vec4 color
Run Code Online (Sandbox Code Playgroud)
我很无能为力
编辑: GLES20.glGetError()给出错误1282
我在这里有一个问题......它让我非常紧张.
我正在开发这个游戏,它的功能很棒,所以我在笔记本电脑上拿了一份副本,在远离我的电脑的同时做了一些工作.
长话短说,硬盘失败+糟糕的备份导致我失去了一个非常重要的课程.
有没有办法反编译apk来检索丢失的代码?它不是过于复杂或复杂,只是不经过阅读而无法重写它.单.线.的.码.在整个应用程序中,因为它初始化了很多类并以特定方式加载了一堆东西.
通过快速谷歌搜索,我能够找到apktool,它将其反编译成一堆.smali文件,我认为这些文件不是为人类阅读而设计的.
我需要恢复的只是课堂上一个非常重要的方法.我找到了包含它的smali文件,我想我找到了它开始的行.就像是
.method public declared-synchronized load(Lcom/X/X/game/X;)I
任何帮助都将受到赞赏,因为我不得不在没有这种方法的情况下废弃整个游戏.
我目前正在为一个opengles安卓游戏创建一个OBJ导入器.我对java语言比较陌生,所以我对一些事情并不十分清楚.
我有一个数组,它将保存模型中的顶点数量(以及其他一些数组):
float vertices[];
Run Code Online (Sandbox Code Playgroud)
问题是我在使用给出的输入流读取文件之前不知道模型中有多少个顶点.
我可以填写它,因为我需要这样吗?:
vertices[95] = 5.004f; //vertices was defined like the example above
Run Code Online (Sandbox Code Playgroud)
或者我必须事先将其初始化?
如果后者是这种情况,那么找出文件中顶点数量的好方法是什么?一旦我使用inputstreamreader.read()读取它,它就会转到下一行,直到它读取整个文件.我唯一能想到的就是读取整个文件,计算顶点的数量,然后再读取新的初始化数组中的填充.
有没有办法根据需要动态分配数据?
java android inputstream opengl-es dynamic-memory-allocation
嗨,我有点困惑的事情.
假设我有A类和B类.A是B的超类.如果我有一个返回类型为A的方法,我可以使用它作为返回值:
public class test{
private B b;//remember: A is super class of B so 'public class B extends A'
public test(){
b = new B();
}
public A geta(){
return (A)b;
}
}
Run Code Online (Sandbox Code Playgroud)
因此'geta()'返回的值将是对作为A的'b'实例的引用,例如,如果A有变量X而B有变量Y,我将能够这样做:
test t = new test(); //t.b.X = 5 and t.b.y = 10
A a = t.geta();
a.X = 20 /*This will change the value of X in the instance of B, b, of t...
in other words, t.b.X will also equal 20*/
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助,谢谢你的时间!
android ×5
java ×4
opengl-es ×3
apk ×1
casting ×1
forms ×1
glsl ×1
haxe ×1
html ×1
hxcpp ×1
input ×1
inputstream ×1
javascript ×1
openfl ×1
optimization ×1
profiling ×1
recover ×1
reference ×1
return-type ×1
return-value ×1