如何在应用程序中使用像素图?

67樱桃

我有一个使用Sprite Kit的iOS应用程序,现在可以添加艺术作品了。艺术品是像素艺术品,并且本质上很小。我试图找到最好的方式来显示此,其中:

  1. 所有技术都具有相同的大小,这意味着一个图像像素与所有其他图像一样,恰好占据了现实世界像素的数量。

  2. 没有试图使纹理看起来更平滑的模糊处理,这通常在放大图像时发生。

我已经尝试解决第二个问题,如下所示:

self = [super init];
if(self){
    self.size=size;
    self.texture = [SKTexture textureWithImageNamed:@"ForestTree1.png"];
    self.texture.filteringMode = SKTextureFilteringNearest;

    [self.texture size];
}
return self; 

上面的代码在具有纹理的SKSpriteNode的初始化中。

这是我的原始图片(放大以方便参考):

问题是我的结果总是像这样:

太模糊了!!!!!

(后备箱的底部偏移不是这个问题的一部分。)我没有使用任何运动模糊或类似的东西。我不确定为什么无法正确显示。

编辑1:上面我没有提到拍摄截图时树木在不断地动画。当它们仍然静止时,它们看起来像这样:

上面的图像是两棵树重叠在一起,一棵树由于稍后要修复的错误而翻转。我的问题是现在如何防止动画发生时图像模糊?

编辑2:

我要添加树的多个实例,每个实例都加载相同的纹理。我知道这与动画无关,因为我更改了代码以仅添加一棵树并对其进行动画处理,并且完美地将其像素化。

67樱桃

我已经解决了这个问题...但是它确实是一个hack。我有一个SKScene,它是所有“树”(SKSpriteNodes的父节点该场景将为其自身添加多棵树。起初,我认为这是某种问题,因为如果我仅添加一棵树,它将正确显示图像。这个问题答案使我相信,我需要以编程方式在中创建SKTextureAtlas单例(纹理位于中SKTextureAtlas),并将其传递给树类,以从init方法中获取纹理。我在中创建了一个属性SKScene来保存纹理图集,以便每次创建新纹理时都可以将其传递给树类。我尝试使用textureNamed从纹理图集(在树类中)加载纹理方法。这仍然没有用。我转回使用SKTexture的textureWithImageNamed:方法加载纹理,并且该方法有效。另外,我更改了代码,以使树子类根本不会被发送给SKTextureAtlas单例,并且仍然可以工作。

在中,SKScene我使用以下方法获取纹理图集:

[SKTextureAtlas atlasNamed:@"Textures"]; //Textures is the atlas name.

并将返回值设置为上述SKTextureAtlas属性。我认为也许地图集只需要在代码中的某个时刻进行初始化,所以我尝试了一下:

SKTextureAtlas *myAtlas = [SKTextureAtlas atlasNamed:@"Textures"];

一行中仅包含以下内容:

[SKTextureAtlas atlasNamed:@"Textures"]

但都没有奏效。显然,我需要在树的父类中有一个属性,该属性SKTextureAtlas可以保存树使用的纹理,而无需任何引用SKTextureAtlas……这是小故障还是什么?它现在正在工作,但是感觉像是在被黑客入侵。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Shiny应用程序中使用ggplot创建反应式图

来自分类Dev

如何在Grails应用程序中使用API

来自分类Dev

如何在多线程应用程序中使用Hibernate?

来自分类Dev

如何在SailsJS应用程序中使用OrientDB

来自分类Dev

如何在WPF应用程序中使用MSHTML

来自分类Dev

如何在Xcode中使用测试(iOS应用程序)

来自分类Dev

如何在MVC应用程序中使用TypeScript

来自分类Dev

如何在iOS应用程序中使用SVG图像

来自分类Dev

如何在余烬应用程序中使用piwik?

来自分类Dev

如何在Rails应用程序模板中使用postgres?

来自分类Dev

如何在Sinatra应用程序中使用sidekiq监控?

来自分类Dev

如何在sailsjs应用程序中使用漂亮错误?

来自分类Dev

如何在WPF应用程序中使用Ninject

来自分类Dev

如何在离线应用程序中使用mysql?

来自分类Dev

如何在SailsJS应用程序中使用多个布局?

来自分类Dev

如何在wsgi应用程序中使用gzip编码?

来自分类Dev

如何在Express应用程序中使用DefinitetlyTyped定义

来自分类Dev

如何在OSGi应用程序中使用JACOB?

来自分类Dev

如何在C#应用程序中使用FluentValidation

来自分类Dev

如何在Ionic应用程序中使用Google Charts

来自分类Dev

如何在PHP应用程序中使用Angular 2?

来自分类Dev

如何在跨平台应用程序中使用QtWinExtras

来自分类Dev

如何在CatberryJS应用程序中使用jQuery?

来自分类Dev

如何在OSX应用程序中使用Core Bluetooth?

来自分类Dev

如何在MVC设计的应用程序中使用SQLAlchemy?

来自分类Dev

如何在Xamarin Android应用程序中使用动画?

来自分类Dev

如何在桌面应用程序中使用测量协议

来自分类Dev

如何在空白的Android应用程序中使用MVVMCross

来自分类Dev

如何在Android中使用多个“应用程序类”?

Related 相关文章

  1. 1

    如何在Shiny应用程序中使用ggplot创建反应式图

  2. 2

    如何在Grails应用程序中使用API

  3. 3

    如何在多线程应用程序中使用Hibernate?

  4. 4

    如何在SailsJS应用程序中使用OrientDB

  5. 5

    如何在WPF应用程序中使用MSHTML

  6. 6

    如何在Xcode中使用测试(iOS应用程序)

  7. 7

    如何在MVC应用程序中使用TypeScript

  8. 8

    如何在iOS应用程序中使用SVG图像

  9. 9

    如何在余烬应用程序中使用piwik?

  10. 10

    如何在Rails应用程序模板中使用postgres?

  11. 11

    如何在Sinatra应用程序中使用sidekiq监控?

  12. 12

    如何在sailsjs应用程序中使用漂亮错误?

  13. 13

    如何在WPF应用程序中使用Ninject

  14. 14

    如何在离线应用程序中使用mysql?

  15. 15

    如何在SailsJS应用程序中使用多个布局?

  16. 16

    如何在wsgi应用程序中使用gzip编码?

  17. 17

    如何在Express应用程序中使用DefinitetlyTyped定义

  18. 18

    如何在OSGi应用程序中使用JACOB?

  19. 19

    如何在C#应用程序中使用FluentValidation

  20. 20

    如何在Ionic应用程序中使用Google Charts

  21. 21

    如何在PHP应用程序中使用Angular 2?

  22. 22

    如何在跨平台应用程序中使用QtWinExtras

  23. 23

    如何在CatberryJS应用程序中使用jQuery?

  24. 24

    如何在OSX应用程序中使用Core Bluetooth?

  25. 25

    如何在MVC设计的应用程序中使用SQLAlchemy?

  26. 26

    如何在Xamarin Android应用程序中使用动画?

  27. 27

    如何在桌面应用程序中使用测量协议

  28. 28

    如何在空白的Android应用程序中使用MVVMCross

  29. 29

    如何在Android中使用多个“应用程序类”?

热门标签

归档