Делаем резкий спрайт в 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, фон: визуализированный спрайт

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


person whatscool    schedule 18.01.2016    source источник


Ответы (1)


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

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

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

person Nicholas    schedule 22.01.2016
comment
Спасибо, сейчас попробую - person whatscool; 22.01.2016