Так что я делаю игру с Haxe и Haxepunk. Хорошо. За исключением того, что когда я экспортирую в C ++, ничего не рендерится! Я разместил это ранее на досках Haxepunk, так что больше информации можно найти Вот. Вот выдержка из темы Haxepunk;
Я все еще могу скомпилировать его просто отлично, но на самом деле в игре ничего не отображается, кроме цвета фона, который я определил. Консоль все еще работает и рендерит нормально, хотя. Консоль HaxePunk говорит мне Atlases using BitmapData will not be managed
,
Я использую систему компонент-сущность Эша, и я не использую сущности Хэкс. Соответствующие объекты имеют Visible
компонент, прикрепленный к ним, выглядит следующим образом;
package game.component;
import com.haxepunk.Graphic;
import com.haxepunk.graphics.Image;
class Visible {
public var image(default, default) : Graphic;
public function new() {
this.image = Image.createRect(16, 16, 0xFF0000);
}
}
И это связанная система рендеринга;
package game.system;
import ash.core.Engine;
import ash.core.Entity;
import ash.core.System;
import ash.tools.ListIteratingSystem;
import com.haxepunk.HXP;
import Constants;
import game.component.Positionable;
import game.component.Visible;
import game.node.RenderNode;
class RenderingSystem extends ListIteratingSystem<RenderNode> {
public function new() {
super(RenderNode, this.updateNode);
}
private function updateNode(node:RenderNode, time:Float) : Void {
node.renderable.image.render(HXP.buffer, node.position.position, Constants.ORIGIN);
}
}
Какие-нибудь советы?
Если вы используете буферный рендеринг в C ++, вам нужно установить режим рендеринга внутри конструктора. Это потому, что конструктор Engine является единственным местом, где создается экранный буфер. К сожалению, документы API не дают четкого объяснения этому.
class Main extends Engine
{
public function new()
{
super(0, 0, 60, false, RenderMode.BUFFER);
}
}
Других решений пока нет …