小编Hae*_*ian的帖子

应用程序再次打开错误的纹理

我正在使用libgdx库开发游戏.

当我第一次加载程序时,纹理加载完美,一切都很好

在此输入图像描述

当我关闭应用程序,并再次加载它(我假设Android以某种方式从内存缓存它) - 错误的纹理被加载.

在此输入图像描述

如果我从历史中清除游戏,然后再试一次,它就能完美运行.

- 它目前的工作方式如下 - 我使用a SpriteBatch绘制实际游戏.我有单独的SpriteBatches来绘制背景和界面(加载很好).在处理一个级别时,我处置了SpriteBatch.

for (Block block : world.getDrawableBlocks(this.width, this.height))
        {
            spriteBatch.draw(block.getTexture(1f), block.getPosition().x, block.getPosition().y, block.SIZE_X, block.SIZE_Y);
        }
Run Code Online (Sandbox Code Playgroud)

-

我使用缓存加载的纹理我自己编写,以防止同一图像被加载多次.我在创建应用程序时清除缓存.然后我在对象本身保留一个Texture/TextureRegion,它是通过获得的.getTexture()

这是我用来加载纹理的代码

public static Texture loadTexture(String path)
    {
        //Do we have the texture cached?
        if (textures.containsKey(path))
        {
            //return it
            return textures.get(path);
        }
        else 
        {
            //load it from the filesystem
            Texture texture = new Texture(Gdx.files.internal(path));

            //cache it
            textures.put(path, texture);

            //return it
            return texture;


        }
    }
Run Code Online (Sandbox Code Playgroud)

我附加了一个调试器,正在加载的纹理DO具有正确的路径.

在图片示例中,交换的纹理碰巧是字体的一部分,这是我的缓存中存储的任何内容.

-

所以,我宁愿被困在这里.

现在我正在使用在处置时手动终止进程的顽皮解决方案: …

java android libgdx

13
推荐指数
1
解决办法
1674
查看次数

让用户在部署后编辑配置文件

我有一个程序,我将使用VS内置的部署包来部署.

现在我有一个app.config文件,我希望用户能够修改(即使在运行程序之后),但我不知道安装程序在哪里转储文件,我不希望用户根源他们的文件系统.

我在想的是 - 我要求用户指定一些目录(自从它游戏以来需要发生) - 我在那里检查配置文件,如果它不在那里,我从程序可以根目录复制它看 - 然后读取'save'文件夹中的那个.

那说,它听起来像一个非常丑陋和hacky解决方案 - 有更好的解决方案吗?

c# deployment app-config

8
推荐指数
1
解决办法
4453
查看次数

当canShowCallout为YES时必须实现标题

我试图在我的地图注释上显示标注时遇到此异常,即使标题已设置.

这是我在MapAnnotation类中使用的init方法:

- (id)initWithTitle:(NSString *)ttl subtitle:(NSString *)sub andCoordinate:(CLLocationCoordinate2D)c2d {
    titles = ttl;
    coordinate = c2d;
    subtitle = sub;
    return self;
}
Run Code Online (Sandbox Code Playgroud)

然后,在另一个类的某个地方,我正在创建注释(两种不同方法中的2):

MapAnnotation *annotation = [[MapAnnotation alloc] initWithTitle:[formatter stringFromDate:sourceDate] subtitle:@"test" andCoordinate:CLLocationCoordinate2DMake(point.latitude, point.longitude)];
[self.mapView addAnnotation:annotation];
Run Code Online (Sandbox Code Playgroud)

这是注释方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
    if (annotation == mapView.userLocation)
        return nil;

    static NSString *s = @"ann";
    MKAnnotationView *pin = [mapView dequeueReusableAnnotationViewWithIdentifier:s];
    if (!pin) {
        pin = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:s];
        pin.canShowCallout = YES;
        pin.image = [UIImage imageNamed:@"pin.png"];
        pin.calloutOffset = CGPointMake(0, 0);
    }
    return pin;
} …
Run Code Online (Sandbox Code Playgroud)

map mkannotation mkannotationview ios

8
推荐指数
1
解决办法
4464
查看次数

在linux中格式化bash - printf align middle

这行代码:

printf 'ddd %-22s dddd \n' "eeeeeee"
Run Code Online (Sandbox Code Playgroud)

