J'ai un élément HTML principal RPG défini comme suit. Je l'instancie dans le corps de mon fichier index.html.Éléments personnalisés ne détectant pas les enfants lorsqu'ils sont instanciés dans le modèle d'un autre élément personnalisé
<link rel="import" href="packages/polymer/polymer.html">
<link rel="import" href="gridlayout.html">
<link rel="import" href="gridtile.html">
<polymer-element name="rpg-main" attributes="">
<template>
<style>
grid-tile {
background: #FF00FF;
width: 50px;
height: 50px
}
:host {
position: absolute;
display: block;
width: 500px;
height: 500px;
}
</style>
<grid-layout rows = "2" cols = "2" spacing = "50px">
<grid-tile>
</grid-tile>
<grid-tile>
</grid-tile>
<grid-tile>
</grid-tile>
<grid-tile>
</grid-tile>
</grid-layout>
</template>
<script type="application/dart" src="rpgmain.dart"></script>
</polymer-element>
Comme on pouvait s'y attendre, j'ai aussi une grille mise en page et des éléments grille de tuiles définies. Dans le constructeur de la grille-mise en page, j'essaie de référencer ses enfants. Mais l'élément pense qu'il a 0 enfants quand il est instancié dans la classe RPG-main ci-dessus.
import 'package:polymer/polymer.dart';
import 'dart:html';
@CustomTag('grid-layout')
class GridLayout extends PolymerElement {
@published int rows;
@published int cols;
@published int spacing;
String _px = "px";
String _perc = "%";
GridLayout.created() : super.created() {
print("NUM CHILDREN " + this.children.length.toString());
/** for (int i = 0; i <= this.rows + this.cols - 2; i++) {
Element child = this.children[i];
this.children[i].style.margin = this._parseNum(spacing);
child.style.float = "right";
if (i % this.rows == this.rows) {
child.style.clear = "right";
}
}**/
}
num _parseString(String s) {
print(s.toString());
return num.parse(s.split(_px)[0]);
}
String _parseNum(num n) {
return n.toString() + _px;
}
}
*** Les impressions de code ci-dessus « ENFANTS NUM: 0 »
Il est seulement instancié dans mon élément rpg-principal, donc je suis surpris qu'il ne reconnaîtrait pas la grille-carreaux comme enfants. Serait-ce parce que l'élément grid-layout est instancié dans la balise template d'un élément personnalisé rpg-main? (Donc, peut-être que la disposition en grille ne considère pas que ses enfants sont dans le «dom léger»?) Ce serait une honte, mais si oui, quelle serait la solution de contournement?
C'est un peu vieux et JS au lieu de Dart, mais il pourrait être utile que vous travaillez sur ce point: https: // github.com/cletusw/rpg – CletusW
Hé, c'est plutôt cool. En général, comment avez-vous trouvé Polymer pour ce genre de chose? Figuré il pourrait se prêter convenablement aux jeux puisque c'est plus comme la programmation orientée objet que le html5 précédent. –
Jusqu'à présent, tout s'est bien passé. Je pense que des problèmes de performance se poseraient si j'essayais de faire évoluer la taille et la complexité d'un vrai jeu. – CletusW