Создание острого спрайта в cocos2d-js

Я пытаюсь использовать cocos2d-js для создания веб-игры на холсте, использующей пиксельную графику.

Я сделал холст и setDesignResolutionsize, чтобы быть размером области просмотра.

Я не могу сделать спрайт без сглаживания. Я пытался использовать

sprite.getTexture().setAliasTexParameters();

Хотя я могу использовать это неправильно.

var canvas = document.getElementById("gameCanvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

cc.game.onStart = function(){

    //load resources
    cc.view.setDesignResolutionSize(canvas.width, canvas.height, cc.ResolutionPolicy.SHOW_ALL);


    cc.LoaderScene.preload(gameResources, function () {
        cc.director.runScene(new MyScene());
    }, this);
};

cc.game.run("gameCanvas");

var MyScene = cc.Scene.extend({
   onEnter:function () {
      this._super();
      var gameLayer = new game();
      gameLayer.init();
      this.addChild(gameLayer);
      }
});

var backgroundLayer;

var game = cc.Layer.extend({
    init:function() {
        this._super();
        var sprite = cc.Sprite.create("assets/ui/title.png");
        sprite.getTexture().setAliasTexParameters();
        this.addChild(sprite,0);
        sprite.setPosition((window.innerWidth/2),(window.innerHeight/2));
        }
});

Вот результаты с png для сравнения:

передний план: изображение заголовка png, фон: визуализированный спрайт

Кто может помочь?

1 ответ

Я думаю, что проблема здесь: sprite.setPosition((window.innerWidth/2),(window.innerHeight/2));

По моему опыту с кокосами, если вы не используете координаты целых чисел (целых), спрайты будут размыты, потому что один пиксель в спрайте распределен по нескольким пикселям экрана. Попробуйте округлить позиции x и y после деления.

Примечание: дробная позиция в родительском элементе повлияет на все его дочерние элементы, поэтому вам, возможно, придется поискать иерархию, чтобы найти родительский элемент, который вызывает размытый спрайт

Другие вопросы по тегам