У меня есть холст с примером Pixi игра работает внутри приложения Ember (я использую https://github.com/Ferdev/ember-cli-pixijs для этого):Отправить событие из Pixi.js к компоненту Тлеющей
import PixiCanvas from 'ember-cli-pixijs/components/pixi-canvas';
import PairsGame from './pairsgame';
export default PixiCanvas.extend({
draw() {
const renderer = this.get('pixiRenderer');
var game = new PairsGame()
.init(renderer)
.preload()
.animate();
},
actions: {
log(arg) {
console.log(arg);
}
}
});
В примере игры я скопированный с: http://ipotaje.es/en/complete-html5-concentration-game-made-with-pixi-js-3/
Как вы можете видеть, мой компонент Pixi содержит только логику рисования/рендеринга, а не логику игры. Это сохраняется во внешнем классе, и я хочу вызвать действие log
. Файл с игрой выглядит примерно так:
import PIXI from 'pixi';
var PairsGame = function() {};
PairsGame.prototype.init = function (renderer)
{
this.renderer = renderer;
// create an empty container
this.gameContainer = new PIXI.Container();
const graphics = new PIXI.Graphics();
this.gameContainer.addChild(graphics);
// allow chain calling
return this;
};
PairsGame.prototype.preload = function()
{ // importing a texture atlas created with texturepacker
var tileAtlas = ["assets/images/images.json"];
// create a new loader
PIXI.loader.add(tileAtlas)
// use callback
.once('complete', this.onLoaded.bind(this))
//begin load
.load();
//allow chain calling
return this;
};
PairsGame.prototype.animate = function()
{
this.renderer.render(this.gameContainer);
requestAnimationFrame(this.animate.bind(this));
//allow chain calling
return this;
};
...
ET CETERA
I WOULD LIKE TO CALL THE log ACTION FROM THESE METHODS
...
Теперь я хотел бы послать «успех» или сообщение «отказ» на каждом повороте к моему компоненту Ember, чтобы я мог принять определенное действие (например, просто зарегистрируйте 'success'/'failure' для консоли). Каковы способы этого?
Я пытался смотреть на решение here и положить
Ember.Instrumentation.instrument("pixi.gameEvent", 'success');
в коде Pixi, но абонент, кажется, никогда ничего не получит.
Ах да, это работает конечно. Мне все еще нужно было сопоставить имя действия с командой, которую я отправляю с помощью 'sendAction' (см. Здесь: http://coryforsyth.com/2014/09/24/communicating-with-ember-js-components-using-sendaction/) , но это привело меня к правильному пути. –
Для его работы мне нужно было перенести действие «log» из компонента на маршрут. Не знаю, почему это так, и это меня раздражает, потому что действие кажется более подходящим для добавления в компонент. –
Это явления, 'sendAction', используемые для связи между компонентами и' send', используемые для связи между контроллером для маршрутизации. – kumkanillam