寻找适用于一般Blackberry开发或应用工具包的工具包/ SDK.像MVC框架一样吗?
编辑:这对我来说更有意义,因为我已经离开了代码,谢谢你的帮助.
刚刚通过Coding Horror发现堆栈溢出,它看起来很棒.我想向社区询问我目前正在尝试解决的问题.
我正在使用j2me为midp 2.0手机开发一款roguelike游戏.该项目仍然处于开发的基本阶段,因为我弄清楚它是如何运作的.我目前坚持的部分与线程有关.
游戏有一个自定义HaxCanvas类,它扩展了GameCanvas和Implements runnable.它的run方法调用repaint()然后休眠50 ms,导致帧速率为20 FPS.这使我可以编写游戏的其余部分,而无需在任何地方放置重绘,并且应该使动画和效果更容易在以后进行.(至少在理论上).
游戏的流程由GameManager类控制,该类循环遍历地图上的所有NPC,轮流进行,直到玩家轮到.此时我需要输入以允许玩家四处移动和/或攻击事物.我最初是在调用我gameManager.runUntilHeroTurn()的keyPressed方法HaxCanvas.然而,在阅读了j2me系统线程之后,我意识到在回调中放置一个可能会运行一段时间的方法是一个坏主意.但是我必须使用keyPressed来输入handeling,因为我需要访问数字键,并且getKeyStates()不支持这个.
Sofar我尝试将我的游戏循环放入其自己的线程中导致了灾难.在游戏运行了几次之后,出现了一个没有堆栈跟踪的奇怪的"未捕获的ArrayIndexOutOfBoundsException".
所以我想我的问题是:
对于j2me中的"回合制"游戏,实现游戏循环的最佳方式是什么,只有当玩家轮到你时才允许输入游戏?
我正在运行J2ME应用程序并遇到一些严重的内存问题.
所以我构建了另一个步骤来清除巨大的输入字符串并处理其数据并清除它.但是,直到我开始并没有解决问题input = null,而不是input = "".
在内存管理方面不应该是一样的吗?有人可以解释一下我的区别吗?
谢谢,
rAyt
for(int x = 0; x <= ChunksPartCount; x++)
{
_model.setLoading_bar_progress((x * ChunkSize));
input += web_service.FullCompanyListChunksGet(x, ChunkSize);
if((x * ChunkSize) > 5000)
{
ReadXML(input);
input = null;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我仍然希望将答案标记为解决方案.我认为mmyers的言论正朝着正确的方向发展.
我开始在java(我正在学习microedition),我得到了这个错误:"int无法取消引用"在下面的类中:
class DCanvas extends Canvas{
public DCanvas(){
}
public void drawString(String str, int x, int y, int r, int g, int b){
g.setColor(r, g, b); //The error is here
g.drawString(str, x, y, 0); //and here
}
public void paint(Graphics g){
g.setColor(100, 100, 220);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?好吧,我来自PHP和ECMAScripts,我能够以这种方式传递我的函数参数,所以我真的不明白这个错误.
我目前正在使用Netbeans中的MIDlets(我正在使用Visual MIDlet),并且正在抛出NullPointerException,但我不知道为什么.
注意:只有在按下"确定命令"按钮时,程序在模拟器上运行时才会抛出异常.
这是我得到的错误
TRACE: <at java.lang.NullPointerException: 0>, Exception caught in Display class
java.lang.NullPointerException: 0
at javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener(), bci=46
at com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=74
at com.sun.midp.chameleon.layers.SoftButtonLayer.soft1(), bci=37
at com.sun.midp.chameleon.layers.SoftButtonLayer.keyInput(), bci=36
at com.sun.midp.chameleon.CWindow.keyInput(), bci=38
at javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleKeyEvent(), bci=17
at com.sun.midp.lcdui.DisplayEventListener.process(), bci=277
at com.sun.midp.events.EventQueue.run(), bci=179
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)
我删除了与异常无关的所有代码,以便您可以更轻松地阅读它.下面是一个简化版本,如果我有代码,它抛出上述异常.
package stMidlet;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class StoryMidlet extends MIDlet implements CommandListener {
private boolean midletPaused = false;
private Command commandOk1;
private Form form1;
private TextField textField1;
public StoryMidlet() {
commandOk1 = new Command("Ok", Command.OK, 1); …Run Code Online (Sandbox Code Playgroud) 首先,向大家致意,并感谢您对我的问题感兴趣.
我目前正在一家移动创业公司工作.我们的产品是适用于Android,iOS和BlackBerry设备的通信应用程序,我们正在寻求扩展到一些诺基亚平台.
我对Symbian的细节知之甚少,因为我之前从未在平台上进行过实际编程,但这是我能够收集到的所有信息.
支持的平台是Symbian S60,Symbian ^ 3/Symbian"Anna",Maemo + Meego.
为了实现这一目标,我们可以使用多种工具,但我们不确定使用哪种工具.
诺基亚Qt似乎不支持Symbian S40设备(我们似乎坚持使用J2ME)和Symbian S60设备之前的第3版功能包1
在Symbian的C++中,我们不能依赖于C++的STL.这意味着我们可以创建相同软件的两个版本,也可以创建我们自己的与Symbian兼容的STL(我想避免这种情况).
在团队中,共识似乎是将其分为两个逻辑块:
记住所有这些信息,我问:
这个问题的一般方法是什么?提到的那个是否有任何相当大的缺陷,即在旧平台上与Qt不兼容或不一致?
在列出的所有诺基亚设备上,我们应该避免哪些陷阱来确保应用程序的兼容性和性能?
有没有办法绕过Symbian的STL限制?我们能以某种方式捆绑Qt资源吗?
欢迎提出建议和其他方法.感谢您的所有反馈.
我正在编写针对J2ME中Java Personal Basis Profile的代码.我需要测量AttributedString的宽度(以像素为单位).
在Java SE中,我从AttributedString 获取一个AttributedCharacterIterator并将其传递给FontMetrics #getStringBounds,但在J2ME PBP中,FontMetrics没有getStringBounds方法或任何其他接受CharacterIterator的方法.
我该怎么办?
我正在运行带有S60 SDK的Eclipse脉冲星用于j2me开发和使用LWUIT.jar但我在清理项目时遇到以下错误
Errors occurred during the build.
Errors running builder 'Preverification Builder' on project 'YokeApp'.
Problems encountered while deleting resources.
Could not delete 'H:\Bitbucket\6-6-12 Yoke ME\yoke-j2me\.mtj.tmp\verified\libs\LWUIT_MIDP.jar'.
Problems encountered while deleting files.
Could not delete: H:\Bitbucket\6-6-12 Yoke ME\yoke-j2me\.mtj.tmp\verified\libs\LWUIT_MIDP.jar.
Problems encountered while deleting resources.
Could not delete 'H:\Bitbucket\6-6-12 Yoke ME\yoke-j2me\.mtj.tmp\verified\libs\LWUIT_MIDP.jar'.
Problems encountered while deleting files.
Could not delete: H:\Bitbucket\6-6-12 Yoke ME\yoke-j2me\.mtj.tmp\verified\libs\LWUIT_MIDP.jar.
Run Code Online (Sandbox Code Playgroud)
我将LWUIT.jar添加到我在项目中创建的文件夹/ lib /中.
我不明白为什么我收到这个错误?
最初Eclipse被加载,然后我去了文件夹mtj.tmp\verified\lib\LWUIT_MIDP.jar并删除它.它已被成功删除,但是当我清理我的项目时它再次创建然后我运行我的项目之后我试图通过中止它的竞争执行来清理我的项目但是什么?? ...同样的问题又回来了如上所述.为什么会发生这种情况并解决它?
我有一个正在研究的Blackberry项目,我需要将使用UTF-16LE(小端)编码的字符串字节数组转换为UTF-16BE(大端)编码和字符串的字节数组.反之亦然.我正在连接的服务器是以UTF-16LE编码发送BlackBerry设备字节数组的字符串,但设备本身不支持UTF-16LE.当我尝试将字节数组解码回字符串时,字符串难以辨认.但是,该设备支持UTF-16BE.我还需要反转这个过程,即将具有UTF-16BE编码的字符串的字节数组转换为服务器期望的内容(UTF-16LE).谢谢.
我无法在设备上执行此操作:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16LE");// throws UnsupportedEncodingException
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16BE");//works
Run Code Online (Sandbox Code Playgroud) 我们可以在Blackberry中获得APN名称,但我知道有没有办法在应用程序中设置APN.请帮我解决这个问题?
提前致谢