我和Unity3d一起工作了一段时间,发现它是OnGUI()或GUITextures的2D部分太笨拙.此外,即使在Unity3d上完成的最小游戏也至少下载10MB,这对2D游戏来说太过分了.
所以,我目前正在寻找2D引擎.我已经尝试过Cocos2D,但它只是iOS,我不想将所有内容重写为Android的另一种语言(因此,例如,Android的Cocos2d的Java端口不是一个选项).相反,我想编写一次代码,并且最简单的麻烦在iOS,Android和Windows Phone 7上进行部署.我同时拥有Mac和Windows.
为了更详细,以下是我对引擎的要求:
我找到了以下引擎:
有没有办法在每次在Eclipse中构建Android应用程序时自动增加版本代码?
根据http://developer.android.com/guide/publishing/versioning.html,您必须手动增加版本代码AndroidManifest.xml
.
我明白,你必须在每次构建之前运行一个脚本,例如解析AndroidManifest.xml文件,找到版本号,增加它并在构建本身启动之前保存文件.但是,我无法了解Eclipse如何以及是否支持在构建之前/之后运行脚本.
我发现这篇关于配置ant builder的文章,但这并不完全是关于Android的,我担心这会让Android的预定义构建步骤过多?
应该是一个常见的问题,你是如何解决的?
好吧,人们可以手动执行此操作,但是一旦忘记执行此项工作,您将获得具有相同编号的不同版本,并且整个版本控制毫无意义.
我在C#类中有一些字段,我使用反射初始化.编译器显示CS0649警告:
Field
foo' is never assigned to, and will always have its default value
null'(CS0649)(Assembly-CSharp)
我想仅禁用这些特定字段的警告,并仍然显示该类的其他类和其他字段的警告.可以为整个项目禁用CS0649,还有更细粒度的东西吗?
在许多Android设备上,您可以通过输入来进入Phone应用程序的秘密设置菜单
*#*#4636#*#*
http://technology-headlines.com/2010/09/17/4636-android-secret-codes/
还有一些其他代码.
是否也可以通过编程方式打开这些东西?
我试过这个:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:*#*#4636#*#*"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但它只是尝试发起电话,当然失败,挂机并关闭手机应用程序.
编辑:电话*#*#4636#*#*以"未知"的形式保存到我的联系人列表中,但呼叫失败.实际上,只有当您在手机应用程序中的按钮上手动输入而不按最后一次调用时,密码才有效.它可能只是Phone应用程序的隐藏功能,与调用无关吗?如果是这样,可以通过编程方式打开手机应用程序并模拟按钮上的输入.
根据这篇文章,以 编程方式按下另一个应用程序活动中的按钮
这应该是不可能的,因为如果非根电话上的任何应用程序可以启动其他应用程序并按下那里的东西,它可以接管整个设备的控制并做坏事.
这里有一些更多的细节,但我想这个帖子有点旧,即使它有效,它可能已经在当前的Android版本中更改:http: //mylifewithandroid.blogspot.de/2009/01/generating-keypresses-programmatically.html
那么,没有更简单的方法来输入密码?
我有一个以下风格的自定义对话框:
<style name="webtogo_app_style" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
它显示了一个无边框对话框,后面的任何内容都会(稍微)变暗.我的设计师希望背后的一切都比Android的默认设置更暗,但不是完全黑的.
这有什么设置吗?
我能想到的唯一解决方法是使用全屏活动而不是对话框,只需用半透明颜色填充整个屏幕(例如#99000000),然后在其上绘制对话框.有没有更简单的方法?
谢谢!
在Java中有一个很好的库类java.util.Stack,它实现了push和pop方法.Objective C中有类似的东西吗?
我发现只有MutableArray.看起来很奇怪我必须实现像堆栈这样的基本东西,必须有像"NSStack","NSQueue"和其他类似的东西.
在Android上,可以通过http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_TOUCHSCREEN_MULTITOUCH以编程方式检查设备是否支持多点触控.
是否也可以准确检查设备在多点触控中可识别的手指数量?例如,据我所知,从2.x开始支持双指多点触控,但从4.0开始支持3指多点触控.但是我们的客户报告说有一些带有4.x的新设备仍然不支持3个手指,这使得对Android操作系统版本的简单检查毫无用处.
一种可能的解决方案是在每个设备的某些字典中存储它支持的手指数量最多,但是有1k +设备在那里,而新的设备不断出现它是不可行的.
有解决方案吗
编辑:事实上我刚刚发现客户报告的问题是HTC One系列的设备问题.请参阅http://www.mobiflip.de/htc-one-serie-multitouch-beschraenkung-aufheben-tipp/用户必须在设置中关闭特定于设备的手势识别才能使5个手指正常工作.因此,该设备甚至可能显示5个以上的手指支持.我想我们只会检查设备的型号并显示特殊的弹出窗口,告诉用户关闭HTC特定的设置.
我有一个活动,EditText
附近有许多控件和复选框.默认情况下,大多数EditTexts
都被禁用.
当我打开活动时,一些随机EditText
控件会获得焦点(围绕它的框架),如果点击它,即使EditText
已禁用屏幕键盘,当您按下屏幕键时也不会显示任何文本.
另外,我的整个布局都包含在ScrollView
.当你滚动时,一些随机的EditText
s得到焦点.它可以是最低的可见光,也可以是最高的可见光,有时可以是中间的一个,有时一个在可见区域之外.
因为布局的随机元素获得焦点,所以当您打开它时,Activity会随机向下滚动,这非常烦人.
我想这是Android的错误,但是有解决方法吗?
停止EditText获得焦点在Activity启动处理只有1的情况EditText
,你可以告诉它失去焦点,以便虚拟元素可以获得它.在我的情况下,虚拟元素在onResume或onCreate中都没有获得焦点android:focusable="true" android:focusableInTouchMode="true"
我应该检查所有EditText控件(其中有12个)并告诉他们失去焦点吗?什么与滚动,因为它似乎焦点随机跳跃.
我正在设置TextView
使用setTypeface()
方法的字体.
不幸的是,在改变文本视图的字体之后,TextView
通常保持与先前相同的大小.如果新字体略宽于原始字体,则TextView
可能会变长1行,但布局不会更新.在某些情况下,我看到2行文本视图因此而从底部被裁剪.
如果TextView
在a内ScrollView
,则2行TextView
可以显示为带有滚动条的1行,即使有足够的空间只显示2行而不滚动.
显然,TextView
如果在字体更改后它变为1行,操作系统会忘记更新高度.
这有什么解决方法吗?TextView
设置新字体后,我可以手动触发高度更新吗?
谢谢!
我打电话txt.setTypeface(someFont);
右后setContentView()
既没有txt.requestLayout()
也没txt.forceLayout()
帮助.
可能重复:
在Objective C中创建一个抽象类
在Java中,我喜欢使用抽象类来确保一堆类具有相同的基本行为,例如:
public abstract class A
{
// this method is seen from outside and will be called by the user
final public void doSomething()
{
// ... here do some logic which is obligatory, e.g. clean up something so that
// the inheriting classes did not have to bother with it
reallyDoIt();
}
// here the actual work is done
protected abstract void reallyDoIt();
}
Run Code Online (Sandbox Code Playgroud)
既然如果B类继承自A类,它只需要实现reallyDoIt()
.
如何在Objective C中做到这一点?它可能吗?在Objective C中它可行吗?我的意思是整个范式似乎在Objective C中有所不同,例如我从中理解的是没有办法禁止覆盖一个方法(比如Java中的'final')?
谢谢!
在Android上,用户可以在桌面上放置一个小部件,然后通过长时间触摸移动它并在按住的同时移动手指.
是否可以通过长时间触摸以编程方式获取屏幕上移动小部件的位置?
我需要我的桌面小部件才能知道它是否靠近设备屏幕的边缘.根据它是在桌面的顶部还是在底部,将选择窗口小部件的不同布局.
我希望这个位置不是以像素为单位给出的,而是以一对0为基础的索引给出的.例如,如果设备可以在桌面上显示4x7单元格,则右下角的小部件应该具有坐标(3,6).此外,应该以某种方式询问设备有多少单元格适合屏幕.
还是我误解了什么?
在 Android 上,要侦听系统范围的事件,例如 WiFi 打开/关闭、位置已更改、设备现在处于漫游状态以及许多其他事件,可以使用 BroadcastReceiver 订阅这些事件。
iOS 中使用什么技术来实现类似目的?是否存在操作系统可以通知自定义 3d 方应用程序的所有此类全局事件?
我是 iOS 新手,在文档中没有找到任何内容,可能我只是不知道要查找的正确关键字。
谢谢
假设我在C++类中有以下构造函数:
MyClass::MyClass()
{
char* buffer = malloc(100);
if (0 != someD3DXCallThatCanFail(..., buffer, ...))
{
free(buffer);
throw MyException(L"some message");
}
char* buffer2 = malloc(200);
if (0 != anotherD3DCallThatCanFail(..., buffer2, ...))
{
free(buffer);
free(buffer2);
throw MyException(L"another message");
}
.. more code here where buffer and buffer2 are still used
free(buffer);
free(buffer2);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我讨厌malloc/free和new/delete,但不幸的是我需要使用缓冲区来加载纹理,然后将纹理传递给ID3D10ShaderResourceView,ID3D10Buffer,顶点缓冲区等.所有这些都需要指向缓冲区的指针.
我试图使用异常而不是返回错误代码.我还希望在需要它们的地方创建缓冲区,并在不再需要它们之后立即释放它们.
然而,看起来很难看的是,如果出现错误,无论我是否返回错误代码或抛出异常,我仍然应该记得清理到那时为止创建的任何缓冲区.如果我有10个缓冲区和10个可能的错误点,我将不得不调用free()100次(在每个错误情况下记得释放每个缓冲区).
现在假设我或者更糟糕的是,我的同事想要改变一些逻辑,比如在中间的某个地方添加另一个缓冲区.现在,他必须通过方法的其余部分查看可能发生的所有错误,并在每个这样的位置为该缓冲区添加free().如果他赶时间,他可以很容易地忽略一些这样的地方,并且你有内存泄漏.
这也极大地淹没了代码.
finally关键字可以解决Java或C#中的问题.无论代码在哪里发生异常,我仍然会在"finally"中清理所有缓冲区(顺便说一句,你不需要使用垃圾收集).在我理解的C++中,我可能必须为任何这样的缓冲区创建一个成员变量,并在析构函数中确保清理缓冲区.看起来对我来说也很难看,因为名为"pBuffer"的成员变量,即使是私有变量,也只是垃圾,因为它只在一个方法中使用(在本例中是构造函数),并且其余部分始终为NULL.时间.
必须是一个常见问题,但我没有设法使用搜索找到答案.谢谢!
android ×9
ios ×2
objective-c ×2
2d ×1
abstract ×1
background ×1
buffer ×1
build ×1
c# ×1
c++ ×1
class ×1
constructor ×1
desktop ×1
dialog ×1
eclipse ×1
events ×1
exception ×1
focus ×1
fonts ×1
free ×1
game-engine ×1
marmalade ×1
methods ×1
multi-touch ×1
position ×1
screen ×1
stack ×1
subscribe ×1
textview ×1
transparent ×1
version ×1
virtual ×1
widget ×1