与左对齐.

我可以用它来将它与中心对齐如下:

ddd      eeeeeee      dddd
Run Code Online (Sandbox Code Playgroud)

bash printf

5
推荐指数
1
解决办法
4946
查看次数

具有负索引的数组

我有一个数组,我用它来存储我正在进行的游戏的地图数据.

MyMapType[,,] map; 
Run Code Online (Sandbox Code Playgroud)

我使用固定数组而不是Collection的原因是因为固定数组的工作速度要快得多.

现在我的问题是,我想支持游戏中的负z级别.所以我希望能够访问负面索引.

如果这是不可能的,我想到了一对其他解决方案.

我认为可能的解决方案是将地面级别设为任意数字(比如10),任何小于10的都可以被认为是负数.但如果不使用它,这不会使数组大10倍吗?

我考虑的另一个解决方案是"滚动我自己的",你有一个2D数组的字典,其中Z级保持在List中作为索引.但这是更多的工作,我不确定它是否缓慢.

总结一下 - 创建支持负索引的数组的任何方式?如果没有 - 是否有一种"模仿"这种行为的干净方式,而不会牺牲太多的CPU时间或RAM - 注意这些游戏地图可能最终变大,需要不断访问.

c# arrays multidimensional-array

4
推荐指数
2
解决办法
2万
查看次数

如何在不丢失 TZ 信息的情况下解析此 DateTime?

我有一堆字符串是从某个数据库转储的 DateTime 值......可能是 MySql。我无法控制结构。

字符串如下所示:

2011-05-17 00:00:00 等/格林威治标准时间

我找到了涉及在解析之前替换“Etc/GMT”的解决方案。这闻起来很糟糕。

是否有一步解决方案可以将此字符串转换为 DateTime 而不剥离时区信息?

c# datetime parsing

3
推荐指数
1
解决办法
1175
查看次数

更改皮肤中的字体大小

我正在使用libgdx编写游戏,并从教程中借用了skin.json(和相关文件).

正在使用的字体(默认)在更密集的屏幕上以丑陋的方式缩放,因此我使用自己非常大的字体生成 - 在游戏本身中,我将其缩放到合理的大小(基本上我使用BitmapFont.scale).我现在使用的字体是前一个字体的3倍.

我在skin.json文件中更改了要使用哪种字体的引用,因此,我的所有按钮,标题和其他内容都显示了大量字体.

有没有办法缩放.json文件中的字体?或者代码中的其他任何地方?皮肤没有setFont()功能,所以我无法创建缩放的BitmapFont并分配它)

java android skin libgdx

3
推荐指数
3
解决办法
4235
查看次数

如何在emgu cv中从网络摄像头获取视频流?

我在c#中使用emgu cv.

我需要知道如何从emgu cv中的网络摄像头(默认网络摄像头)获取视频流?

c# webcam emgucv

2
推荐指数
1
解决办法
2万
查看次数

确定位置的地形类型

我正在尝试确定任意位置的地形类型。例如,如果我使用谷歌地图,我可以通过地图上显示的颜色直观地看到什么地形是森林、建筑区域和水域。

我正在尝试查看是否可以使用任何类型的 API 调用来获取此基本信息。我不需要它非常精确,而且我真的不需要确定确切的地形类型(所以像 Corine Land Cover 这样的东西纯粹是矫枉过正)。我需要每隔几分钟提出一些这样的请求。我发现一个大约三年前提出的问题并没有真正解决,我希望现在有所改变。

有什么我可以用的吗?我实际上正在考虑自己读取显示的地图图块并获取像素颜色,但如果有更简单的方法,我将不胜感激。

maps google-maps terrain google-maps-api-3

2
推荐指数
1
解决办法
716
查看次数

使用List <>.包含不同类型的()

我有一个自定义类型的通用列表

List<MyType> list = new List<MyType>();
Run Code Online (Sandbox Code Playgroud)

我已经重写了MyType的.Equals,以便在比较字符串或MyType时它可以正常工作.我的问题是 - 如果List只包含MyType,有没有办法使用List.Contains(string)?

我意识到还有其他方法可以做到这一点(例如在那里创建一个MyType对象而不是字符串),但有没有办法做到这一点而不必扩展List?

c#

1
推荐指数
1
解决办法
1639
查看次数