好吧,我为这段代码的草率而道歉,但我仍然无法弄清楚如何在这里正确发布代码标签.所以我正在制作一个Android应用程序(Java),我有一个滚动的文本字段.如果用户向下滚动一行并在他们点击下一行时停留在最后一行,如果它很短,那么即使它可能是一行(并且不可滚动),它也会在该元素上向下滚动.我想知道是否有任何方法可以在txtLvlInfo.setText之后立即调用某些内容来将x-scroll值重置为0或其他什么以便始终将其重置为内容的顶部,无论是长还是短.感谢您对此的任何帮助,如果我需要澄清更多,请告诉我.
TextView txtLvlInfo = (TextView) findViewById(R.id.txtLevelInfo);
txtLvlInfo.setMovementMethod(new ScrollingMovementMethod());
switch (v.getId()){
case R.id.row1:
txtLvlInfo.setText("1: My text view is only two lines max and so I set it to scroll, if the user clicks row2 to load that text while having me scrolled down they have to click and pull to drag back down to the top of text view 2 row.");
break;
case R.id.row2:
txtLvlInfo.setText("I only fill line 1 of the two.");
break;
}
Run Code Online (Sandbox Code Playgroud)
_
<TextView
android:textColor="#052027"
android:text=""
android:id="@+id/txtLevelInfo"
android:scrollbars="vertical"
android:layout_alignParentLeft="true" …Run Code Online (Sandbox Code Playgroud) 我试图不将我的整个基于图块的地图加载到内存中以节省RAM客户端.地图将是巨大的,已经是需要1GB客户端(多层地图).
我已经对Game Dev SO有了一些看法.我正在尝试将我的游戏地图的区域/块加载到内存中(即300x300),然后当玩家移动100步时移动阵列并根据方向加载100个新的图块.我已经尝试过这个版本的缩放版本,现在有一个通用的问题.
当playerX/Y坐标位于地图的周边时(这会导致块在地图之外),我需要帮助
这是我到目前为止所提出的内容(注意:玩家位于chunk和chunk的中心总是奇数大小)......它有以下问题(当角色位于地图的边缘时):
将characterX/Y更改为0,0,左下角(0,2)坐标将错误地为7
0,0,0
0,1,1
7,1,8
将characterX/Y更改为8,8,并且块的右上角(2,0)坐标将错误地为6
1,1,6
1,1,0
0,0,0
这是SSCCE:
public class MapChunkLoad {
public static void main(String[] args) {
short[] groundLayer;
int mapWidth = 9;
int mapHeight = 9;
int chunkWidth = mapWidth / 3; //3
int chunkHeight = mapHeight / 3; //3
int characterX = 8;
int characterY = 8;
String map = "1, 1, 1, 1, 1, 1, 1, 1, 7, " +
"1, 8, 8, 1, 1, 1, 1, …Run Code Online (Sandbox Code Playgroud) 我有一个可怕的时间提出一个很好的问题标题...对不起/请编辑,如果你的大脑比我的大脑少.
我在处理我的游戏地图客户端方面遇到了一些问题.我的游戏是基于平铺的,使用32x32像素图块.我的第一张游戏地图是1750 x 1750瓷砖.我有一堆层客户端,但设法将其减少到2(地面和建筑物).我之前将整个地图的图层加载到内存(短数组)中.当我跳到2200 x 2200瓷砖时,我注意到一台旧电脑存在内存不足(1GB +)的问题.我希望在byte和short之间有一个数据类型(我的目标是~1000个不同的tile).我的游戏支持多种分辨率,因此玩家可见空间可以显示23,17个区块,800x600分辨率,最高可达45,29个区块,1440x1024(加)分辨率.我使用Tiled绘制我的地图并使用类似于以下的格式将2层输出到单独的文本文件中(0,0,2,0,3,6,0,74,2 ......
在许多SO问题和一些研究的帮助下,我想出了一个地图分块策略.使用玩家的当前坐标作为中心点,我将足够的图块加载到视觉图的大小的5倍(最大的是45*5,29*5 = 225,145个图块).玩家总是被吸引到中心,地面在他/她下方移动(当你向东走时,地面向西移动).绘制小地图,在所有方向上显示一个屏幕,是可见地图大小的三倍.请参阅下面(非常缩小的)视觉表示来解释比我可能解释的更好.

我的问题是:当玩家从原始中心点(chunkX/Y)坐标移动"1/5块大小的瓷砖"时,我呼吁游戏重新扫描文件.新扫描将使用播放器的当前坐标作为其中心点.目前我遇到的这个问题是我的电脑上的重新设置需要.5s(这是相当高的规格).地图不会更新为1-2平铺移动.
为了解决上面的问题,我尝试在一个新线程中运行文件扫描(在点击1/5点之前)到一个临时数组缓冲区.然后,一旦完成扫描,我会将缓冲区复制到真实数组中,并调用repaint().我随机地看到了一些跳绳问题,这没什么大不了的.更糟糕的是,我看到它将地图的随机部分绘制为1-2帧.代码示例如下:
private void checkIfWithinAndPossiblyReloadChunkMap(){
if (Math.abs(MyClient.characterX - MyClient.chunkX) + 10 > (MyClient.chunkWidth / 5)){ //arbitrary number away (10)
Runnable myRunnable = new Runnable(){
public void run(){
logger.info("FillMapChunkBuffer started.");
short chunkXBuffer = MyClient.characterX;
short chunkYBuffer = MyClient.characterY;
int topLeftChunkIndex = MyClient.characterX - (MyClient.chunkWidth / 2) + ((MyClient.characterY - (MyClient.chunkHeight / 2)) * MyClient.mapWidth); //get top left coordinate of chunk
int topRightChunkIndex = topLeftChunkIndex + MyClient.chunkWidth - 1; //top right …Run Code Online (Sandbox Code Playgroud) 我有一个客户端服务器应用程序,已经运行了一段时间了.
突然,我尝试从客户端连接时收到以下错误.我发现服务器端没有错误.证书未过期,我没有更改代码.在Google上搜索此错误时,我看不到任何结果.
javax.net.ssl.SSLProtocolException: ChangeCipherSpec message sequence violation
at sun.security.ssl.HandshakeStateManager.changeCipherSpec(Unknown Source)
at sun.security.ssl.Handshaker.receiveChangeCipherSpec(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at sun.security.ssl.AppInputStream.read(Unknown Source)
at sun.security.ssl.AppInputStream.read(Unknown Source)
at java.io.DataInputStream.readUnsignedShort(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at com.jayavon.game.client.cj.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
客户代码:
//load your key store as a stream and initialize a KeyStore
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
//if your store is password protected then declare it (it can be null however)
String tsName = "res/gamedata/truststore";
char[] trustPassword = "--REMOVED--".toCharArray();
//load the …Run Code Online (Sandbox Code Playgroud) 如果我只想检查某些东西是否不可能(即,我不会使用类似的东西if(possible)),我应该命名布尔值notPossible并使用if(notPossible)或者我应该命名它possible并使用if(!possible)吗?
而只是可以肯定,如果我也有检查其是否是possible,我会说出布尔可能和使用if(possible)以及else,对不对?
这是我的JTextField的正则表达式不超过x个字符,并且不包括除字母或空格以外的任何内容. 由于某种原因,它允许[]和\字符. 这真让我抓狂.我的正则表达式错了吗?
package com.jayavon.game.helper;
import java.awt.Toolkit;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class CharacterNameCreationDocument extends PlainDocument {
private static final long serialVersionUID = 1L;
private int limit;
public CharacterNameCreationDocument(int limit) {
super();
this.limit = limit;
}
public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
if (str == null || (getLength() + str.length()) > limit || !str.matches("[a-zA-z\\s]*")){
Toolkit.getDefaultToolkit().beep();
return;
} else {
super.insertString(offset, str, attr);
}
}
}
Run Code Online (Sandbox Code Playgroud) 这是我想要做的.如果主键(entity_id)存在,我想插入此表或更新记录.我只是遇到了SQL语法的问题.它不会让我有比第一个'VALUES'更多的参数,所以我得到以下错误:
参数索引超出范围(7>参数个数,即6).
int insertOrUpdateSuccess = MyDBSyncher.UPDATE("INSERT INTO " + DB_NAME + ".entities " +
"(`entity_id`, `wai_type`, `wai_id`, `character_id`, `looted`, `creation_time`) " +
"VALUES ((?), (?), (?), (?), (?), (?)) " +
"ON DUPLICATE KEY UPDATE " +
"`wai_type`='(?)', `wai_id`='(?)', `character_id`='(?)', `looted`='(?)'",
new String[]{tmpEntityId, values[0], values[1], values[2], values[3], values[4],
values[0], values[1], values[2], values[3]});
Run Code Online (Sandbox Code Playgroud)
这有点像我想的那样,但我不能解释它的需要.很抱歉可能会发布重复内容.
哦,这是我的代码中的UPDATE()函数:
public static int UPDATE(String updateStatement, String[] params){
try {
if(!conn.isClosed()) {
logger.trace("Successfully connected to MySQL server using TCP/IP - " + conn);
stat = conn.prepareStatement(updateStatement); …Run Code Online (Sandbox Code Playgroud) 因此,在重写一些代码时,我遇到了以下内容:
方法1
while ( iter.hasNext() ) {
Object obj = iter.next();
if ( obj instanceof Something ) {
returnValue = (Something) obj;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我在没有太多考虑的情况下将其重新编写为以下内容(重写的实际目的是为此方法中的其他逻辑):
方法2
while ( (iter.hasNext()) && (returnValue == null) ) {
Object obj = iter.next();
if ( obj instanceof Something ) {
returnValue = (Something) obj;
}
}
Run Code Online (Sandbox Code Playgroud)
我个人对这两者都没有任何强烈的偏好,并且两种方法都没有看到任何错误.任何人都可以想到使用这两种方法的好处或后果吗?返回变量returnValue.如果那是方法中的最后一个块,人们会怎么想?它刚刚返回?
编辑:所以这就是我正在做的事情:目前这个方法需要一组授权并验证它们 - 返回一个布尔值.此方法允许分组,因此您可以指定至少一个或全部(意味着如果至少一个授权有效,则传递整个集合).但是,此方法不支持授权级别,而我正在对其进行更改,以便每个级别都可以指定不同的分组.所有这些都只是背景信息...与上面的代码没有多大关系 - 另一种方法用于执行上面的代码块.
Android market://details?id=<pname>链接不适用于我的其中一个应用,这让我感到疯狂.我拉我的头发有没有人有任何想法?这是我的"Wrap It Up Box"链接,只是出现"Not Found" "The requested item could not be found."(下面的最后一个链接).如果您搜索Wrap It Up Box它显示就好了,只是直接链接到它不起作用.
public void onClick(View v){
switch (v.getId()){
case R.id.morebubrubsoundboardBtn:
Intent goToMarket = null;
goToMarket = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.jayavon.bubrubsoundboard"));
startActivity(goToMarket);
break;
case R.id.morefarmvillehelperBtn:
Intent goToMarket1 = null;
goToMarket1 = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.jayavon.farmvillehelper"));
startActivity(goToMarket1);
break;
case R.id.morefarmvillehelperfreeBtn:
Intent goToMarket2 = null;
goToMarket2 = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.jayavon.farmvillehelperfree"));
startActivity(goToMarket2);
break;
case R.id.morefishvillehelperBtn:
Intent goToMarket3 = null;
goToMarket3 = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.jayavon.fishvillehelper"));
startActivity(goToMarket3);
break;
case R.id.morefishvillehelperfreeBtn:
Intent goToMarket4 = null;
goToMarket4 …Run Code Online (Sandbox Code Playgroud) 在我的游戏的Java服务器上,我运行'sudo yum update',现在我在尝试通过我的游戏客户端进行连接时出现以下错误:
[2015-07-26 01:58:12] [Thread-2] INFO - Socket class: class sun.security.ssl.SSLSocketImpl
[2015-07-26 01:58:12] [Thread-2] INFO - Remote address = /54.165.60.189
[2015-07-26 01:58:12] [Thread-2] INFO - Remote port = 34215
[2015-07-26 01:58:12] [Thread-2] INFO - Local socket address = /192.168.1.4:59805
[2015-07-26 01:58:12] [Thread-2] INFO - Local address = /192.168.1.4
[2015-07-26 01:58:12] [Thread-2] INFO - Local port = 59805
[2015-07-26 01:58:12] [Thread-2] INFO - Need client authentication = false
[2015-07-26 01:58:17] [Thread-2] INFO - Cipher suite = SSL_NULL_WITH_NULL_NULL
[2015-07-26 01:58:17] [Thread-2] …Run Code Online (Sandbox Code Playgroud) java ×9
android ×2
ssl ×2
arrays ×1
boolean ×1
conditional ×1
encryption ×1
google-play ×1
mysql ×1
naming ×1
openjdk ×1
regex ×1
rewrite ×1
scroll ×1
sql-update ×1
sslexception ×1
textview ×1
while-loop ×1
yum ×1